001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * This resource provides eligibility and plan details from the processing of an CoverageEligibilityRequest resource.
052 */
053@ResourceDef(name="CoverageEligibilityResponse", profile="http://hl7.org/fhir/StructureDefinition/CoverageEligibilityResponse")
054public class CoverageEligibilityResponse extends DomainResource {
055
056    public enum EligibilityOutcome {
057        /**
058         * The Claim/Pre-authorization/Pre-determination has been received but processing has not begun.
059         */
060        QUEUED, 
061        /**
062         * The processing has completed without errors
063         */
064        COMPLETE, 
065        /**
066         * One or more errors have been detected in the Claim
067         */
068        ERROR, 
069        /**
070         * No errors have been detected in the Claim and some of the adjudication has been performed.
071         */
072        PARTIAL, 
073        /**
074         * added to help the parsers with the generic types
075         */
076        NULL;
077        public static EligibilityOutcome fromCode(String codeString) throws FHIRException {
078            if (codeString == null || "".equals(codeString))
079                return null;
080        if ("queued".equals(codeString))
081          return QUEUED;
082        if ("complete".equals(codeString))
083          return COMPLETE;
084        if ("error".equals(codeString))
085          return ERROR;
086        if ("partial".equals(codeString))
087          return PARTIAL;
088        if (Configuration.isAcceptInvalidEnums())
089          return null;
090        else
091          throw new FHIRException("Unknown EligibilityOutcome code '"+codeString+"'");
092        }
093        public String toCode() {
094          switch (this) {
095            case QUEUED: return "queued";
096            case COMPLETE: return "complete";
097            case ERROR: return "error";
098            case PARTIAL: return "partial";
099            case NULL: return null;
100            default: return "?";
101          }
102        }
103        public String getSystem() {
104          switch (this) {
105            case QUEUED: return "http://hl7.org/fhir/eligibility-outcome";
106            case COMPLETE: return "http://hl7.org/fhir/eligibility-outcome";
107            case ERROR: return "http://hl7.org/fhir/eligibility-outcome";
108            case PARTIAL: return "http://hl7.org/fhir/eligibility-outcome";
109            case NULL: return null;
110            default: return "?";
111          }
112        }
113        public String getDefinition() {
114          switch (this) {
115            case QUEUED: return "The Claim/Pre-authorization/Pre-determination has been received but processing has not begun.";
116            case COMPLETE: return "The processing has completed without errors";
117            case ERROR: return "One or more errors have been detected in the Claim";
118            case PARTIAL: return "No errors have been detected in the Claim and some of the adjudication has been performed.";
119            case NULL: return null;
120            default: return "?";
121          }
122        }
123        public String getDisplay() {
124          switch (this) {
125            case QUEUED: return "Queued";
126            case COMPLETE: return "Processing Complete";
127            case ERROR: return "Error";
128            case PARTIAL: return "Partial Processing";
129            case NULL: return null;
130            default: return "?";
131          }
132        }
133    }
134
135  public static class EligibilityOutcomeEnumFactory implements EnumFactory<EligibilityOutcome> {
136    public EligibilityOutcome fromCode(String codeString) throws IllegalArgumentException {
137      if (codeString == null || "".equals(codeString))
138            if (codeString == null || "".equals(codeString))
139                return null;
140        if ("queued".equals(codeString))
141          return EligibilityOutcome.QUEUED;
142        if ("complete".equals(codeString))
143          return EligibilityOutcome.COMPLETE;
144        if ("error".equals(codeString))
145          return EligibilityOutcome.ERROR;
146        if ("partial".equals(codeString))
147          return EligibilityOutcome.PARTIAL;
148        throw new IllegalArgumentException("Unknown EligibilityOutcome code '"+codeString+"'");
149        }
150        public Enumeration<EligibilityOutcome> fromType(PrimitiveType<?> code) throws FHIRException {
151          if (code == null)
152            return null;
153          if (code.isEmpty())
154            return new Enumeration<EligibilityOutcome>(this, EligibilityOutcome.NULL, code);
155          String codeString = ((PrimitiveType) code).asStringValue();
156          if (codeString == null || "".equals(codeString))
157            return new Enumeration<EligibilityOutcome>(this, EligibilityOutcome.NULL, code);
158        if ("queued".equals(codeString))
159          return new Enumeration<EligibilityOutcome>(this, EligibilityOutcome.QUEUED, code);
160        if ("complete".equals(codeString))
161          return new Enumeration<EligibilityOutcome>(this, EligibilityOutcome.COMPLETE, code);
162        if ("error".equals(codeString))
163          return new Enumeration<EligibilityOutcome>(this, EligibilityOutcome.ERROR, code);
164        if ("partial".equals(codeString))
165          return new Enumeration<EligibilityOutcome>(this, EligibilityOutcome.PARTIAL, code);
166        throw new FHIRException("Unknown EligibilityOutcome code '"+codeString+"'");
167        }
168    public String toCode(EligibilityOutcome code) {
169      if (code == EligibilityOutcome.QUEUED)
170        return "queued";
171      if (code == EligibilityOutcome.COMPLETE)
172        return "complete";
173      if (code == EligibilityOutcome.ERROR)
174        return "error";
175      if (code == EligibilityOutcome.PARTIAL)
176        return "partial";
177      return "?";
178      }
179    public String toSystem(EligibilityOutcome code) {
180      return code.getSystem();
181      }
182    }
183
184    public enum EligibilityResponsePurpose {
185        /**
186         * The prior authorization requirements for the listed, or discovered if specified, converages for the categories of service and/or specifed biling codes are requested.
187         */
188        AUTHREQUIREMENTS, 
189        /**
190         * The plan benefits and optionally benefits consumed  for the listed, or discovered if specified, converages are requested.
191         */
192        BENEFITS, 
193        /**
194         * The insurer is requested to report on any coverages which they are aware of in addition to any specifed.
195         */
196        DISCOVERY, 
197        /**
198         * A check that the specified coverages are in-force is requested.
199         */
200        VALIDATION, 
201        /**
202         * added to help the parsers with the generic types
203         */
204        NULL;
205        public static EligibilityResponsePurpose fromCode(String codeString) throws FHIRException {
206            if (codeString == null || "".equals(codeString))
207                return null;
208        if ("auth-requirements".equals(codeString))
209          return AUTHREQUIREMENTS;
210        if ("benefits".equals(codeString))
211          return BENEFITS;
212        if ("discovery".equals(codeString))
213          return DISCOVERY;
214        if ("validation".equals(codeString))
215          return VALIDATION;
216        if (Configuration.isAcceptInvalidEnums())
217          return null;
218        else
219          throw new FHIRException("Unknown EligibilityResponsePurpose code '"+codeString+"'");
220        }
221        public String toCode() {
222          switch (this) {
223            case AUTHREQUIREMENTS: return "auth-requirements";
224            case BENEFITS: return "benefits";
225            case DISCOVERY: return "discovery";
226            case VALIDATION: return "validation";
227            case NULL: return null;
228            default: return "?";
229          }
230        }
231        public String getSystem() {
232          switch (this) {
233            case AUTHREQUIREMENTS: return "http://hl7.org/fhir/eligibilityresponse-purpose";
234            case BENEFITS: return "http://hl7.org/fhir/eligibilityresponse-purpose";
235            case DISCOVERY: return "http://hl7.org/fhir/eligibilityresponse-purpose";
236            case VALIDATION: return "http://hl7.org/fhir/eligibilityresponse-purpose";
237            case NULL: return null;
238            default: return "?";
239          }
240        }
241        public String getDefinition() {
242          switch (this) {
243            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.";
244            case BENEFITS: return "The plan benefits and optionally benefits consumed  for the listed, or discovered if specified, converages are requested.";
245            case DISCOVERY: return "The insurer is requested to report on any coverages which they are aware of in addition to any specifed.";
246            case VALIDATION: return "A check that the specified coverages are in-force is requested.";
247            case NULL: return null;
248            default: return "?";
249          }
250        }
251        public String getDisplay() {
252          switch (this) {
253            case AUTHREQUIREMENTS: return "Coverage auth-requirements";
254            case BENEFITS: return "Coverage benefits";
255            case DISCOVERY: return "Coverage Discovery";
256            case VALIDATION: return "Coverage Validation";
257            case NULL: return null;
258            default: return "?";
259          }
260        }
261    }
262
263  public static class EligibilityResponsePurposeEnumFactory implements EnumFactory<EligibilityResponsePurpose> {
264    public EligibilityResponsePurpose fromCode(String codeString) throws IllegalArgumentException {
265      if (codeString == null || "".equals(codeString))
266            if (codeString == null || "".equals(codeString))
267                return null;
268        if ("auth-requirements".equals(codeString))
269          return EligibilityResponsePurpose.AUTHREQUIREMENTS;
270        if ("benefits".equals(codeString))
271          return EligibilityResponsePurpose.BENEFITS;
272        if ("discovery".equals(codeString))
273          return EligibilityResponsePurpose.DISCOVERY;
274        if ("validation".equals(codeString))
275          return EligibilityResponsePurpose.VALIDATION;
276        throw new IllegalArgumentException("Unknown EligibilityResponsePurpose code '"+codeString+"'");
277        }
278        public Enumeration<EligibilityResponsePurpose> fromType(PrimitiveType<?> code) throws FHIRException {
279          if (code == null)
280            return null;
281          if (code.isEmpty())
282            return new Enumeration<EligibilityResponsePurpose>(this, EligibilityResponsePurpose.NULL, code);
283          String codeString = ((PrimitiveType) code).asStringValue();
284          if (codeString == null || "".equals(codeString))
285            return new Enumeration<EligibilityResponsePurpose>(this, EligibilityResponsePurpose.NULL, code);
286        if ("auth-requirements".equals(codeString))
287          return new Enumeration<EligibilityResponsePurpose>(this, EligibilityResponsePurpose.AUTHREQUIREMENTS, code);
288        if ("benefits".equals(codeString))
289          return new Enumeration<EligibilityResponsePurpose>(this, EligibilityResponsePurpose.BENEFITS, code);
290        if ("discovery".equals(codeString))
291          return new Enumeration<EligibilityResponsePurpose>(this, EligibilityResponsePurpose.DISCOVERY, code);
292        if ("validation".equals(codeString))
293          return new Enumeration<EligibilityResponsePurpose>(this, EligibilityResponsePurpose.VALIDATION, code);
294        throw new FHIRException("Unknown EligibilityResponsePurpose code '"+codeString+"'");
295        }
296    public String toCode(EligibilityResponsePurpose code) {
297      if (code == EligibilityResponsePurpose.AUTHREQUIREMENTS)
298        return "auth-requirements";
299      if (code == EligibilityResponsePurpose.BENEFITS)
300        return "benefits";
301      if (code == EligibilityResponsePurpose.DISCOVERY)
302        return "discovery";
303      if (code == EligibilityResponsePurpose.VALIDATION)
304        return "validation";
305      return "?";
306      }
307    public String toSystem(EligibilityResponsePurpose code) {
308      return code.getSystem();
309      }
310    }
311
312    @Block()
313    public static class CoverageEligibilityResponseEventComponent extends BackboneElement implements IBaseBackboneElement {
314        /**
315         * A coded event such as when a service is expected or a card printed.
316         */
317        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
318        @Description(shortDefinition="Specific event", formalDefinition="A coded event such as when a service is expected or a card printed." )
319        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/datestype")
320        protected CodeableConcept type;
321
322        /**
323         * A date or period in the past or future indicating when the event occurred or is expectd to occur.
324         */
325        @Child(name = "when", type = {DateTimeType.class, Period.class}, order=2, min=1, max=1, modifier=false, summary=false)
326        @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." )
327        protected DataType when;
328
329        private static final long serialVersionUID = -634897375L;
330
331    /**
332     * Constructor
333     */
334      public CoverageEligibilityResponseEventComponent() {
335        super();
336      }
337
338    /**
339     * Constructor
340     */
341      public CoverageEligibilityResponseEventComponent(CodeableConcept type, DataType when) {
342        super();
343        this.setType(type);
344        this.setWhen(when);
345      }
346
347        /**
348         * @return {@link #type} (A coded event such as when a service is expected or a card printed.)
349         */
350        public CodeableConcept getType() { 
351          if (this.type == null)
352            if (Configuration.errorOnAutoCreate())
353              throw new Error("Attempt to auto-create CoverageEligibilityResponseEventComponent.type");
354            else if (Configuration.doAutoCreate())
355              this.type = new CodeableConcept(); // cc
356          return this.type;
357        }
358
359        public boolean hasType() { 
360          return this.type != null && !this.type.isEmpty();
361        }
362
363        /**
364         * @param value {@link #type} (A coded event such as when a service is expected or a card printed.)
365         */
366        public CoverageEligibilityResponseEventComponent setType(CodeableConcept value) { 
367          this.type = value;
368          return this;
369        }
370
371        /**
372         * @return {@link #when} (A date or period in the past or future indicating when the event occurred or is expectd to occur.)
373         */
374        public DataType getWhen() { 
375          return this.when;
376        }
377
378        /**
379         * @return {@link #when} (A date or period in the past or future indicating when the event occurred or is expectd to occur.)
380         */
381        public DateTimeType getWhenDateTimeType() throws FHIRException { 
382          if (this.when == null)
383            this.when = new DateTimeType();
384          if (!(this.when instanceof DateTimeType))
385            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.when.getClass().getName()+" was encountered");
386          return (DateTimeType) this.when;
387        }
388
389        public boolean hasWhenDateTimeType() { 
390          return this != null && this.when instanceof DateTimeType;
391        }
392
393        /**
394         * @return {@link #when} (A date or period in the past or future indicating when the event occurred or is expectd to occur.)
395         */
396        public Period getWhenPeriod() throws FHIRException { 
397          if (this.when == null)
398            this.when = new Period();
399          if (!(this.when instanceof Period))
400            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.when.getClass().getName()+" was encountered");
401          return (Period) this.when;
402        }
403
404        public boolean hasWhenPeriod() { 
405          return this != null && this.when instanceof Period;
406        }
407
408        public boolean hasWhen() { 
409          return this.when != null && !this.when.isEmpty();
410        }
411
412        /**
413         * @param value {@link #when} (A date or period in the past or future indicating when the event occurred or is expectd to occur.)
414         */
415        public CoverageEligibilityResponseEventComponent setWhen(DataType value) { 
416          if (value != null && !(value instanceof DateTimeType || value instanceof Period))
417            throw new FHIRException("Not the right type for CoverageEligibilityResponse.event.when[x]: "+value.fhirType());
418          this.when = value;
419          return this;
420        }
421
422        protected void listChildren(List<Property> children) {
423          super.listChildren(children);
424          children.add(new Property("type", "CodeableConcept", "A coded event such as when a service is expected or a card printed.", 0, 1, type));
425          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));
426        }
427
428        @Override
429        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
430          switch (_hash) {
431          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);
432          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);
433          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);
434          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);
435          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);
436          default: return super.getNamedProperty(_hash, _name, _checkValid);
437          }
438
439        }
440
441      @Override
442      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
443        switch (hash) {
444        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
445        case 3648314: /*when*/ return this.when == null ? new Base[0] : new Base[] {this.when}; // DataType
446        default: return super.getProperty(hash, name, checkValid);
447        }
448
449      }
450
451      @Override
452      public Base setProperty(int hash, String name, Base value) throws FHIRException {
453        switch (hash) {
454        case 3575610: // type
455          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
456          return value;
457        case 3648314: // when
458          this.when = TypeConvertor.castToType(value); // DataType
459          return value;
460        default: return super.setProperty(hash, name, value);
461        }
462
463      }
464
465      @Override
466      public Base setProperty(String name, Base value) throws FHIRException {
467        if (name.equals("type")) {
468          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
469        } else if (name.equals("when[x]")) {
470          this.when = TypeConvertor.castToType(value); // DataType
471        } else
472          return super.setProperty(name, value);
473        return value;
474      }
475
476  @Override
477  public void removeChild(String name, Base value) throws FHIRException {
478        if (name.equals("type")) {
479          this.type = null;
480        } else if (name.equals("when[x]")) {
481          this.when = null;
482        } else
483          super.removeChild(name, value);
484        
485      }
486
487      @Override
488      public Base makeProperty(int hash, String name) throws FHIRException {
489        switch (hash) {
490        case 3575610:  return getType();
491        case 1312831238:  return getWhen();
492        case 3648314:  return getWhen();
493        default: return super.makeProperty(hash, name);
494        }
495
496      }
497
498      @Override
499      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
500        switch (hash) {
501        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
502        case 3648314: /*when*/ return new String[] {"dateTime", "Period"};
503        default: return super.getTypesForProperty(hash, name);
504        }
505
506      }
507
508      @Override
509      public Base addChild(String name) throws FHIRException {
510        if (name.equals("type")) {
511          this.type = new CodeableConcept();
512          return this.type;
513        }
514        else if (name.equals("whenDateTime")) {
515          this.when = new DateTimeType();
516          return this.when;
517        }
518        else if (name.equals("whenPeriod")) {
519          this.when = new Period();
520          return this.when;
521        }
522        else
523          return super.addChild(name);
524      }
525
526      public CoverageEligibilityResponseEventComponent copy() {
527        CoverageEligibilityResponseEventComponent dst = new CoverageEligibilityResponseEventComponent();
528        copyValues(dst);
529        return dst;
530      }
531
532      public void copyValues(CoverageEligibilityResponseEventComponent dst) {
533        super.copyValues(dst);
534        dst.type = type == null ? null : type.copy();
535        dst.when = when == null ? null : when.copy();
536      }
537
538      @Override
539      public boolean equalsDeep(Base other_) {
540        if (!super.equalsDeep(other_))
541          return false;
542        if (!(other_ instanceof CoverageEligibilityResponseEventComponent))
543          return false;
544        CoverageEligibilityResponseEventComponent o = (CoverageEligibilityResponseEventComponent) other_;
545        return compareDeep(type, o.type, true) && compareDeep(when, o.when, true);
546      }
547
548      @Override
549      public boolean equalsShallow(Base other_) {
550        if (!super.equalsShallow(other_))
551          return false;
552        if (!(other_ instanceof CoverageEligibilityResponseEventComponent))
553          return false;
554        CoverageEligibilityResponseEventComponent o = (CoverageEligibilityResponseEventComponent) other_;
555        return true;
556      }
557
558      public boolean isEmpty() {
559        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, when);
560      }
561
562  public String fhirType() {
563    return "CoverageEligibilityResponse.event";
564
565  }
566
567  }
568
569    @Block()
570    public static class InsuranceComponent extends BackboneElement implements IBaseBackboneElement {
571        /**
572         * 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.
573         */
574        @Child(name = "coverage", type = {Coverage.class}, order=1, min=1, max=1, modifier=false, summary=true)
575        @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." )
576        protected Reference coverage;
577
578        /**
579         * Flag indicating if the coverage provided is inforce currently if no service date(s) specified or for the whole duration of the service dates.
580         */
581        @Child(name = "inforce", type = {BooleanType.class}, order=2, min=0, max=1, modifier=false, summary=false)
582        @Description(shortDefinition="Coverage inforce indicator", formalDefinition="Flag indicating if the coverage provided is inforce currently if no service date(s) specified or for the whole duration of the service dates." )
583        protected BooleanType inforce;
584
585        /**
586         * The term of the benefits documented in this response.
587         */
588        @Child(name = "benefitPeriod", type = {Period.class}, order=3, min=0, max=1, modifier=false, summary=false)
589        @Description(shortDefinition="When the benefits are applicable", formalDefinition="The term of the benefits documented in this response." )
590        protected Period benefitPeriod;
591
592        /**
593         * Benefits and optionally current balances, and authorization details by category or service.
594         */
595        @Child(name = "item", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
596        @Description(shortDefinition="Benefits and authorization details", formalDefinition="Benefits and optionally current balances, and authorization details by category or service." )
597        protected List<ItemsComponent> item;
598
599        private static final long serialVersionUID = 1473928476L;
600
601    /**
602     * Constructor
603     */
604      public InsuranceComponent() {
605        super();
606      }
607
608    /**
609     * Constructor
610     */
611      public InsuranceComponent(Reference coverage) {
612        super();
613        this.setCoverage(coverage);
614      }
615
616        /**
617         * @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.)
618         */
619        public Reference getCoverage() { 
620          if (this.coverage == null)
621            if (Configuration.errorOnAutoCreate())
622              throw new Error("Attempt to auto-create InsuranceComponent.coverage");
623            else if (Configuration.doAutoCreate())
624              this.coverage = new Reference(); // cc
625          return this.coverage;
626        }
627
628        public boolean hasCoverage() { 
629          return this.coverage != null && !this.coverage.isEmpty();
630        }
631
632        /**
633         * @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.)
634         */
635        public InsuranceComponent setCoverage(Reference value) { 
636          this.coverage = value;
637          return this;
638        }
639
640        /**
641         * @return {@link #inforce} (Flag indicating if the coverage provided is inforce currently if no service date(s) specified or for the whole duration of the service dates.). This is the underlying object with id, value and extensions. The accessor "getInforce" gives direct access to the value
642         */
643        public BooleanType getInforceElement() { 
644          if (this.inforce == null)
645            if (Configuration.errorOnAutoCreate())
646              throw new Error("Attempt to auto-create InsuranceComponent.inforce");
647            else if (Configuration.doAutoCreate())
648              this.inforce = new BooleanType(); // bb
649          return this.inforce;
650        }
651
652        public boolean hasInforceElement() { 
653          return this.inforce != null && !this.inforce.isEmpty();
654        }
655
656        public boolean hasInforce() { 
657          return this.inforce != null && !this.inforce.isEmpty();
658        }
659
660        /**
661         * @param value {@link #inforce} (Flag indicating if the coverage provided is inforce currently if no service date(s) specified or for the whole duration of the service dates.). This is the underlying object with id, value and extensions. The accessor "getInforce" gives direct access to the value
662         */
663        public InsuranceComponent setInforceElement(BooleanType value) { 
664          this.inforce = value;
665          return this;
666        }
667
668        /**
669         * @return Flag indicating if the coverage provided is inforce currently if no service date(s) specified or for the whole duration of the service dates.
670         */
671        public boolean getInforce() { 
672          return this.inforce == null || this.inforce.isEmpty() ? false : this.inforce.getValue();
673        }
674
675        /**
676         * @param value Flag indicating if the coverage provided is inforce currently if no service date(s) specified or for the whole duration of the service dates.
677         */
678        public InsuranceComponent setInforce(boolean value) { 
679            if (this.inforce == null)
680              this.inforce = new BooleanType();
681            this.inforce.setValue(value);
682          return this;
683        }
684
685        /**
686         * @return {@link #benefitPeriod} (The term of the benefits documented in this response.)
687         */
688        public Period getBenefitPeriod() { 
689          if (this.benefitPeriod == null)
690            if (Configuration.errorOnAutoCreate())
691              throw new Error("Attempt to auto-create InsuranceComponent.benefitPeriod");
692            else if (Configuration.doAutoCreate())
693              this.benefitPeriod = new Period(); // cc
694          return this.benefitPeriod;
695        }
696
697        public boolean hasBenefitPeriod() { 
698          return this.benefitPeriod != null && !this.benefitPeriod.isEmpty();
699        }
700
701        /**
702         * @param value {@link #benefitPeriod} (The term of the benefits documented in this response.)
703         */
704        public InsuranceComponent setBenefitPeriod(Period value) { 
705          this.benefitPeriod = value;
706          return this;
707        }
708
709        /**
710         * @return {@link #item} (Benefits and optionally current balances, and authorization details by category or service.)
711         */
712        public List<ItemsComponent> getItem() { 
713          if (this.item == null)
714            this.item = new ArrayList<ItemsComponent>();
715          return this.item;
716        }
717
718        /**
719         * @return Returns a reference to <code>this</code> for easy method chaining
720         */
721        public InsuranceComponent setItem(List<ItemsComponent> theItem) { 
722          this.item = theItem;
723          return this;
724        }
725
726        public boolean hasItem() { 
727          if (this.item == null)
728            return false;
729          for (ItemsComponent item : this.item)
730            if (!item.isEmpty())
731              return true;
732          return false;
733        }
734
735        public ItemsComponent addItem() { //3
736          ItemsComponent t = new ItemsComponent();
737          if (this.item == null)
738            this.item = new ArrayList<ItemsComponent>();
739          this.item.add(t);
740          return t;
741        }
742
743        public InsuranceComponent addItem(ItemsComponent t) { //3
744          if (t == null)
745            return this;
746          if (this.item == null)
747            this.item = new ArrayList<ItemsComponent>();
748          this.item.add(t);
749          return this;
750        }
751
752        /**
753         * @return The first repetition of repeating field {@link #item}, creating it if it does not already exist {3}
754         */
755        public ItemsComponent getItemFirstRep() { 
756          if (getItem().isEmpty()) {
757            addItem();
758          }
759          return getItem().get(0);
760        }
761
762        protected void listChildren(List<Property> children) {
763          super.listChildren(children);
764          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));
765          children.add(new Property("inforce", "boolean", "Flag indicating if the coverage provided is inforce currently if no service date(s) specified or for the whole duration of the service dates.", 0, 1, inforce));
766          children.add(new Property("benefitPeriod", "Period", "The term of the benefits documented in this response.", 0, 1, benefitPeriod));
767          children.add(new Property("item", "", "Benefits and optionally current balances, and authorization details by category or service.", 0, java.lang.Integer.MAX_VALUE, item));
768        }
769
770        @Override
771        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
772          switch (_hash) {
773          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);
774          case 1945431270: /*inforce*/  return new Property("inforce", "boolean", "Flag indicating if the coverage provided is inforce currently if no service date(s) specified or for the whole duration of the service dates.", 0, 1, inforce);
775          case -407369416: /*benefitPeriod*/  return new Property("benefitPeriod", "Period", "The term of the benefits documented in this response.", 0, 1, benefitPeriod);
776          case 3242771: /*item*/  return new Property("item", "", "Benefits and optionally current balances, and authorization details by category or service.", 0, java.lang.Integer.MAX_VALUE, item);
777          default: return super.getNamedProperty(_hash, _name, _checkValid);
778          }
779
780        }
781
782      @Override
783      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
784        switch (hash) {
785        case -351767064: /*coverage*/ return this.coverage == null ? new Base[0] : new Base[] {this.coverage}; // Reference
786        case 1945431270: /*inforce*/ return this.inforce == null ? new Base[0] : new Base[] {this.inforce}; // BooleanType
787        case -407369416: /*benefitPeriod*/ return this.benefitPeriod == null ? new Base[0] : new Base[] {this.benefitPeriod}; // Period
788        case 3242771: /*item*/ return this.item == null ? new Base[0] : this.item.toArray(new Base[this.item.size()]); // ItemsComponent
789        default: return super.getProperty(hash, name, checkValid);
790        }
791
792      }
793
794      @Override
795      public Base setProperty(int hash, String name, Base value) throws FHIRException {
796        switch (hash) {
797        case -351767064: // coverage
798          this.coverage = TypeConvertor.castToReference(value); // Reference
799          return value;
800        case 1945431270: // inforce
801          this.inforce = TypeConvertor.castToBoolean(value); // BooleanType
802          return value;
803        case -407369416: // benefitPeriod
804          this.benefitPeriod = TypeConvertor.castToPeriod(value); // Period
805          return value;
806        case 3242771: // item
807          this.getItem().add((ItemsComponent) value); // ItemsComponent
808          return value;
809        default: return super.setProperty(hash, name, value);
810        }
811
812      }
813
814      @Override
815      public Base setProperty(String name, Base value) throws FHIRException {
816        if (name.equals("coverage")) {
817          this.coverage = TypeConvertor.castToReference(value); // Reference
818        } else if (name.equals("inforce")) {
819          this.inforce = TypeConvertor.castToBoolean(value); // BooleanType
820        } else if (name.equals("benefitPeriod")) {
821          this.benefitPeriod = TypeConvertor.castToPeriod(value); // Period
822        } else if (name.equals("item")) {
823          this.getItem().add((ItemsComponent) value);
824        } else
825          return super.setProperty(name, value);
826        return value;
827      }
828
829  @Override
830  public void removeChild(String name, Base value) throws FHIRException {
831        if (name.equals("coverage")) {
832          this.coverage = null;
833        } else if (name.equals("inforce")) {
834          this.inforce = null;
835        } else if (name.equals("benefitPeriod")) {
836          this.benefitPeriod = null;
837        } else if (name.equals("item")) {
838          this.getItem().remove((ItemsComponent) value);
839        } else
840          super.removeChild(name, value);
841        
842      }
843
844      @Override
845      public Base makeProperty(int hash, String name) throws FHIRException {
846        switch (hash) {
847        case -351767064:  return getCoverage();
848        case 1945431270:  return getInforceElement();
849        case -407369416:  return getBenefitPeriod();
850        case 3242771:  return addItem(); 
851        default: return super.makeProperty(hash, name);
852        }
853
854      }
855
856      @Override
857      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
858        switch (hash) {
859        case -351767064: /*coverage*/ return new String[] {"Reference"};
860        case 1945431270: /*inforce*/ return new String[] {"boolean"};
861        case -407369416: /*benefitPeriod*/ return new String[] {"Period"};
862        case 3242771: /*item*/ return new String[] {};
863        default: return super.getTypesForProperty(hash, name);
864        }
865
866      }
867
868      @Override
869      public Base addChild(String name) throws FHIRException {
870        if (name.equals("coverage")) {
871          this.coverage = new Reference();
872          return this.coverage;
873        }
874        else if (name.equals("inforce")) {
875          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityResponse.insurance.inforce");
876        }
877        else if (name.equals("benefitPeriod")) {
878          this.benefitPeriod = new Period();
879          return this.benefitPeriod;
880        }
881        else if (name.equals("item")) {
882          return addItem();
883        }
884        else
885          return super.addChild(name);
886      }
887
888      public InsuranceComponent copy() {
889        InsuranceComponent dst = new InsuranceComponent();
890        copyValues(dst);
891        return dst;
892      }
893
894      public void copyValues(InsuranceComponent dst) {
895        super.copyValues(dst);
896        dst.coverage = coverage == null ? null : coverage.copy();
897        dst.inforce = inforce == null ? null : inforce.copy();
898        dst.benefitPeriod = benefitPeriod == null ? null : benefitPeriod.copy();
899        if (item != null) {
900          dst.item = new ArrayList<ItemsComponent>();
901          for (ItemsComponent i : item)
902            dst.item.add(i.copy());
903        };
904      }
905
906      @Override
907      public boolean equalsDeep(Base other_) {
908        if (!super.equalsDeep(other_))
909          return false;
910        if (!(other_ instanceof InsuranceComponent))
911          return false;
912        InsuranceComponent o = (InsuranceComponent) other_;
913        return compareDeep(coverage, o.coverage, true) && compareDeep(inforce, o.inforce, true) && compareDeep(benefitPeriod, o.benefitPeriod, true)
914           && compareDeep(item, o.item, true);
915      }
916
917      @Override
918      public boolean equalsShallow(Base other_) {
919        if (!super.equalsShallow(other_))
920          return false;
921        if (!(other_ instanceof InsuranceComponent))
922          return false;
923        InsuranceComponent o = (InsuranceComponent) other_;
924        return compareValues(inforce, o.inforce, true);
925      }
926
927      public boolean isEmpty() {
928        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(coverage, inforce, benefitPeriod
929          , item);
930      }
931
932  public String fhirType() {
933    return "CoverageEligibilityResponse.insurance";
934
935  }
936
937  }
938
939    @Block()
940    public static class ItemsComponent extends BackboneElement implements IBaseBackboneElement {
941        /**
942         * Code to identify the general type of benefits under which products and services are provided.
943         */
944        @Child(name = "category", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
945        @Description(shortDefinition="Benefit classification", formalDefinition="Code to identify the general type of benefits under which products and services are provided." )
946        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/ex-benefitcategory")
947        protected CodeableConcept category;
948
949        /**
950         * This contains the product, service, drug or other billing code for the item.
951         */
952        @Child(name = "productOrService", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
953        @Description(shortDefinition="Billing, service, product, or drug code", formalDefinition="This contains the product, service, drug or other billing code for the item." )
954        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/service-uscls")
955        protected CodeableConcept productOrService;
956
957        /**
958         * Item typification or modifiers codes to convey additional context for the product or service.
959         */
960        @Child(name = "modifier", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
961        @Description(shortDefinition="Product or service billing modifiers", formalDefinition="Item typification or modifiers codes to convey additional context for the product or service." )
962        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/claim-modifiers")
963        protected List<CodeableConcept> modifier;
964
965        /**
966         * The practitioner who is eligible for the provision of the product or service.
967         */
968        @Child(name = "provider", type = {Practitioner.class, PractitionerRole.class}, order=4, min=0, max=1, modifier=false, summary=false)
969        @Description(shortDefinition="Performing practitioner", formalDefinition="The practitioner who is eligible for the provision of the product or service." )
970        protected Reference provider;
971
972        /**
973         * True if the indicated class of service is excluded from the plan, missing or False indicates the product or service is included in the coverage.
974         */
975        @Child(name = "excluded", type = {BooleanType.class}, order=5, min=0, max=1, modifier=false, summary=false)
976        @Description(shortDefinition="Excluded from the plan", formalDefinition="True if the indicated class of service is excluded from the plan, missing or False indicates the product or service is included in the coverage." )
977        protected BooleanType excluded;
978
979        /**
980         * A short name or tag for the benefit.
981         */
982        @Child(name = "name", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
983        @Description(shortDefinition="Short name for the benefit", formalDefinition="A short name or tag for the benefit." )
984        protected StringType name;
985
986        /**
987         * A richer description of the benefit or services covered.
988         */
989        @Child(name = "description", type = {StringType.class}, order=7, min=0, max=1, modifier=false, summary=false)
990        @Description(shortDefinition="Description of the benefit or services covered", formalDefinition="A richer description of the benefit or services covered." )
991        protected StringType description;
992
993        /**
994         * Is a flag to indicate whether the benefits refer to in-network providers or out-of-network providers.
995         */
996        @Child(name = "network", type = {CodeableConcept.class}, order=8, min=0, max=1, modifier=false, summary=false)
997        @Description(shortDefinition="In or out of network", formalDefinition="Is a flag to indicate whether the benefits refer to in-network providers or out-of-network providers." )
998        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/benefit-network")
999        protected CodeableConcept network;
1000
1001        /**
1002         * Indicates if the benefits apply to an individual or to the family.
1003         */
1004        @Child(name = "unit", type = {CodeableConcept.class}, order=9, min=0, max=1, modifier=false, summary=false)
1005        @Description(shortDefinition="Individual or family", formalDefinition="Indicates if the benefits apply to an individual or to the family." )
1006        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/benefit-unit")
1007        protected CodeableConcept unit;
1008
1009        /**
1010         * The term or period of the values such as 'maximum lifetime benefit' or 'maximum annual visits'.
1011         */
1012        @Child(name = "term", type = {CodeableConcept.class}, order=10, min=0, max=1, modifier=false, summary=false)
1013        @Description(shortDefinition="Annual or lifetime", formalDefinition="The term or period of the values such as 'maximum lifetime benefit' or 'maximum annual visits'." )
1014        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/benefit-term")
1015        protected CodeableConcept term;
1016
1017        /**
1018         * Benefits used to date.
1019         */
1020        @Child(name = "benefit", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1021        @Description(shortDefinition="Benefit Summary", formalDefinition="Benefits used to date." )
1022        protected List<BenefitComponent> benefit;
1023
1024        /**
1025         * A boolean flag indicating whether a preauthorization is required prior to actual service delivery.
1026         */
1027        @Child(name = "authorizationRequired", type = {BooleanType.class}, order=12, min=0, max=1, modifier=false, summary=false)
1028        @Description(shortDefinition="Authorization required flag", formalDefinition="A boolean flag indicating whether a preauthorization is required prior to actual service delivery." )
1029        protected BooleanType authorizationRequired;
1030
1031        /**
1032         * Codes or comments regarding information or actions associated with the preauthorization.
1033         */
1034        @Child(name = "authorizationSupporting", type = {CodeableConcept.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1035        @Description(shortDefinition="Type of required supporting materials", formalDefinition="Codes or comments regarding information or actions associated with the preauthorization." )
1036        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/coverageeligibilityresponse-ex-auth-support")
1037        protected List<CodeableConcept> authorizationSupporting;
1038
1039        /**
1040         * A web location for obtaining requirements or descriptive information regarding the preauthorization.
1041         */
1042        @Child(name = "authorizationUrl", type = {UriType.class}, order=14, min=0, max=1, modifier=false, summary=false)
1043        @Description(shortDefinition="Preauthorization requirements endpoint", formalDefinition="A web location for obtaining requirements or descriptive information regarding the preauthorization." )
1044        protected UriType authorizationUrl;
1045
1046        private static final long serialVersionUID = 1706159945L;
1047
1048    /**
1049     * Constructor
1050     */
1051      public ItemsComponent() {
1052        super();
1053      }
1054
1055        /**
1056         * @return {@link #category} (Code to identify the general type of benefits under which products and services are provided.)
1057         */
1058        public CodeableConcept getCategory() { 
1059          if (this.category == null)
1060            if (Configuration.errorOnAutoCreate())
1061              throw new Error("Attempt to auto-create ItemsComponent.category");
1062            else if (Configuration.doAutoCreate())
1063              this.category = new CodeableConcept(); // cc
1064          return this.category;
1065        }
1066
1067        public boolean hasCategory() { 
1068          return this.category != null && !this.category.isEmpty();
1069        }
1070
1071        /**
1072         * @param value {@link #category} (Code to identify the general type of benefits under which products and services are provided.)
1073         */
1074        public ItemsComponent setCategory(CodeableConcept value) { 
1075          this.category = value;
1076          return this;
1077        }
1078
1079        /**
1080         * @return {@link #productOrService} (This contains the product, service, drug or other billing code for the item.)
1081         */
1082        public CodeableConcept getProductOrService() { 
1083          if (this.productOrService == null)
1084            if (Configuration.errorOnAutoCreate())
1085              throw new Error("Attempt to auto-create ItemsComponent.productOrService");
1086            else if (Configuration.doAutoCreate())
1087              this.productOrService = new CodeableConcept(); // cc
1088          return this.productOrService;
1089        }
1090
1091        public boolean hasProductOrService() { 
1092          return this.productOrService != null && !this.productOrService.isEmpty();
1093        }
1094
1095        /**
1096         * @param value {@link #productOrService} (This contains the product, service, drug or other billing code for the item.)
1097         */
1098        public ItemsComponent setProductOrService(CodeableConcept value) { 
1099          this.productOrService = value;
1100          return this;
1101        }
1102
1103        /**
1104         * @return {@link #modifier} (Item typification or modifiers codes to convey additional context for the product or service.)
1105         */
1106        public List<CodeableConcept> getModifier() { 
1107          if (this.modifier == null)
1108            this.modifier = new ArrayList<CodeableConcept>();
1109          return this.modifier;
1110        }
1111
1112        /**
1113         * @return Returns a reference to <code>this</code> for easy method chaining
1114         */
1115        public ItemsComponent setModifier(List<CodeableConcept> theModifier) { 
1116          this.modifier = theModifier;
1117          return this;
1118        }
1119
1120        public boolean hasModifier() { 
1121          if (this.modifier == null)
1122            return false;
1123          for (CodeableConcept item : this.modifier)
1124            if (!item.isEmpty())
1125              return true;
1126          return false;
1127        }
1128
1129        public CodeableConcept addModifier() { //3
1130          CodeableConcept t = new CodeableConcept();
1131          if (this.modifier == null)
1132            this.modifier = new ArrayList<CodeableConcept>();
1133          this.modifier.add(t);
1134          return t;
1135        }
1136
1137        public ItemsComponent addModifier(CodeableConcept t) { //3
1138          if (t == null)
1139            return this;
1140          if (this.modifier == null)
1141            this.modifier = new ArrayList<CodeableConcept>();
1142          this.modifier.add(t);
1143          return this;
1144        }
1145
1146        /**
1147         * @return The first repetition of repeating field {@link #modifier}, creating it if it does not already exist {3}
1148         */
1149        public CodeableConcept getModifierFirstRep() { 
1150          if (getModifier().isEmpty()) {
1151            addModifier();
1152          }
1153          return getModifier().get(0);
1154        }
1155
1156        /**
1157         * @return {@link #provider} (The practitioner who is eligible for the provision of the product or service.)
1158         */
1159        public Reference getProvider() { 
1160          if (this.provider == null)
1161            if (Configuration.errorOnAutoCreate())
1162              throw new Error("Attempt to auto-create ItemsComponent.provider");
1163            else if (Configuration.doAutoCreate())
1164              this.provider = new Reference(); // cc
1165          return this.provider;
1166        }
1167
1168        public boolean hasProvider() { 
1169          return this.provider != null && !this.provider.isEmpty();
1170        }
1171
1172        /**
1173         * @param value {@link #provider} (The practitioner who is eligible for the provision of the product or service.)
1174         */
1175        public ItemsComponent setProvider(Reference value) { 
1176          this.provider = value;
1177          return this;
1178        }
1179
1180        /**
1181         * @return {@link #excluded} (True if the indicated class of service is excluded from the plan, missing or False indicates the product or service is included in the coverage.). This is the underlying object with id, value and extensions. The accessor "getExcluded" gives direct access to the value
1182         */
1183        public BooleanType getExcludedElement() { 
1184          if (this.excluded == null)
1185            if (Configuration.errorOnAutoCreate())
1186              throw new Error("Attempt to auto-create ItemsComponent.excluded");
1187            else if (Configuration.doAutoCreate())
1188              this.excluded = new BooleanType(); // bb
1189          return this.excluded;
1190        }
1191
1192        public boolean hasExcludedElement() { 
1193          return this.excluded != null && !this.excluded.isEmpty();
1194        }
1195
1196        public boolean hasExcluded() { 
1197          return this.excluded != null && !this.excluded.isEmpty();
1198        }
1199
1200        /**
1201         * @param value {@link #excluded} (True if the indicated class of service is excluded from the plan, missing or False indicates the product or service is included in the coverage.). This is the underlying object with id, value and extensions. The accessor "getExcluded" gives direct access to the value
1202         */
1203        public ItemsComponent setExcludedElement(BooleanType value) { 
1204          this.excluded = value;
1205          return this;
1206        }
1207
1208        /**
1209         * @return True if the indicated class of service is excluded from the plan, missing or False indicates the product or service is included in the coverage.
1210         */
1211        public boolean getExcluded() { 
1212          return this.excluded == null || this.excluded.isEmpty() ? false : this.excluded.getValue();
1213        }
1214
1215        /**
1216         * @param value True if the indicated class of service is excluded from the plan, missing or False indicates the product or service is included in the coverage.
1217         */
1218        public ItemsComponent setExcluded(boolean value) { 
1219            if (this.excluded == null)
1220              this.excluded = new BooleanType();
1221            this.excluded.setValue(value);
1222          return this;
1223        }
1224
1225        /**
1226         * @return {@link #name} (A short name or tag for the benefit.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
1227         */
1228        public StringType getNameElement() { 
1229          if (this.name == null)
1230            if (Configuration.errorOnAutoCreate())
1231              throw new Error("Attempt to auto-create ItemsComponent.name");
1232            else if (Configuration.doAutoCreate())
1233              this.name = new StringType(); // bb
1234          return this.name;
1235        }
1236
1237        public boolean hasNameElement() { 
1238          return this.name != null && !this.name.isEmpty();
1239        }
1240
1241        public boolean hasName() { 
1242          return this.name != null && !this.name.isEmpty();
1243        }
1244
1245        /**
1246         * @param value {@link #name} (A short name or tag for the benefit.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
1247         */
1248        public ItemsComponent setNameElement(StringType value) { 
1249          this.name = value;
1250          return this;
1251        }
1252
1253        /**
1254         * @return A short name or tag for the benefit.
1255         */
1256        public String getName() { 
1257          return this.name == null ? null : this.name.getValue();
1258        }
1259
1260        /**
1261         * @param value A short name or tag for the benefit.
1262         */
1263        public ItemsComponent setName(String value) { 
1264          if (Utilities.noString(value))
1265            this.name = null;
1266          else {
1267            if (this.name == null)
1268              this.name = new StringType();
1269            this.name.setValue(value);
1270          }
1271          return this;
1272        }
1273
1274        /**
1275         * @return {@link #description} (A richer description of the benefit or services covered.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1276         */
1277        public StringType getDescriptionElement() { 
1278          if (this.description == null)
1279            if (Configuration.errorOnAutoCreate())
1280              throw new Error("Attempt to auto-create ItemsComponent.description");
1281            else if (Configuration.doAutoCreate())
1282              this.description = new StringType(); // bb
1283          return this.description;
1284        }
1285
1286        public boolean hasDescriptionElement() { 
1287          return this.description != null && !this.description.isEmpty();
1288        }
1289
1290        public boolean hasDescription() { 
1291          return this.description != null && !this.description.isEmpty();
1292        }
1293
1294        /**
1295         * @param value {@link #description} (A richer description of the benefit or services covered.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1296         */
1297        public ItemsComponent setDescriptionElement(StringType value) { 
1298          this.description = value;
1299          return this;
1300        }
1301
1302        /**
1303         * @return A richer description of the benefit or services covered.
1304         */
1305        public String getDescription() { 
1306          return this.description == null ? null : this.description.getValue();
1307        }
1308
1309        /**
1310         * @param value A richer description of the benefit or services covered.
1311         */
1312        public ItemsComponent setDescription(String value) { 
1313          if (Utilities.noString(value))
1314            this.description = null;
1315          else {
1316            if (this.description == null)
1317              this.description = new StringType();
1318            this.description.setValue(value);
1319          }
1320          return this;
1321        }
1322
1323        /**
1324         * @return {@link #network} (Is a flag to indicate whether the benefits refer to in-network providers or out-of-network providers.)
1325         */
1326        public CodeableConcept getNetwork() { 
1327          if (this.network == null)
1328            if (Configuration.errorOnAutoCreate())
1329              throw new Error("Attempt to auto-create ItemsComponent.network");
1330            else if (Configuration.doAutoCreate())
1331              this.network = new CodeableConcept(); // cc
1332          return this.network;
1333        }
1334
1335        public boolean hasNetwork() { 
1336          return this.network != null && !this.network.isEmpty();
1337        }
1338
1339        /**
1340         * @param value {@link #network} (Is a flag to indicate whether the benefits refer to in-network providers or out-of-network providers.)
1341         */
1342        public ItemsComponent setNetwork(CodeableConcept value) { 
1343          this.network = value;
1344          return this;
1345        }
1346
1347        /**
1348         * @return {@link #unit} (Indicates if the benefits apply to an individual or to the family.)
1349         */
1350        public CodeableConcept getUnit() { 
1351          if (this.unit == null)
1352            if (Configuration.errorOnAutoCreate())
1353              throw new Error("Attempt to auto-create ItemsComponent.unit");
1354            else if (Configuration.doAutoCreate())
1355              this.unit = new CodeableConcept(); // cc
1356          return this.unit;
1357        }
1358
1359        public boolean hasUnit() { 
1360          return this.unit != null && !this.unit.isEmpty();
1361        }
1362
1363        /**
1364         * @param value {@link #unit} (Indicates if the benefits apply to an individual or to the family.)
1365         */
1366        public ItemsComponent setUnit(CodeableConcept value) { 
1367          this.unit = value;
1368          return this;
1369        }
1370
1371        /**
1372         * @return {@link #term} (The term or period of the values such as 'maximum lifetime benefit' or 'maximum annual visits'.)
1373         */
1374        public CodeableConcept getTerm() { 
1375          if (this.term == null)
1376            if (Configuration.errorOnAutoCreate())
1377              throw new Error("Attempt to auto-create ItemsComponent.term");
1378            else if (Configuration.doAutoCreate())
1379              this.term = new CodeableConcept(); // cc
1380          return this.term;
1381        }
1382
1383        public boolean hasTerm() { 
1384          return this.term != null && !this.term.isEmpty();
1385        }
1386
1387        /**
1388         * @param value {@link #term} (The term or period of the values such as 'maximum lifetime benefit' or 'maximum annual visits'.)
1389         */
1390        public ItemsComponent setTerm(CodeableConcept value) { 
1391          this.term = value;
1392          return this;
1393        }
1394
1395        /**
1396         * @return {@link #benefit} (Benefits used to date.)
1397         */
1398        public List<BenefitComponent> getBenefit() { 
1399          if (this.benefit == null)
1400            this.benefit = new ArrayList<BenefitComponent>();
1401          return this.benefit;
1402        }
1403
1404        /**
1405         * @return Returns a reference to <code>this</code> for easy method chaining
1406         */
1407        public ItemsComponent setBenefit(List<BenefitComponent> theBenefit) { 
1408          this.benefit = theBenefit;
1409          return this;
1410        }
1411
1412        public boolean hasBenefit() { 
1413          if (this.benefit == null)
1414            return false;
1415          for (BenefitComponent item : this.benefit)
1416            if (!item.isEmpty())
1417              return true;
1418          return false;
1419        }
1420
1421        public BenefitComponent addBenefit() { //3
1422          BenefitComponent t = new BenefitComponent();
1423          if (this.benefit == null)
1424            this.benefit = new ArrayList<BenefitComponent>();
1425          this.benefit.add(t);
1426          return t;
1427        }
1428
1429        public ItemsComponent addBenefit(BenefitComponent t) { //3
1430          if (t == null)
1431            return this;
1432          if (this.benefit == null)
1433            this.benefit = new ArrayList<BenefitComponent>();
1434          this.benefit.add(t);
1435          return this;
1436        }
1437
1438        /**
1439         * @return The first repetition of repeating field {@link #benefit}, creating it if it does not already exist {3}
1440         */
1441        public BenefitComponent getBenefitFirstRep() { 
1442          if (getBenefit().isEmpty()) {
1443            addBenefit();
1444          }
1445          return getBenefit().get(0);
1446        }
1447
1448        /**
1449         * @return {@link #authorizationRequired} (A boolean flag indicating whether a preauthorization is required prior to actual service delivery.). This is the underlying object with id, value and extensions. The accessor "getAuthorizationRequired" gives direct access to the value
1450         */
1451        public BooleanType getAuthorizationRequiredElement() { 
1452          if (this.authorizationRequired == null)
1453            if (Configuration.errorOnAutoCreate())
1454              throw new Error("Attempt to auto-create ItemsComponent.authorizationRequired");
1455            else if (Configuration.doAutoCreate())
1456              this.authorizationRequired = new BooleanType(); // bb
1457          return this.authorizationRequired;
1458        }
1459
1460        public boolean hasAuthorizationRequiredElement() { 
1461          return this.authorizationRequired != null && !this.authorizationRequired.isEmpty();
1462        }
1463
1464        public boolean hasAuthorizationRequired() { 
1465          return this.authorizationRequired != null && !this.authorizationRequired.isEmpty();
1466        }
1467
1468        /**
1469         * @param value {@link #authorizationRequired} (A boolean flag indicating whether a preauthorization is required prior to actual service delivery.). This is the underlying object with id, value and extensions. The accessor "getAuthorizationRequired" gives direct access to the value
1470         */
1471        public ItemsComponent setAuthorizationRequiredElement(BooleanType value) { 
1472          this.authorizationRequired = value;
1473          return this;
1474        }
1475
1476        /**
1477         * @return A boolean flag indicating whether a preauthorization is required prior to actual service delivery.
1478         */
1479        public boolean getAuthorizationRequired() { 
1480          return this.authorizationRequired == null || this.authorizationRequired.isEmpty() ? false : this.authorizationRequired.getValue();
1481        }
1482
1483        /**
1484         * @param value A boolean flag indicating whether a preauthorization is required prior to actual service delivery.
1485         */
1486        public ItemsComponent setAuthorizationRequired(boolean value) { 
1487            if (this.authorizationRequired == null)
1488              this.authorizationRequired = new BooleanType();
1489            this.authorizationRequired.setValue(value);
1490          return this;
1491        }
1492
1493        /**
1494         * @return {@link #authorizationSupporting} (Codes or comments regarding information or actions associated with the preauthorization.)
1495         */
1496        public List<CodeableConcept> getAuthorizationSupporting() { 
1497          if (this.authorizationSupporting == null)
1498            this.authorizationSupporting = new ArrayList<CodeableConcept>();
1499          return this.authorizationSupporting;
1500        }
1501
1502        /**
1503         * @return Returns a reference to <code>this</code> for easy method chaining
1504         */
1505        public ItemsComponent setAuthorizationSupporting(List<CodeableConcept> theAuthorizationSupporting) { 
1506          this.authorizationSupporting = theAuthorizationSupporting;
1507          return this;
1508        }
1509
1510        public boolean hasAuthorizationSupporting() { 
1511          if (this.authorizationSupporting == null)
1512            return false;
1513          for (CodeableConcept item : this.authorizationSupporting)
1514            if (!item.isEmpty())
1515              return true;
1516          return false;
1517        }
1518
1519        public CodeableConcept addAuthorizationSupporting() { //3
1520          CodeableConcept t = new CodeableConcept();
1521          if (this.authorizationSupporting == null)
1522            this.authorizationSupporting = new ArrayList<CodeableConcept>();
1523          this.authorizationSupporting.add(t);
1524          return t;
1525        }
1526
1527        public ItemsComponent addAuthorizationSupporting(CodeableConcept t) { //3
1528          if (t == null)
1529            return this;
1530          if (this.authorizationSupporting == null)
1531            this.authorizationSupporting = new ArrayList<CodeableConcept>();
1532          this.authorizationSupporting.add(t);
1533          return this;
1534        }
1535
1536        /**
1537         * @return The first repetition of repeating field {@link #authorizationSupporting}, creating it if it does not already exist {3}
1538         */
1539        public CodeableConcept getAuthorizationSupportingFirstRep() { 
1540          if (getAuthorizationSupporting().isEmpty()) {
1541            addAuthorizationSupporting();
1542          }
1543          return getAuthorizationSupporting().get(0);
1544        }
1545
1546        /**
1547         * @return {@link #authorizationUrl} (A web location for obtaining requirements or descriptive information regarding the preauthorization.). This is the underlying object with id, value and extensions. The accessor "getAuthorizationUrl" gives direct access to the value
1548         */
1549        public UriType getAuthorizationUrlElement() { 
1550          if (this.authorizationUrl == null)
1551            if (Configuration.errorOnAutoCreate())
1552              throw new Error("Attempt to auto-create ItemsComponent.authorizationUrl");
1553            else if (Configuration.doAutoCreate())
1554              this.authorizationUrl = new UriType(); // bb
1555          return this.authorizationUrl;
1556        }
1557
1558        public boolean hasAuthorizationUrlElement() { 
1559          return this.authorizationUrl != null && !this.authorizationUrl.isEmpty();
1560        }
1561
1562        public boolean hasAuthorizationUrl() { 
1563          return this.authorizationUrl != null && !this.authorizationUrl.isEmpty();
1564        }
1565
1566        /**
1567         * @param value {@link #authorizationUrl} (A web location for obtaining requirements or descriptive information regarding the preauthorization.). This is the underlying object with id, value and extensions. The accessor "getAuthorizationUrl" gives direct access to the value
1568         */
1569        public ItemsComponent setAuthorizationUrlElement(UriType value) { 
1570          this.authorizationUrl = value;
1571          return this;
1572        }
1573
1574        /**
1575         * @return A web location for obtaining requirements or descriptive information regarding the preauthorization.
1576         */
1577        public String getAuthorizationUrl() { 
1578          return this.authorizationUrl == null ? null : this.authorizationUrl.getValue();
1579        }
1580
1581        /**
1582         * @param value A web location for obtaining requirements or descriptive information regarding the preauthorization.
1583         */
1584        public ItemsComponent setAuthorizationUrl(String value) { 
1585          if (Utilities.noString(value))
1586            this.authorizationUrl = null;
1587          else {
1588            if (this.authorizationUrl == null)
1589              this.authorizationUrl = new UriType();
1590            this.authorizationUrl.setValue(value);
1591          }
1592          return this;
1593        }
1594
1595        protected void listChildren(List<Property> children) {
1596          super.listChildren(children);
1597          children.add(new Property("category", "CodeableConcept", "Code to identify the general type of benefits under which products and services are provided.", 0, 1, category));
1598          children.add(new Property("productOrService", "CodeableConcept", "This contains the product, service, drug or other billing code for the item.", 0, 1, productOrService));
1599          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));
1600          children.add(new Property("provider", "Reference(Practitioner|PractitionerRole)", "The practitioner who is eligible for the provision of the product or service.", 0, 1, provider));
1601          children.add(new Property("excluded", "boolean", "True if the indicated class of service is excluded from the plan, missing or False indicates the product or service is included in the coverage.", 0, 1, excluded));
1602          children.add(new Property("name", "string", "A short name or tag for the benefit.", 0, 1, name));
1603          children.add(new Property("description", "string", "A richer description of the benefit or services covered.", 0, 1, description));
1604          children.add(new Property("network", "CodeableConcept", "Is a flag to indicate whether the benefits refer to in-network providers or out-of-network providers.", 0, 1, network));
1605          children.add(new Property("unit", "CodeableConcept", "Indicates if the benefits apply to an individual or to the family.", 0, 1, unit));
1606          children.add(new Property("term", "CodeableConcept", "The term or period of the values such as 'maximum lifetime benefit' or 'maximum annual visits'.", 0, 1, term));
1607          children.add(new Property("benefit", "", "Benefits used to date.", 0, java.lang.Integer.MAX_VALUE, benefit));
1608          children.add(new Property("authorizationRequired", "boolean", "A boolean flag indicating whether a preauthorization is required prior to actual service delivery.", 0, 1, authorizationRequired));
1609          children.add(new Property("authorizationSupporting", "CodeableConcept", "Codes or comments regarding information or actions associated with the preauthorization.", 0, java.lang.Integer.MAX_VALUE, authorizationSupporting));
1610          children.add(new Property("authorizationUrl", "uri", "A web location for obtaining requirements or descriptive information regarding the preauthorization.", 0, 1, authorizationUrl));
1611        }
1612
1613        @Override
1614        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1615          switch (_hash) {
1616          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);
1617          case 1957227299: /*productOrService*/  return new Property("productOrService", "CodeableConcept", "This contains the product, service, drug or other billing code for the item.", 0, 1, productOrService);
1618          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);
1619          case -987494927: /*provider*/  return new Property("provider", "Reference(Practitioner|PractitionerRole)", "The practitioner who is eligible for the provision of the product or service.", 0, 1, provider);
1620          case 1994055114: /*excluded*/  return new Property("excluded", "boolean", "True if the indicated class of service is excluded from the plan, missing or False indicates the product or service is included in the coverage.", 0, 1, excluded);
1621          case 3373707: /*name*/  return new Property("name", "string", "A short name or tag for the benefit.", 0, 1, name);
1622          case -1724546052: /*description*/  return new Property("description", "string", "A richer description of the benefit or services covered.", 0, 1, description);
1623          case 1843485230: /*network*/  return new Property("network", "CodeableConcept", "Is a flag to indicate whether the benefits refer to in-network providers or out-of-network providers.", 0, 1, network);
1624          case 3594628: /*unit*/  return new Property("unit", "CodeableConcept", "Indicates if the benefits apply to an individual or to the family.", 0, 1, unit);
1625          case 3556460: /*term*/  return new Property("term", "CodeableConcept", "The term or period of the values such as 'maximum lifetime benefit' or 'maximum annual visits'.", 0, 1, term);
1626          case -222710633: /*benefit*/  return new Property("benefit", "", "Benefits used to date.", 0, java.lang.Integer.MAX_VALUE, benefit);
1627          case 374204216: /*authorizationRequired*/  return new Property("authorizationRequired", "boolean", "A boolean flag indicating whether a preauthorization is required prior to actual service delivery.", 0, 1, authorizationRequired);
1628          case -1931146484: /*authorizationSupporting*/  return new Property("authorizationSupporting", "CodeableConcept", "Codes or comments regarding information or actions associated with the preauthorization.", 0, java.lang.Integer.MAX_VALUE, authorizationSupporting);
1629          case 1409445430: /*authorizationUrl*/  return new Property("authorizationUrl", "uri", "A web location for obtaining requirements or descriptive information regarding the preauthorization.", 0, 1, authorizationUrl);
1630          default: return super.getNamedProperty(_hash, _name, _checkValid);
1631          }
1632
1633        }
1634
1635      @Override
1636      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1637        switch (hash) {
1638        case 50511102: /*category*/ return this.category == null ? new Base[0] : new Base[] {this.category}; // CodeableConcept
1639        case 1957227299: /*productOrService*/ return this.productOrService == null ? new Base[0] : new Base[] {this.productOrService}; // CodeableConcept
1640        case -615513385: /*modifier*/ return this.modifier == null ? new Base[0] : this.modifier.toArray(new Base[this.modifier.size()]); // CodeableConcept
1641        case -987494927: /*provider*/ return this.provider == null ? new Base[0] : new Base[] {this.provider}; // Reference
1642        case 1994055114: /*excluded*/ return this.excluded == null ? new Base[0] : new Base[] {this.excluded}; // BooleanType
1643        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
1644        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1645        case 1843485230: /*network*/ return this.network == null ? new Base[0] : new Base[] {this.network}; // CodeableConcept
1646        case 3594628: /*unit*/ return this.unit == null ? new Base[0] : new Base[] {this.unit}; // CodeableConcept
1647        case 3556460: /*term*/ return this.term == null ? new Base[0] : new Base[] {this.term}; // CodeableConcept
1648        case -222710633: /*benefit*/ return this.benefit == null ? new Base[0] : this.benefit.toArray(new Base[this.benefit.size()]); // BenefitComponent
1649        case 374204216: /*authorizationRequired*/ return this.authorizationRequired == null ? new Base[0] : new Base[] {this.authorizationRequired}; // BooleanType
1650        case -1931146484: /*authorizationSupporting*/ return this.authorizationSupporting == null ? new Base[0] : this.authorizationSupporting.toArray(new Base[this.authorizationSupporting.size()]); // CodeableConcept
1651        case 1409445430: /*authorizationUrl*/ return this.authorizationUrl == null ? new Base[0] : new Base[] {this.authorizationUrl}; // UriType
1652        default: return super.getProperty(hash, name, checkValid);
1653        }
1654
1655      }
1656
1657      @Override
1658      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1659        switch (hash) {
1660        case 50511102: // category
1661          this.category = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1662          return value;
1663        case 1957227299: // productOrService
1664          this.productOrService = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1665          return value;
1666        case -615513385: // modifier
1667          this.getModifier().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1668          return value;
1669        case -987494927: // provider
1670          this.provider = TypeConvertor.castToReference(value); // Reference
1671          return value;
1672        case 1994055114: // excluded
1673          this.excluded = TypeConvertor.castToBoolean(value); // BooleanType
1674          return value;
1675        case 3373707: // name
1676          this.name = TypeConvertor.castToString(value); // StringType
1677          return value;
1678        case -1724546052: // description
1679          this.description = TypeConvertor.castToString(value); // StringType
1680          return value;
1681        case 1843485230: // network
1682          this.network = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1683          return value;
1684        case 3594628: // unit
1685          this.unit = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1686          return value;
1687        case 3556460: // term
1688          this.term = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1689          return value;
1690        case -222710633: // benefit
1691          this.getBenefit().add((BenefitComponent) value); // BenefitComponent
1692          return value;
1693        case 374204216: // authorizationRequired
1694          this.authorizationRequired = TypeConvertor.castToBoolean(value); // BooleanType
1695          return value;
1696        case -1931146484: // authorizationSupporting
1697          this.getAuthorizationSupporting().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1698          return value;
1699        case 1409445430: // authorizationUrl
1700          this.authorizationUrl = TypeConvertor.castToUri(value); // UriType
1701          return value;
1702        default: return super.setProperty(hash, name, value);
1703        }
1704
1705      }
1706
1707      @Override
1708      public Base setProperty(String name, Base value) throws FHIRException {
1709        if (name.equals("category")) {
1710          this.category = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1711        } else if (name.equals("productOrService")) {
1712          this.productOrService = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1713        } else if (name.equals("modifier")) {
1714          this.getModifier().add(TypeConvertor.castToCodeableConcept(value));
1715        } else if (name.equals("provider")) {
1716          this.provider = TypeConvertor.castToReference(value); // Reference
1717        } else if (name.equals("excluded")) {
1718          this.excluded = TypeConvertor.castToBoolean(value); // BooleanType
1719        } else if (name.equals("name")) {
1720          this.name = TypeConvertor.castToString(value); // StringType
1721        } else if (name.equals("description")) {
1722          this.description = TypeConvertor.castToString(value); // StringType
1723        } else if (name.equals("network")) {
1724          this.network = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1725        } else if (name.equals("unit")) {
1726          this.unit = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1727        } else if (name.equals("term")) {
1728          this.term = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1729        } else if (name.equals("benefit")) {
1730          this.getBenefit().add((BenefitComponent) value);
1731        } else if (name.equals("authorizationRequired")) {
1732          this.authorizationRequired = TypeConvertor.castToBoolean(value); // BooleanType
1733        } else if (name.equals("authorizationSupporting")) {
1734          this.getAuthorizationSupporting().add(TypeConvertor.castToCodeableConcept(value));
1735        } else if (name.equals("authorizationUrl")) {
1736          this.authorizationUrl = TypeConvertor.castToUri(value); // UriType
1737        } else
1738          return super.setProperty(name, value);
1739        return value;
1740      }
1741
1742  @Override
1743  public void removeChild(String name, Base value) throws FHIRException {
1744        if (name.equals("category")) {
1745          this.category = null;
1746        } else if (name.equals("productOrService")) {
1747          this.productOrService = null;
1748        } else if (name.equals("modifier")) {
1749          this.getModifier().remove(value);
1750        } else if (name.equals("provider")) {
1751          this.provider = null;
1752        } else if (name.equals("excluded")) {
1753          this.excluded = null;
1754        } else if (name.equals("name")) {
1755          this.name = null;
1756        } else if (name.equals("description")) {
1757          this.description = null;
1758        } else if (name.equals("network")) {
1759          this.network = null;
1760        } else if (name.equals("unit")) {
1761          this.unit = null;
1762        } else if (name.equals("term")) {
1763          this.term = null;
1764        } else if (name.equals("benefit")) {
1765          this.getBenefit().remove((BenefitComponent) value);
1766        } else if (name.equals("authorizationRequired")) {
1767          this.authorizationRequired = null;
1768        } else if (name.equals("authorizationSupporting")) {
1769          this.getAuthorizationSupporting().remove(value);
1770        } else if (name.equals("authorizationUrl")) {
1771          this.authorizationUrl = null;
1772        } else
1773          super.removeChild(name, value);
1774        
1775      }
1776
1777      @Override
1778      public Base makeProperty(int hash, String name) throws FHIRException {
1779        switch (hash) {
1780        case 50511102:  return getCategory();
1781        case 1957227299:  return getProductOrService();
1782        case -615513385:  return addModifier(); 
1783        case -987494927:  return getProvider();
1784        case 1994055114:  return getExcludedElement();
1785        case 3373707:  return getNameElement();
1786        case -1724546052:  return getDescriptionElement();
1787        case 1843485230:  return getNetwork();
1788        case 3594628:  return getUnit();
1789        case 3556460:  return getTerm();
1790        case -222710633:  return addBenefit(); 
1791        case 374204216:  return getAuthorizationRequiredElement();
1792        case -1931146484:  return addAuthorizationSupporting(); 
1793        case 1409445430:  return getAuthorizationUrlElement();
1794        default: return super.makeProperty(hash, name);
1795        }
1796
1797      }
1798
1799      @Override
1800      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1801        switch (hash) {
1802        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
1803        case 1957227299: /*productOrService*/ return new String[] {"CodeableConcept"};
1804        case -615513385: /*modifier*/ return new String[] {"CodeableConcept"};
1805        case -987494927: /*provider*/ return new String[] {"Reference"};
1806        case 1994055114: /*excluded*/ return new String[] {"boolean"};
1807        case 3373707: /*name*/ return new String[] {"string"};
1808        case -1724546052: /*description*/ return new String[] {"string"};
1809        case 1843485230: /*network*/ return new String[] {"CodeableConcept"};
1810        case 3594628: /*unit*/ return new String[] {"CodeableConcept"};
1811        case 3556460: /*term*/ return new String[] {"CodeableConcept"};
1812        case -222710633: /*benefit*/ return new String[] {};
1813        case 374204216: /*authorizationRequired*/ return new String[] {"boolean"};
1814        case -1931146484: /*authorizationSupporting*/ return new String[] {"CodeableConcept"};
1815        case 1409445430: /*authorizationUrl*/ return new String[] {"uri"};
1816        default: return super.getTypesForProperty(hash, name);
1817        }
1818
1819      }
1820
1821      @Override
1822      public Base addChild(String name) throws FHIRException {
1823        if (name.equals("category")) {
1824          this.category = new CodeableConcept();
1825          return this.category;
1826        }
1827        else if (name.equals("productOrService")) {
1828          this.productOrService = new CodeableConcept();
1829          return this.productOrService;
1830        }
1831        else if (name.equals("modifier")) {
1832          return addModifier();
1833        }
1834        else if (name.equals("provider")) {
1835          this.provider = new Reference();
1836          return this.provider;
1837        }
1838        else if (name.equals("excluded")) {
1839          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityResponse.insurance.item.excluded");
1840        }
1841        else if (name.equals("name")) {
1842          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityResponse.insurance.item.name");
1843        }
1844        else if (name.equals("description")) {
1845          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityResponse.insurance.item.description");
1846        }
1847        else if (name.equals("network")) {
1848          this.network = new CodeableConcept();
1849          return this.network;
1850        }
1851        else if (name.equals("unit")) {
1852          this.unit = new CodeableConcept();
1853          return this.unit;
1854        }
1855        else if (name.equals("term")) {
1856          this.term = new CodeableConcept();
1857          return this.term;
1858        }
1859        else if (name.equals("benefit")) {
1860          return addBenefit();
1861        }
1862        else if (name.equals("authorizationRequired")) {
1863          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityResponse.insurance.item.authorizationRequired");
1864        }
1865        else if (name.equals("authorizationSupporting")) {
1866          return addAuthorizationSupporting();
1867        }
1868        else if (name.equals("authorizationUrl")) {
1869          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityResponse.insurance.item.authorizationUrl");
1870        }
1871        else
1872          return super.addChild(name);
1873      }
1874
1875      public ItemsComponent copy() {
1876        ItemsComponent dst = new ItemsComponent();
1877        copyValues(dst);
1878        return dst;
1879      }
1880
1881      public void copyValues(ItemsComponent dst) {
1882        super.copyValues(dst);
1883        dst.category = category == null ? null : category.copy();
1884        dst.productOrService = productOrService == null ? null : productOrService.copy();
1885        if (modifier != null) {
1886          dst.modifier = new ArrayList<CodeableConcept>();
1887          for (CodeableConcept i : modifier)
1888            dst.modifier.add(i.copy());
1889        };
1890        dst.provider = provider == null ? null : provider.copy();
1891        dst.excluded = excluded == null ? null : excluded.copy();
1892        dst.name = name == null ? null : name.copy();
1893        dst.description = description == null ? null : description.copy();
1894        dst.network = network == null ? null : network.copy();
1895        dst.unit = unit == null ? null : unit.copy();
1896        dst.term = term == null ? null : term.copy();
1897        if (benefit != null) {
1898          dst.benefit = new ArrayList<BenefitComponent>();
1899          for (BenefitComponent i : benefit)
1900            dst.benefit.add(i.copy());
1901        };
1902        dst.authorizationRequired = authorizationRequired == null ? null : authorizationRequired.copy();
1903        if (authorizationSupporting != null) {
1904          dst.authorizationSupporting = new ArrayList<CodeableConcept>();
1905          for (CodeableConcept i : authorizationSupporting)
1906            dst.authorizationSupporting.add(i.copy());
1907        };
1908        dst.authorizationUrl = authorizationUrl == null ? null : authorizationUrl.copy();
1909      }
1910
1911      @Override
1912      public boolean equalsDeep(Base other_) {
1913        if (!super.equalsDeep(other_))
1914          return false;
1915        if (!(other_ instanceof ItemsComponent))
1916          return false;
1917        ItemsComponent o = (ItemsComponent) other_;
1918        return compareDeep(category, o.category, true) && compareDeep(productOrService, o.productOrService, true)
1919           && compareDeep(modifier, o.modifier, true) && compareDeep(provider, o.provider, true) && compareDeep(excluded, o.excluded, true)
1920           && compareDeep(name, o.name, true) && compareDeep(description, o.description, true) && compareDeep(network, o.network, true)
1921           && compareDeep(unit, o.unit, true) && compareDeep(term, o.term, true) && compareDeep(benefit, o.benefit, true)
1922           && compareDeep(authorizationRequired, o.authorizationRequired, true) && compareDeep(authorizationSupporting, o.authorizationSupporting, true)
1923           && compareDeep(authorizationUrl, o.authorizationUrl, true);
1924      }
1925
1926      @Override
1927      public boolean equalsShallow(Base other_) {
1928        if (!super.equalsShallow(other_))
1929          return false;
1930        if (!(other_ instanceof ItemsComponent))
1931          return false;
1932        ItemsComponent o = (ItemsComponent) other_;
1933        return compareValues(excluded, o.excluded, true) && compareValues(name, o.name, true) && compareValues(description, o.description, true)
1934           && compareValues(authorizationRequired, o.authorizationRequired, true) && compareValues(authorizationUrl, o.authorizationUrl, true)
1935          ;
1936      }
1937
1938      public boolean isEmpty() {
1939        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(category, productOrService
1940          , modifier, provider, excluded, name, description, network, unit, term, benefit
1941          , authorizationRequired, authorizationSupporting, authorizationUrl);
1942      }
1943
1944  public String fhirType() {
1945    return "CoverageEligibilityResponse.insurance.item";
1946
1947  }
1948
1949  }
1950
1951    @Block()
1952    public static class BenefitComponent extends BackboneElement implements IBaseBackboneElement {
1953        /**
1954         * Classification of benefit being provided.
1955         */
1956        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
1957        @Description(shortDefinition="Benefit classification", formalDefinition="Classification of benefit being provided." )
1958        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/benefit-type")
1959        protected CodeableConcept type;
1960
1961        /**
1962         * The quantity of the benefit which is permitted under the coverage.
1963         */
1964        @Child(name = "allowed", type = {UnsignedIntType.class, StringType.class, Money.class}, order=2, min=0, max=1, modifier=false, summary=false)
1965        @Description(shortDefinition="Benefits allowed", formalDefinition="The quantity of the benefit which is permitted under the coverage." )
1966        protected DataType allowed;
1967
1968        /**
1969         * The quantity of the benefit which have been consumed to date.
1970         */
1971        @Child(name = "used", type = {UnsignedIntType.class, StringType.class, Money.class}, order=3, min=0, max=1, modifier=false, summary=false)
1972        @Description(shortDefinition="Benefits used", formalDefinition="The quantity of the benefit which have been consumed to date." )
1973        protected DataType used;
1974
1975        private static final long serialVersionUID = 1900247614L;
1976
1977    /**
1978     * Constructor
1979     */
1980      public BenefitComponent() {
1981        super();
1982      }
1983
1984    /**
1985     * Constructor
1986     */
1987      public BenefitComponent(CodeableConcept type) {
1988        super();
1989        this.setType(type);
1990      }
1991
1992        /**
1993         * @return {@link #type} (Classification of benefit being provided.)
1994         */
1995        public CodeableConcept getType() { 
1996          if (this.type == null)
1997            if (Configuration.errorOnAutoCreate())
1998              throw new Error("Attempt to auto-create BenefitComponent.type");
1999            else if (Configuration.doAutoCreate())
2000              this.type = new CodeableConcept(); // cc
2001          return this.type;
2002        }
2003
2004        public boolean hasType() { 
2005          return this.type != null && !this.type.isEmpty();
2006        }
2007
2008        /**
2009         * @param value {@link #type} (Classification of benefit being provided.)
2010         */
2011        public BenefitComponent setType(CodeableConcept value) { 
2012          this.type = value;
2013          return this;
2014        }
2015
2016        /**
2017         * @return {@link #allowed} (The quantity of the benefit which is permitted under the coverage.)
2018         */
2019        public DataType getAllowed() { 
2020          return this.allowed;
2021        }
2022
2023        /**
2024         * @return {@link #allowed} (The quantity of the benefit which is permitted under the coverage.)
2025         */
2026        public UnsignedIntType getAllowedUnsignedIntType() throws FHIRException { 
2027          if (this.allowed == null)
2028            this.allowed = new UnsignedIntType();
2029          if (!(this.allowed instanceof UnsignedIntType))
2030            throw new FHIRException("Type mismatch: the type UnsignedIntType was expected, but "+this.allowed.getClass().getName()+" was encountered");
2031          return (UnsignedIntType) this.allowed;
2032        }
2033
2034        public boolean hasAllowedUnsignedIntType() { 
2035          return this != null && this.allowed instanceof UnsignedIntType;
2036        }
2037
2038        /**
2039         * @return {@link #allowed} (The quantity of the benefit which is permitted under the coverage.)
2040         */
2041        public StringType getAllowedStringType() throws FHIRException { 
2042          if (this.allowed == null)
2043            this.allowed = new StringType();
2044          if (!(this.allowed instanceof StringType))
2045            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.allowed.getClass().getName()+" was encountered");
2046          return (StringType) this.allowed;
2047        }
2048
2049        public boolean hasAllowedStringType() { 
2050          return this != null && this.allowed instanceof StringType;
2051        }
2052
2053        /**
2054         * @return {@link #allowed} (The quantity of the benefit which is permitted under the coverage.)
2055         */
2056        public Money getAllowedMoney() throws FHIRException { 
2057          if (this.allowed == null)
2058            this.allowed = new Money();
2059          if (!(this.allowed instanceof Money))
2060            throw new FHIRException("Type mismatch: the type Money was expected, but "+this.allowed.getClass().getName()+" was encountered");
2061          return (Money) this.allowed;
2062        }
2063
2064        public boolean hasAllowedMoney() { 
2065          return this != null && this.allowed instanceof Money;
2066        }
2067
2068        public boolean hasAllowed() { 
2069          return this.allowed != null && !this.allowed.isEmpty();
2070        }
2071
2072        /**
2073         * @param value {@link #allowed} (The quantity of the benefit which is permitted under the coverage.)
2074         */
2075        public BenefitComponent setAllowed(DataType value) { 
2076          if (value != null && !(value instanceof UnsignedIntType || value instanceof StringType || value instanceof Money))
2077            throw new FHIRException("Not the right type for CoverageEligibilityResponse.insurance.item.benefit.allowed[x]: "+value.fhirType());
2078          this.allowed = value;
2079          return this;
2080        }
2081
2082        /**
2083         * @return {@link #used} (The quantity of the benefit which have been consumed to date.)
2084         */
2085        public DataType getUsed() { 
2086          return this.used;
2087        }
2088
2089        /**
2090         * @return {@link #used} (The quantity of the benefit which have been consumed to date.)
2091         */
2092        public UnsignedIntType getUsedUnsignedIntType() throws FHIRException { 
2093          if (this.used == null)
2094            this.used = new UnsignedIntType();
2095          if (!(this.used instanceof UnsignedIntType))
2096            throw new FHIRException("Type mismatch: the type UnsignedIntType was expected, but "+this.used.getClass().getName()+" was encountered");
2097          return (UnsignedIntType) this.used;
2098        }
2099
2100        public boolean hasUsedUnsignedIntType() { 
2101          return this != null && this.used instanceof UnsignedIntType;
2102        }
2103
2104        /**
2105         * @return {@link #used} (The quantity of the benefit which have been consumed to date.)
2106         */
2107        public StringType getUsedStringType() throws FHIRException { 
2108          if (this.used == null)
2109            this.used = new StringType();
2110          if (!(this.used instanceof StringType))
2111            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.used.getClass().getName()+" was encountered");
2112          return (StringType) this.used;
2113        }
2114
2115        public boolean hasUsedStringType() { 
2116          return this != null && this.used instanceof StringType;
2117        }
2118
2119        /**
2120         * @return {@link #used} (The quantity of the benefit which have been consumed to date.)
2121         */
2122        public Money getUsedMoney() throws FHIRException { 
2123          if (this.used == null)
2124            this.used = new Money();
2125          if (!(this.used instanceof Money))
2126            throw new FHIRException("Type mismatch: the type Money was expected, but "+this.used.getClass().getName()+" was encountered");
2127          return (Money) this.used;
2128        }
2129
2130        public boolean hasUsedMoney() { 
2131          return this != null && this.used instanceof Money;
2132        }
2133
2134        public boolean hasUsed() { 
2135          return this.used != null && !this.used.isEmpty();
2136        }
2137
2138        /**
2139         * @param value {@link #used} (The quantity of the benefit which have been consumed to date.)
2140         */
2141        public BenefitComponent setUsed(DataType value) { 
2142          if (value != null && !(value instanceof UnsignedIntType || value instanceof StringType || value instanceof Money))
2143            throw new FHIRException("Not the right type for CoverageEligibilityResponse.insurance.item.benefit.used[x]: "+value.fhirType());
2144          this.used = value;
2145          return this;
2146        }
2147
2148        protected void listChildren(List<Property> children) {
2149          super.listChildren(children);
2150          children.add(new Property("type", "CodeableConcept", "Classification of benefit being provided.", 0, 1, type));
2151          children.add(new Property("allowed[x]", "unsignedInt|string|Money", "The quantity of the benefit which is permitted under the coverage.", 0, 1, allowed));
2152          children.add(new Property("used[x]", "unsignedInt|string|Money", "The quantity of the benefit which have been consumed to date.", 0, 1, used));
2153        }
2154
2155        @Override
2156        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2157          switch (_hash) {
2158          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Classification of benefit being provided.", 0, 1, type);
2159          case -1336663592: /*allowed[x]*/  return new Property("allowed[x]", "unsignedInt|string|Money", "The quantity of the benefit which is permitted under the coverage.", 0, 1, allowed);
2160          case -911343192: /*allowed*/  return new Property("allowed[x]", "unsignedInt|string|Money", "The quantity of the benefit which is permitted under the coverage.", 0, 1, allowed);
2161          case 1668802034: /*allowedUnsignedInt*/  return new Property("allowed[x]", "unsignedInt", "The quantity of the benefit which is permitted under the coverage.", 0, 1, allowed);
2162          case -2135265319: /*allowedString*/  return new Property("allowed[x]", "string", "The quantity of the benefit which is permitted under the coverage.", 0, 1, allowed);
2163          case -351668232: /*allowedMoney*/  return new Property("allowed[x]", "Money", "The quantity of the benefit which is permitted under the coverage.", 0, 1, allowed);
2164          case -147553373: /*used[x]*/  return new Property("used[x]", "unsignedInt|string|Money", "The quantity of the benefit which have been consumed to date.", 0, 1, used);
2165          case 3599293: /*used*/  return new Property("used[x]", "unsignedInt|string|Money", "The quantity of the benefit which have been consumed to date.", 0, 1, used);
2166          case 1252740285: /*usedUnsignedInt*/  return new Property("used[x]", "unsignedInt", "The quantity of the benefit which have been consumed to date.", 0, 1, used);
2167          case 2051978798: /*usedString*/  return new Property("used[x]", "string", "The quantity of the benefit which have been consumed to date.", 0, 1, used);
2168          case -78048509: /*usedMoney*/  return new Property("used[x]", "Money", "The quantity of the benefit which have been consumed to date.", 0, 1, used);
2169          default: return super.getNamedProperty(_hash, _name, _checkValid);
2170          }
2171
2172        }
2173
2174      @Override
2175      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2176        switch (hash) {
2177        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
2178        case -911343192: /*allowed*/ return this.allowed == null ? new Base[0] : new Base[] {this.allowed}; // DataType
2179        case 3599293: /*used*/ return this.used == null ? new Base[0] : new Base[] {this.used}; // DataType
2180        default: return super.getProperty(hash, name, checkValid);
2181        }
2182
2183      }
2184
2185      @Override
2186      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2187        switch (hash) {
2188        case 3575610: // type
2189          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2190          return value;
2191        case -911343192: // allowed
2192          this.allowed = TypeConvertor.castToType(value); // DataType
2193          return value;
2194        case 3599293: // used
2195          this.used = TypeConvertor.castToType(value); // DataType
2196          return value;
2197        default: return super.setProperty(hash, name, value);
2198        }
2199
2200      }
2201
2202      @Override
2203      public Base setProperty(String name, Base value) throws FHIRException {
2204        if (name.equals("type")) {
2205          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2206        } else if (name.equals("allowed[x]")) {
2207          this.allowed = TypeConvertor.castToType(value); // DataType
2208        } else if (name.equals("used[x]")) {
2209          this.used = TypeConvertor.castToType(value); // DataType
2210        } else
2211          return super.setProperty(name, value);
2212        return value;
2213      }
2214
2215  @Override
2216  public void removeChild(String name, Base value) throws FHIRException {
2217        if (name.equals("type")) {
2218          this.type = null;
2219        } else if (name.equals("allowed[x]")) {
2220          this.allowed = null;
2221        } else if (name.equals("used[x]")) {
2222          this.used = null;
2223        } else
2224          super.removeChild(name, value);
2225        
2226      }
2227
2228      @Override
2229      public Base makeProperty(int hash, String name) throws FHIRException {
2230        switch (hash) {
2231        case 3575610:  return getType();
2232        case -1336663592:  return getAllowed();
2233        case -911343192:  return getAllowed();
2234        case -147553373:  return getUsed();
2235        case 3599293:  return getUsed();
2236        default: return super.makeProperty(hash, name);
2237        }
2238
2239      }
2240
2241      @Override
2242      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2243        switch (hash) {
2244        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
2245        case -911343192: /*allowed*/ return new String[] {"unsignedInt", "string", "Money"};
2246        case 3599293: /*used*/ return new String[] {"unsignedInt", "string", "Money"};
2247        default: return super.getTypesForProperty(hash, name);
2248        }
2249
2250      }
2251
2252      @Override
2253      public Base addChild(String name) throws FHIRException {
2254        if (name.equals("type")) {
2255          this.type = new CodeableConcept();
2256          return this.type;
2257        }
2258        else if (name.equals("allowedUnsignedInt")) {
2259          this.allowed = new UnsignedIntType();
2260          return this.allowed;
2261        }
2262        else if (name.equals("allowedString")) {
2263          this.allowed = new StringType();
2264          return this.allowed;
2265        }
2266        else if (name.equals("allowedMoney")) {
2267          this.allowed = new Money();
2268          return this.allowed;
2269        }
2270        else if (name.equals("usedUnsignedInt")) {
2271          this.used = new UnsignedIntType();
2272          return this.used;
2273        }
2274        else if (name.equals("usedString")) {
2275          this.used = new StringType();
2276          return this.used;
2277        }
2278        else if (name.equals("usedMoney")) {
2279          this.used = new Money();
2280          return this.used;
2281        }
2282        else
2283          return super.addChild(name);
2284      }
2285
2286      public BenefitComponent copy() {
2287        BenefitComponent dst = new BenefitComponent();
2288        copyValues(dst);
2289        return dst;
2290      }
2291
2292      public void copyValues(BenefitComponent dst) {
2293        super.copyValues(dst);
2294        dst.type = type == null ? null : type.copy();
2295        dst.allowed = allowed == null ? null : allowed.copy();
2296        dst.used = used == null ? null : used.copy();
2297      }
2298
2299      @Override
2300      public boolean equalsDeep(Base other_) {
2301        if (!super.equalsDeep(other_))
2302          return false;
2303        if (!(other_ instanceof BenefitComponent))
2304          return false;
2305        BenefitComponent o = (BenefitComponent) other_;
2306        return compareDeep(type, o.type, true) && compareDeep(allowed, o.allowed, true) && compareDeep(used, o.used, true)
2307          ;
2308      }
2309
2310      @Override
2311      public boolean equalsShallow(Base other_) {
2312        if (!super.equalsShallow(other_))
2313          return false;
2314        if (!(other_ instanceof BenefitComponent))
2315          return false;
2316        BenefitComponent o = (BenefitComponent) other_;
2317        return true;
2318      }
2319
2320      public boolean isEmpty() {
2321        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, allowed, used);
2322      }
2323
2324  public String fhirType() {
2325    return "CoverageEligibilityResponse.insurance.item.benefit";
2326
2327  }
2328
2329  }
2330
2331    @Block()
2332    public static class ErrorsComponent extends BackboneElement implements IBaseBackboneElement {
2333        /**
2334         * An error code,from a specified code system, which details why the eligibility check could not be performed.
2335         */
2336        @Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=true)
2337        @Description(shortDefinition="Error code detailing processing issues", formalDefinition="An error code,from a specified code system, which details why the eligibility check could not be performed." )
2338        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/adjudication-error")
2339        protected CodeableConcept code;
2340
2341        /**
2342         * A [simple subset of FHIRPath](fhirpath.html#simple) limited to element names, repetition indicators and the default child accessor that identifies one of the elements in the resource that caused this issue to be raised.
2343         */
2344        @Child(name = "expression", type = {StringType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2345        @Description(shortDefinition="FHIRPath of element(s) related to issue", formalDefinition="A [simple subset of FHIRPath](fhirpath.html#simple) limited to element names, repetition indicators and the default child accessor that identifies one of the elements in the resource that caused this issue to be raised." )
2346        protected List<StringType> expression;
2347
2348        private static final long serialVersionUID = -344349215L;
2349
2350    /**
2351     * Constructor
2352     */
2353      public ErrorsComponent() {
2354        super();
2355      }
2356
2357    /**
2358     * Constructor
2359     */
2360      public ErrorsComponent(CodeableConcept code) {
2361        super();
2362        this.setCode(code);
2363      }
2364
2365        /**
2366         * @return {@link #code} (An error code,from a specified code system, which details why the eligibility check could not be performed.)
2367         */
2368        public CodeableConcept getCode() { 
2369          if (this.code == null)
2370            if (Configuration.errorOnAutoCreate())
2371              throw new Error("Attempt to auto-create ErrorsComponent.code");
2372            else if (Configuration.doAutoCreate())
2373              this.code = new CodeableConcept(); // cc
2374          return this.code;
2375        }
2376
2377        public boolean hasCode() { 
2378          return this.code != null && !this.code.isEmpty();
2379        }
2380
2381        /**
2382         * @param value {@link #code} (An error code,from a specified code system, which details why the eligibility check could not be performed.)
2383         */
2384        public ErrorsComponent setCode(CodeableConcept value) { 
2385          this.code = value;
2386          return this;
2387        }
2388
2389        /**
2390         * @return {@link #expression} (A [simple subset of FHIRPath](fhirpath.html#simple) limited to element names, repetition indicators and the default child accessor that identifies one of the elements in the resource that caused this issue to be raised.)
2391         */
2392        public List<StringType> getExpression() { 
2393          if (this.expression == null)
2394            this.expression = new ArrayList<StringType>();
2395          return this.expression;
2396        }
2397
2398        /**
2399         * @return Returns a reference to <code>this</code> for easy method chaining
2400         */
2401        public ErrorsComponent setExpression(List<StringType> theExpression) { 
2402          this.expression = theExpression;
2403          return this;
2404        }
2405
2406        public boolean hasExpression() { 
2407          if (this.expression == null)
2408            return false;
2409          for (StringType item : this.expression)
2410            if (!item.isEmpty())
2411              return true;
2412          return false;
2413        }
2414
2415        /**
2416         * @return {@link #expression} (A [simple subset of FHIRPath](fhirpath.html#simple) limited to element names, repetition indicators and the default child accessor that identifies one of the elements in the resource that caused this issue to be raised.)
2417         */
2418        public StringType addExpressionElement() {//2 
2419          StringType t = new StringType();
2420          if (this.expression == null)
2421            this.expression = new ArrayList<StringType>();
2422          this.expression.add(t);
2423          return t;
2424        }
2425
2426        /**
2427         * @param value {@link #expression} (A [simple subset of FHIRPath](fhirpath.html#simple) limited to element names, repetition indicators and the default child accessor that identifies one of the elements in the resource that caused this issue to be raised.)
2428         */
2429        public ErrorsComponent addExpression(String value) { //1
2430          StringType t = new StringType();
2431          t.setValue(value);
2432          if (this.expression == null)
2433            this.expression = new ArrayList<StringType>();
2434          this.expression.add(t);
2435          return this;
2436        }
2437
2438        /**
2439         * @param value {@link #expression} (A [simple subset of FHIRPath](fhirpath.html#simple) limited to element names, repetition indicators and the default child accessor that identifies one of the elements in the resource that caused this issue to be raised.)
2440         */
2441        public boolean hasExpression(String value) { 
2442          if (this.expression == null)
2443            return false;
2444          for (StringType v : this.expression)
2445            if (v.getValue().equals(value)) // string
2446              return true;
2447          return false;
2448        }
2449
2450        protected void listChildren(List<Property> children) {
2451          super.listChildren(children);
2452          children.add(new Property("code", "CodeableConcept", "An error code,from a specified code system, which details why the eligibility check could not be performed.", 0, 1, code));
2453          children.add(new Property("expression", "string", "A [simple subset of FHIRPath](fhirpath.html#simple) limited to element names, repetition indicators and the default child accessor that identifies one of the elements in the resource that caused this issue to be raised.", 0, java.lang.Integer.MAX_VALUE, expression));
2454        }
2455
2456        @Override
2457        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2458          switch (_hash) {
2459          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "An error code,from a specified code system, which details why the eligibility check could not be performed.", 0, 1, code);
2460          case -1795452264: /*expression*/  return new Property("expression", "string", "A [simple subset of FHIRPath](fhirpath.html#simple) limited to element names, repetition indicators and the default child accessor that identifies one of the elements in the resource that caused this issue to be raised.", 0, java.lang.Integer.MAX_VALUE, expression);
2461          default: return super.getNamedProperty(_hash, _name, _checkValid);
2462          }
2463
2464        }
2465
2466      @Override
2467      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2468        switch (hash) {
2469        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
2470        case -1795452264: /*expression*/ return this.expression == null ? new Base[0] : this.expression.toArray(new Base[this.expression.size()]); // StringType
2471        default: return super.getProperty(hash, name, checkValid);
2472        }
2473
2474      }
2475
2476      @Override
2477      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2478        switch (hash) {
2479        case 3059181: // code
2480          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2481          return value;
2482        case -1795452264: // expression
2483          this.getExpression().add(TypeConvertor.castToString(value)); // StringType
2484          return value;
2485        default: return super.setProperty(hash, name, value);
2486        }
2487
2488      }
2489
2490      @Override
2491      public Base setProperty(String name, Base value) throws FHIRException {
2492        if (name.equals("code")) {
2493          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2494        } else if (name.equals("expression")) {
2495          this.getExpression().add(TypeConvertor.castToString(value));
2496        } else
2497          return super.setProperty(name, value);
2498        return value;
2499      }
2500
2501  @Override
2502  public void removeChild(String name, Base value) throws FHIRException {
2503        if (name.equals("code")) {
2504          this.code = null;
2505        } else if (name.equals("expression")) {
2506          this.getExpression().remove(value);
2507        } else
2508          super.removeChild(name, value);
2509        
2510      }
2511
2512      @Override
2513      public Base makeProperty(int hash, String name) throws FHIRException {
2514        switch (hash) {
2515        case 3059181:  return getCode();
2516        case -1795452264:  return addExpressionElement();
2517        default: return super.makeProperty(hash, name);
2518        }
2519
2520      }
2521
2522      @Override
2523      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2524        switch (hash) {
2525        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
2526        case -1795452264: /*expression*/ return new String[] {"string"};
2527        default: return super.getTypesForProperty(hash, name);
2528        }
2529
2530      }
2531
2532      @Override
2533      public Base addChild(String name) throws FHIRException {
2534        if (name.equals("code")) {
2535          this.code = new CodeableConcept();
2536          return this.code;
2537        }
2538        else if (name.equals("expression")) {
2539          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityResponse.error.expression");
2540        }
2541        else
2542          return super.addChild(name);
2543      }
2544
2545      public ErrorsComponent copy() {
2546        ErrorsComponent dst = new ErrorsComponent();
2547        copyValues(dst);
2548        return dst;
2549      }
2550
2551      public void copyValues(ErrorsComponent dst) {
2552        super.copyValues(dst);
2553        dst.code = code == null ? null : code.copy();
2554        if (expression != null) {
2555          dst.expression = new ArrayList<StringType>();
2556          for (StringType i : expression)
2557            dst.expression.add(i.copy());
2558        };
2559      }
2560
2561      @Override
2562      public boolean equalsDeep(Base other_) {
2563        if (!super.equalsDeep(other_))
2564          return false;
2565        if (!(other_ instanceof ErrorsComponent))
2566          return false;
2567        ErrorsComponent o = (ErrorsComponent) other_;
2568        return compareDeep(code, o.code, true) && compareDeep(expression, o.expression, true);
2569      }
2570
2571      @Override
2572      public boolean equalsShallow(Base other_) {
2573        if (!super.equalsShallow(other_))
2574          return false;
2575        if (!(other_ instanceof ErrorsComponent))
2576          return false;
2577        ErrorsComponent o = (ErrorsComponent) other_;
2578        return compareValues(expression, o.expression, true);
2579      }
2580
2581      public boolean isEmpty() {
2582        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, expression);
2583      }
2584
2585  public String fhirType() {
2586    return "CoverageEligibilityResponse.error";
2587
2588  }
2589
2590  }
2591
2592    /**
2593     * A unique identifier assigned to this coverage eligiblity request.
2594     */
2595    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2596    @Description(shortDefinition="Business Identifier for coverage eligiblity request", formalDefinition="A unique identifier assigned to this coverage eligiblity request." )
2597    protected List<Identifier> identifier;
2598
2599    /**
2600     * The status of the resource instance.
2601     */
2602    @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
2603    @Description(shortDefinition="active | cancelled | draft | entered-in-error", formalDefinition="The status of the resource instance." )
2604    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/fm-status")
2605    protected Enumeration<FinancialResourceStatusCodes> status;
2606
2607    /**
2608     * 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.
2609     */
2610    @Child(name = "purpose", type = {CodeType.class}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2611    @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." )
2612    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/eligibilityresponse-purpose")
2613    protected List<Enumeration<EligibilityResponsePurpose>> purpose;
2614
2615    /**
2616     * The party who is the beneficiary of the supplied coverage and for whom eligibility is sought.
2617     */
2618    @Child(name = "patient", type = {Patient.class}, order=3, min=1, max=1, modifier=false, summary=true)
2619    @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." )
2620    protected Reference patient;
2621
2622    /**
2623     * Information code for an event with a corresponding date or period.
2624     */
2625    @Child(name = "event", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2626    @Description(shortDefinition="Event information", formalDefinition="Information code for an event with a corresponding date or period." )
2627    protected List<CoverageEligibilityResponseEventComponent> event;
2628
2629    /**
2630     * The date or dates when the enclosed suite of services were performed or completed.
2631     */
2632    @Child(name = "serviced", type = {DateType.class, Period.class}, order=5, min=0, max=1, modifier=false, summary=false)
2633    @Description(shortDefinition="Estimated date or dates of service", formalDefinition="The date or dates when the enclosed suite of services were performed or completed." )
2634    protected DataType serviced;
2635
2636    /**
2637     * The date this resource was created.
2638     */
2639    @Child(name = "created", type = {DateTimeType.class}, order=6, min=1, max=1, modifier=false, summary=true)
2640    @Description(shortDefinition="Response creation date", formalDefinition="The date this resource was created." )
2641    protected DateTimeType created;
2642
2643    /**
2644     * The provider which is responsible for the request.
2645     */
2646    @Child(name = "requestor", type = {Practitioner.class, PractitionerRole.class, Organization.class}, order=7, min=0, max=1, modifier=false, summary=false)
2647    @Description(shortDefinition="Party responsible for the request", formalDefinition="The provider which is responsible for the request." )
2648    protected Reference requestor;
2649
2650    /**
2651     * Reference to the original request resource.
2652     */
2653    @Child(name = "request", type = {CoverageEligibilityRequest.class}, order=8, min=1, max=1, modifier=false, summary=true)
2654    @Description(shortDefinition="Eligibility request reference", formalDefinition="Reference to the original request resource." )
2655    protected Reference request;
2656
2657    /**
2658     * The outcome of the request processing.
2659     */
2660    @Child(name = "outcome", type = {CodeType.class}, order=9, min=1, max=1, modifier=false, summary=true)
2661    @Description(shortDefinition="queued | complete | error | partial", formalDefinition="The outcome of the request processing." )
2662    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/eligibility-outcome")
2663    protected Enumeration<EligibilityOutcome> outcome;
2664
2665    /**
2666     * A human readable description of the status of the adjudication.
2667     */
2668    @Child(name = "disposition", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=false)
2669    @Description(shortDefinition="Disposition Message", formalDefinition="A human readable description of the status of the adjudication." )
2670    protected StringType disposition;
2671
2672    /**
2673     * The Insurer who issued the coverage in question and is the author of the response.
2674     */
2675    @Child(name = "insurer", type = {Organization.class}, order=11, min=1, max=1, modifier=false, summary=true)
2676    @Description(shortDefinition="Coverage issuer", formalDefinition="The Insurer who issued the coverage in question and is the author of the response." )
2677    protected Reference insurer;
2678
2679    /**
2680     * Financial instruments for reimbursement for the health care products and services.
2681     */
2682    @Child(name = "insurance", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2683    @Description(shortDefinition="Patient insurance information", formalDefinition="Financial instruments for reimbursement for the health care products and services." )
2684    protected List<InsuranceComponent> insurance;
2685
2686    /**
2687     * A reference from the Insurer to which these services pertain to be used on further communication and as proof that the request occurred.
2688     */
2689    @Child(name = "preAuthRef", type = {StringType.class}, order=13, min=0, max=1, modifier=false, summary=false)
2690    @Description(shortDefinition="Preauthorization reference", formalDefinition="A reference from the Insurer to which these services pertain to be used on further communication and as proof that the request occurred." )
2691    protected StringType preAuthRef;
2692
2693    /**
2694     * A code for the form to be used for printing the content.
2695     */
2696    @Child(name = "form", type = {CodeableConcept.class}, order=14, min=0, max=1, modifier=false, summary=false)
2697    @Description(shortDefinition="Printed form identifier", formalDefinition="A code for the form to be used for printing the content." )
2698    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/forms")
2699    protected CodeableConcept form;
2700
2701    /**
2702     * Errors encountered during the processing of the request.
2703     */
2704    @Child(name = "error", type = {}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2705    @Description(shortDefinition="Processing errors", formalDefinition="Errors encountered during the processing of the request." )
2706    protected List<ErrorsComponent> error;
2707
2708    private static final long serialVersionUID = 1099912055L;
2709
2710  /**
2711   * Constructor
2712   */
2713    public CoverageEligibilityResponse() {
2714      super();
2715    }
2716
2717  /**
2718   * Constructor
2719   */
2720    public CoverageEligibilityResponse(FinancialResourceStatusCodes status, EligibilityResponsePurpose purpose, Reference patient, Date created, Reference request, EligibilityOutcome outcome, Reference insurer) {
2721      super();
2722      this.setStatus(status);
2723      this.addPurpose(purpose);
2724      this.setPatient(patient);
2725      this.setCreated(created);
2726      this.setRequest(request);
2727      this.setOutcome(outcome);
2728      this.setInsurer(insurer);
2729    }
2730
2731    /**
2732     * @return {@link #identifier} (A unique identifier assigned to this coverage eligiblity request.)
2733     */
2734    public List<Identifier> getIdentifier() { 
2735      if (this.identifier == null)
2736        this.identifier = new ArrayList<Identifier>();
2737      return this.identifier;
2738    }
2739
2740    /**
2741     * @return Returns a reference to <code>this</code> for easy method chaining
2742     */
2743    public CoverageEligibilityResponse setIdentifier(List<Identifier> theIdentifier) { 
2744      this.identifier = theIdentifier;
2745      return this;
2746    }
2747
2748    public boolean hasIdentifier() { 
2749      if (this.identifier == null)
2750        return false;
2751      for (Identifier item : this.identifier)
2752        if (!item.isEmpty())
2753          return true;
2754      return false;
2755    }
2756
2757    public Identifier addIdentifier() { //3
2758      Identifier t = new Identifier();
2759      if (this.identifier == null)
2760        this.identifier = new ArrayList<Identifier>();
2761      this.identifier.add(t);
2762      return t;
2763    }
2764
2765    public CoverageEligibilityResponse addIdentifier(Identifier t) { //3
2766      if (t == null)
2767        return this;
2768      if (this.identifier == null)
2769        this.identifier = new ArrayList<Identifier>();
2770      this.identifier.add(t);
2771      return this;
2772    }
2773
2774    /**
2775     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
2776     */
2777    public Identifier getIdentifierFirstRep() { 
2778      if (getIdentifier().isEmpty()) {
2779        addIdentifier();
2780      }
2781      return getIdentifier().get(0);
2782    }
2783
2784    /**
2785     * @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
2786     */
2787    public Enumeration<FinancialResourceStatusCodes> getStatusElement() { 
2788      if (this.status == null)
2789        if (Configuration.errorOnAutoCreate())
2790          throw new Error("Attempt to auto-create CoverageEligibilityResponse.status");
2791        else if (Configuration.doAutoCreate())
2792          this.status = new Enumeration<FinancialResourceStatusCodes>(new FinancialResourceStatusCodesEnumFactory()); // bb
2793      return this.status;
2794    }
2795
2796    public boolean hasStatusElement() { 
2797      return this.status != null && !this.status.isEmpty();
2798    }
2799
2800    public boolean hasStatus() { 
2801      return this.status != null && !this.status.isEmpty();
2802    }
2803
2804    /**
2805     * @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
2806     */
2807    public CoverageEligibilityResponse setStatusElement(Enumeration<FinancialResourceStatusCodes> value) { 
2808      this.status = value;
2809      return this;
2810    }
2811
2812    /**
2813     * @return The status of the resource instance.
2814     */
2815    public FinancialResourceStatusCodes getStatus() { 
2816      return this.status == null ? null : this.status.getValue();
2817    }
2818
2819    /**
2820     * @param value The status of the resource instance.
2821     */
2822    public CoverageEligibilityResponse setStatus(FinancialResourceStatusCodes value) { 
2823        if (this.status == null)
2824          this.status = new Enumeration<FinancialResourceStatusCodes>(new FinancialResourceStatusCodesEnumFactory());
2825        this.status.setValue(value);
2826      return this;
2827    }
2828
2829    /**
2830     * @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.)
2831     */
2832    public List<Enumeration<EligibilityResponsePurpose>> getPurpose() { 
2833      if (this.purpose == null)
2834        this.purpose = new ArrayList<Enumeration<EligibilityResponsePurpose>>();
2835      return this.purpose;
2836    }
2837
2838    /**
2839     * @return Returns a reference to <code>this</code> for easy method chaining
2840     */
2841    public CoverageEligibilityResponse setPurpose(List<Enumeration<EligibilityResponsePurpose>> thePurpose) { 
2842      this.purpose = thePurpose;
2843      return this;
2844    }
2845
2846    public boolean hasPurpose() { 
2847      if (this.purpose == null)
2848        return false;
2849      for (Enumeration<EligibilityResponsePurpose> item : this.purpose)
2850        if (!item.isEmpty())
2851          return true;
2852      return false;
2853    }
2854
2855    /**
2856     * @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.)
2857     */
2858    public Enumeration<EligibilityResponsePurpose> addPurposeElement() {//2 
2859      Enumeration<EligibilityResponsePurpose> t = new Enumeration<EligibilityResponsePurpose>(new EligibilityResponsePurposeEnumFactory());
2860      if (this.purpose == null)
2861        this.purpose = new ArrayList<Enumeration<EligibilityResponsePurpose>>();
2862      this.purpose.add(t);
2863      return t;
2864    }
2865
2866    /**
2867     * @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.)
2868     */
2869    public CoverageEligibilityResponse addPurpose(EligibilityResponsePurpose value) { //1
2870      Enumeration<EligibilityResponsePurpose> t = new Enumeration<EligibilityResponsePurpose>(new EligibilityResponsePurposeEnumFactory());
2871      t.setValue(value);
2872      if (this.purpose == null)
2873        this.purpose = new ArrayList<Enumeration<EligibilityResponsePurpose>>();
2874      this.purpose.add(t);
2875      return this;
2876    }
2877
2878    /**
2879     * @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.)
2880     */
2881    public boolean hasPurpose(EligibilityResponsePurpose value) { 
2882      if (this.purpose == null)
2883        return false;
2884      for (Enumeration<EligibilityResponsePurpose> v : this.purpose)
2885        if (v.getValue().equals(value)) // code
2886          return true;
2887      return false;
2888    }
2889
2890    /**
2891     * @return {@link #patient} (The party who is the beneficiary of the supplied coverage and for whom eligibility is sought.)
2892     */
2893    public Reference getPatient() { 
2894      if (this.patient == null)
2895        if (Configuration.errorOnAutoCreate())
2896          throw new Error("Attempt to auto-create CoverageEligibilityResponse.patient");
2897        else if (Configuration.doAutoCreate())
2898          this.patient = new Reference(); // cc
2899      return this.patient;
2900    }
2901
2902    public boolean hasPatient() { 
2903      return this.patient != null && !this.patient.isEmpty();
2904    }
2905
2906    /**
2907     * @param value {@link #patient} (The party who is the beneficiary of the supplied coverage and for whom eligibility is sought.)
2908     */
2909    public CoverageEligibilityResponse setPatient(Reference value) { 
2910      this.patient = value;
2911      return this;
2912    }
2913
2914    /**
2915     * @return {@link #event} (Information code for an event with a corresponding date or period.)
2916     */
2917    public List<CoverageEligibilityResponseEventComponent> getEvent() { 
2918      if (this.event == null)
2919        this.event = new ArrayList<CoverageEligibilityResponseEventComponent>();
2920      return this.event;
2921    }
2922
2923    /**
2924     * @return Returns a reference to <code>this</code> for easy method chaining
2925     */
2926    public CoverageEligibilityResponse setEvent(List<CoverageEligibilityResponseEventComponent> theEvent) { 
2927      this.event = theEvent;
2928      return this;
2929    }
2930
2931    public boolean hasEvent() { 
2932      if (this.event == null)
2933        return false;
2934      for (CoverageEligibilityResponseEventComponent item : this.event)
2935        if (!item.isEmpty())
2936          return true;
2937      return false;
2938    }
2939
2940    public CoverageEligibilityResponseEventComponent addEvent() { //3
2941      CoverageEligibilityResponseEventComponent t = new CoverageEligibilityResponseEventComponent();
2942      if (this.event == null)
2943        this.event = new ArrayList<CoverageEligibilityResponseEventComponent>();
2944      this.event.add(t);
2945      return t;
2946    }
2947
2948    public CoverageEligibilityResponse addEvent(CoverageEligibilityResponseEventComponent t) { //3
2949      if (t == null)
2950        return this;
2951      if (this.event == null)
2952        this.event = new ArrayList<CoverageEligibilityResponseEventComponent>();
2953      this.event.add(t);
2954      return this;
2955    }
2956
2957    /**
2958     * @return The first repetition of repeating field {@link #event}, creating it if it does not already exist {3}
2959     */
2960    public CoverageEligibilityResponseEventComponent getEventFirstRep() { 
2961      if (getEvent().isEmpty()) {
2962        addEvent();
2963      }
2964      return getEvent().get(0);
2965    }
2966
2967    /**
2968     * @return {@link #serviced} (The date or dates when the enclosed suite of services were performed or completed.)
2969     */
2970    public DataType getServiced() { 
2971      return this.serviced;
2972    }
2973
2974    /**
2975     * @return {@link #serviced} (The date or dates when the enclosed suite of services were performed or completed.)
2976     */
2977    public DateType getServicedDateType() throws FHIRException { 
2978      if (this.serviced == null)
2979        this.serviced = new DateType();
2980      if (!(this.serviced instanceof DateType))
2981        throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.serviced.getClass().getName()+" was encountered");
2982      return (DateType) this.serviced;
2983    }
2984
2985    public boolean hasServicedDateType() { 
2986      return this != null && this.serviced instanceof DateType;
2987    }
2988
2989    /**
2990     * @return {@link #serviced} (The date or dates when the enclosed suite of services were performed or completed.)
2991     */
2992    public Period getServicedPeriod() throws FHIRException { 
2993      if (this.serviced == null)
2994        this.serviced = new Period();
2995      if (!(this.serviced instanceof Period))
2996        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.serviced.getClass().getName()+" was encountered");
2997      return (Period) this.serviced;
2998    }
2999
3000    public boolean hasServicedPeriod() { 
3001      return this != null && this.serviced instanceof Period;
3002    }
3003
3004    public boolean hasServiced() { 
3005      return this.serviced != null && !this.serviced.isEmpty();
3006    }
3007
3008    /**
3009     * @param value {@link #serviced} (The date or dates when the enclosed suite of services were performed or completed.)
3010     */
3011    public CoverageEligibilityResponse setServiced(DataType value) { 
3012      if (value != null && !(value instanceof DateType || value instanceof Period))
3013        throw new FHIRException("Not the right type for CoverageEligibilityResponse.serviced[x]: "+value.fhirType());
3014      this.serviced = value;
3015      return this;
3016    }
3017
3018    /**
3019     * @return {@link #created} (The date this resource was created.). This is the underlying object with id, value and extensions. The accessor "getCreated" gives direct access to the value
3020     */
3021    public DateTimeType getCreatedElement() { 
3022      if (this.created == null)
3023        if (Configuration.errorOnAutoCreate())
3024          throw new Error("Attempt to auto-create CoverageEligibilityResponse.created");
3025        else if (Configuration.doAutoCreate())
3026          this.created = new DateTimeType(); // bb
3027      return this.created;
3028    }
3029
3030    public boolean hasCreatedElement() { 
3031      return this.created != null && !this.created.isEmpty();
3032    }
3033
3034    public boolean hasCreated() { 
3035      return this.created != null && !this.created.isEmpty();
3036    }
3037
3038    /**
3039     * @param value {@link #created} (The date this resource was created.). This is the underlying object with id, value and extensions. The accessor "getCreated" gives direct access to the value
3040     */
3041    public CoverageEligibilityResponse setCreatedElement(DateTimeType value) { 
3042      this.created = value;
3043      return this;
3044    }
3045
3046    /**
3047     * @return The date this resource was created.
3048     */
3049    public Date getCreated() { 
3050      return this.created == null ? null : this.created.getValue();
3051    }
3052
3053    /**
3054     * @param value The date this resource was created.
3055     */
3056    public CoverageEligibilityResponse setCreated(Date value) { 
3057        if (this.created == null)
3058          this.created = new DateTimeType();
3059        this.created.setValue(value);
3060      return this;
3061    }
3062
3063    /**
3064     * @return {@link #requestor} (The provider which is responsible for the request.)
3065     */
3066    public Reference getRequestor() { 
3067      if (this.requestor == null)
3068        if (Configuration.errorOnAutoCreate())
3069          throw new Error("Attempt to auto-create CoverageEligibilityResponse.requestor");
3070        else if (Configuration.doAutoCreate())
3071          this.requestor = new Reference(); // cc
3072      return this.requestor;
3073    }
3074
3075    public boolean hasRequestor() { 
3076      return this.requestor != null && !this.requestor.isEmpty();
3077    }
3078
3079    /**
3080     * @param value {@link #requestor} (The provider which is responsible for the request.)
3081     */
3082    public CoverageEligibilityResponse setRequestor(Reference value) { 
3083      this.requestor = value;
3084      return this;
3085    }
3086
3087    /**
3088     * @return {@link #request} (Reference to the original request resource.)
3089     */
3090    public Reference getRequest() { 
3091      if (this.request == null)
3092        if (Configuration.errorOnAutoCreate())
3093          throw new Error("Attempt to auto-create CoverageEligibilityResponse.request");
3094        else if (Configuration.doAutoCreate())
3095          this.request = new Reference(); // cc
3096      return this.request;
3097    }
3098
3099    public boolean hasRequest() { 
3100      return this.request != null && !this.request.isEmpty();
3101    }
3102
3103    /**
3104     * @param value {@link #request} (Reference to the original request resource.)
3105     */
3106    public CoverageEligibilityResponse setRequest(Reference value) { 
3107      this.request = value;
3108      return this;
3109    }
3110
3111    /**
3112     * @return {@link #outcome} (The outcome of the request processing.). This is the underlying object with id, value and extensions. The accessor "getOutcome" gives direct access to the value
3113     */
3114    public Enumeration<EligibilityOutcome> getOutcomeElement() { 
3115      if (this.outcome == null)
3116        if (Configuration.errorOnAutoCreate())
3117          throw new Error("Attempt to auto-create CoverageEligibilityResponse.outcome");
3118        else if (Configuration.doAutoCreate())
3119          this.outcome = new Enumeration<EligibilityOutcome>(new EligibilityOutcomeEnumFactory()); // bb
3120      return this.outcome;
3121    }
3122
3123    public boolean hasOutcomeElement() { 
3124      return this.outcome != null && !this.outcome.isEmpty();
3125    }
3126
3127    public boolean hasOutcome() { 
3128      return this.outcome != null && !this.outcome.isEmpty();
3129    }
3130
3131    /**
3132     * @param value {@link #outcome} (The outcome of the request processing.). This is the underlying object with id, value and extensions. The accessor "getOutcome" gives direct access to the value
3133     */
3134    public CoverageEligibilityResponse setOutcomeElement(Enumeration<EligibilityOutcome> value) { 
3135      this.outcome = value;
3136      return this;
3137    }
3138
3139    /**
3140     * @return The outcome of the request processing.
3141     */
3142    public EligibilityOutcome getOutcome() { 
3143      return this.outcome == null ? null : this.outcome.getValue();
3144    }
3145
3146    /**
3147     * @param value The outcome of the request processing.
3148     */
3149    public CoverageEligibilityResponse setOutcome(EligibilityOutcome value) { 
3150        if (this.outcome == null)
3151          this.outcome = new Enumeration<EligibilityOutcome>(new EligibilityOutcomeEnumFactory());
3152        this.outcome.setValue(value);
3153      return this;
3154    }
3155
3156    /**
3157     * @return {@link #disposition} (A human readable description of the status of the adjudication.). This is the underlying object with id, value and extensions. The accessor "getDisposition" gives direct access to the value
3158     */
3159    public StringType getDispositionElement() { 
3160      if (this.disposition == null)
3161        if (Configuration.errorOnAutoCreate())
3162          throw new Error("Attempt to auto-create CoverageEligibilityResponse.disposition");
3163        else if (Configuration.doAutoCreate())
3164          this.disposition = new StringType(); // bb
3165      return this.disposition;
3166    }
3167
3168    public boolean hasDispositionElement() { 
3169      return this.disposition != null && !this.disposition.isEmpty();
3170    }
3171
3172    public boolean hasDisposition() { 
3173      return this.disposition != null && !this.disposition.isEmpty();
3174    }
3175
3176    /**
3177     * @param value {@link #disposition} (A human readable description of the status of the adjudication.). This is the underlying object with id, value and extensions. The accessor "getDisposition" gives direct access to the value
3178     */
3179    public CoverageEligibilityResponse setDispositionElement(StringType value) { 
3180      this.disposition = value;
3181      return this;
3182    }
3183
3184    /**
3185     * @return A human readable description of the status of the adjudication.
3186     */
3187    public String getDisposition() { 
3188      return this.disposition == null ? null : this.disposition.getValue();
3189    }
3190
3191    /**
3192     * @param value A human readable description of the status of the adjudication.
3193     */
3194    public CoverageEligibilityResponse setDisposition(String value) { 
3195      if (Utilities.noString(value))
3196        this.disposition = null;
3197      else {
3198        if (this.disposition == null)
3199          this.disposition = new StringType();
3200        this.disposition.setValue(value);
3201      }
3202      return this;
3203    }
3204
3205    /**
3206     * @return {@link #insurer} (The Insurer who issued the coverage in question and is the author of the response.)
3207     */
3208    public Reference getInsurer() { 
3209      if (this.insurer == null)
3210        if (Configuration.errorOnAutoCreate())
3211          throw new Error("Attempt to auto-create CoverageEligibilityResponse.insurer");
3212        else if (Configuration.doAutoCreate())
3213          this.insurer = new Reference(); // cc
3214      return this.insurer;
3215    }
3216
3217    public boolean hasInsurer() { 
3218      return this.insurer != null && !this.insurer.isEmpty();
3219    }
3220
3221    /**
3222     * @param value {@link #insurer} (The Insurer who issued the coverage in question and is the author of the response.)
3223     */
3224    public CoverageEligibilityResponse setInsurer(Reference value) { 
3225      this.insurer = value;
3226      return this;
3227    }
3228
3229    /**
3230     * @return {@link #insurance} (Financial instruments for reimbursement for the health care products and services.)
3231     */
3232    public List<InsuranceComponent> getInsurance() { 
3233      if (this.insurance == null)
3234        this.insurance = new ArrayList<InsuranceComponent>();
3235      return this.insurance;
3236    }
3237
3238    /**
3239     * @return Returns a reference to <code>this</code> for easy method chaining
3240     */
3241    public CoverageEligibilityResponse setInsurance(List<InsuranceComponent> theInsurance) { 
3242      this.insurance = theInsurance;
3243      return this;
3244    }
3245
3246    public boolean hasInsurance() { 
3247      if (this.insurance == null)
3248        return false;
3249      for (InsuranceComponent item : this.insurance)
3250        if (!item.isEmpty())
3251          return true;
3252      return false;
3253    }
3254
3255    public InsuranceComponent addInsurance() { //3
3256      InsuranceComponent t = new InsuranceComponent();
3257      if (this.insurance == null)
3258        this.insurance = new ArrayList<InsuranceComponent>();
3259      this.insurance.add(t);
3260      return t;
3261    }
3262
3263    public CoverageEligibilityResponse addInsurance(InsuranceComponent t) { //3
3264      if (t == null)
3265        return this;
3266      if (this.insurance == null)
3267        this.insurance = new ArrayList<InsuranceComponent>();
3268      this.insurance.add(t);
3269      return this;
3270    }
3271
3272    /**
3273     * @return The first repetition of repeating field {@link #insurance}, creating it if it does not already exist {3}
3274     */
3275    public InsuranceComponent getInsuranceFirstRep() { 
3276      if (getInsurance().isEmpty()) {
3277        addInsurance();
3278      }
3279      return getInsurance().get(0);
3280    }
3281
3282    /**
3283     * @return {@link #preAuthRef} (A reference from the Insurer to which these services pertain to be used on further communication and as proof that the request occurred.). This is the underlying object with id, value and extensions. The accessor "getPreAuthRef" gives direct access to the value
3284     */
3285    public StringType getPreAuthRefElement() { 
3286      if (this.preAuthRef == null)
3287        if (Configuration.errorOnAutoCreate())
3288          throw new Error("Attempt to auto-create CoverageEligibilityResponse.preAuthRef");
3289        else if (Configuration.doAutoCreate())
3290          this.preAuthRef = new StringType(); // bb
3291      return this.preAuthRef;
3292    }
3293
3294    public boolean hasPreAuthRefElement() { 
3295      return this.preAuthRef != null && !this.preAuthRef.isEmpty();
3296    }
3297
3298    public boolean hasPreAuthRef() { 
3299      return this.preAuthRef != null && !this.preAuthRef.isEmpty();
3300    }
3301
3302    /**
3303     * @param value {@link #preAuthRef} (A reference from the Insurer to which these services pertain to be used on further communication and as proof that the request occurred.). This is the underlying object with id, value and extensions. The accessor "getPreAuthRef" gives direct access to the value
3304     */
3305    public CoverageEligibilityResponse setPreAuthRefElement(StringType value) { 
3306      this.preAuthRef = value;
3307      return this;
3308    }
3309
3310    /**
3311     * @return A reference from the Insurer to which these services pertain to be used on further communication and as proof that the request occurred.
3312     */
3313    public String getPreAuthRef() { 
3314      return this.preAuthRef == null ? null : this.preAuthRef.getValue();
3315    }
3316
3317    /**
3318     * @param value A reference from the Insurer to which these services pertain to be used on further communication and as proof that the request occurred.
3319     */
3320    public CoverageEligibilityResponse setPreAuthRef(String value) { 
3321      if (Utilities.noString(value))
3322        this.preAuthRef = null;
3323      else {
3324        if (this.preAuthRef == null)
3325          this.preAuthRef = new StringType();
3326        this.preAuthRef.setValue(value);
3327      }
3328      return this;
3329    }
3330
3331    /**
3332     * @return {@link #form} (A code for the form to be used for printing the content.)
3333     */
3334    public CodeableConcept getForm() { 
3335      if (this.form == null)
3336        if (Configuration.errorOnAutoCreate())
3337          throw new Error("Attempt to auto-create CoverageEligibilityResponse.form");
3338        else if (Configuration.doAutoCreate())
3339          this.form = new CodeableConcept(); // cc
3340      return this.form;
3341    }
3342
3343    public boolean hasForm() { 
3344      return this.form != null && !this.form.isEmpty();
3345    }
3346
3347    /**
3348     * @param value {@link #form} (A code for the form to be used for printing the content.)
3349     */
3350    public CoverageEligibilityResponse setForm(CodeableConcept value) { 
3351      this.form = value;
3352      return this;
3353    }
3354
3355    /**
3356     * @return {@link #error} (Errors encountered during the processing of the request.)
3357     */
3358    public List<ErrorsComponent> getError() { 
3359      if (this.error == null)
3360        this.error = new ArrayList<ErrorsComponent>();
3361      return this.error;
3362    }
3363
3364    /**
3365     * @return Returns a reference to <code>this</code> for easy method chaining
3366     */
3367    public CoverageEligibilityResponse setError(List<ErrorsComponent> theError) { 
3368      this.error = theError;
3369      return this;
3370    }
3371
3372    public boolean hasError() { 
3373      if (this.error == null)
3374        return false;
3375      for (ErrorsComponent item : this.error)
3376        if (!item.isEmpty())
3377          return true;
3378      return false;
3379    }
3380
3381    public ErrorsComponent addError() { //3
3382      ErrorsComponent t = new ErrorsComponent();
3383      if (this.error == null)
3384        this.error = new ArrayList<ErrorsComponent>();
3385      this.error.add(t);
3386      return t;
3387    }
3388
3389    public CoverageEligibilityResponse addError(ErrorsComponent t) { //3
3390      if (t == null)
3391        return this;
3392      if (this.error == null)
3393        this.error = new ArrayList<ErrorsComponent>();
3394      this.error.add(t);
3395      return this;
3396    }
3397
3398    /**
3399     * @return The first repetition of repeating field {@link #error}, creating it if it does not already exist {3}
3400     */
3401    public ErrorsComponent getErrorFirstRep() { 
3402      if (getError().isEmpty()) {
3403        addError();
3404      }
3405      return getError().get(0);
3406    }
3407
3408      protected void listChildren(List<Property> children) {
3409        super.listChildren(children);
3410        children.add(new Property("identifier", "Identifier", "A unique identifier assigned to this coverage eligiblity request.", 0, java.lang.Integer.MAX_VALUE, identifier));
3411        children.add(new Property("status", "code", "The status of the resource instance.", 0, 1, status));
3412        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));
3413        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));
3414        children.add(new Property("event", "", "Information code for an event with a corresponding date or period.", 0, java.lang.Integer.MAX_VALUE, event));
3415        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));
3416        children.add(new Property("created", "dateTime", "The date this resource was created.", 0, 1, created));
3417        children.add(new Property("requestor", "Reference(Practitioner|PractitionerRole|Organization)", "The provider which is responsible for the request.", 0, 1, requestor));
3418        children.add(new Property("request", "Reference(CoverageEligibilityRequest)", "Reference to the original request resource.", 0, 1, request));
3419        children.add(new Property("outcome", "code", "The outcome of the request processing.", 0, 1, outcome));
3420        children.add(new Property("disposition", "string", "A human readable description of the status of the adjudication.", 0, 1, disposition));
3421        children.add(new Property("insurer", "Reference(Organization)", "The Insurer who issued the coverage in question and is the author of the response.", 0, 1, insurer));
3422        children.add(new Property("insurance", "", "Financial instruments for reimbursement for the health care products and services.", 0, java.lang.Integer.MAX_VALUE, insurance));
3423        children.add(new Property("preAuthRef", "string", "A reference from the Insurer to which these services pertain to be used on further communication and as proof that the request occurred.", 0, 1, preAuthRef));
3424        children.add(new Property("form", "CodeableConcept", "A code for the form to be used for printing the content.", 0, 1, form));
3425        children.add(new Property("error", "", "Errors encountered during the processing of the request.", 0, java.lang.Integer.MAX_VALUE, error));
3426      }
3427
3428      @Override
3429      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3430        switch (_hash) {
3431        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A unique identifier assigned to this coverage eligiblity request.", 0, java.lang.Integer.MAX_VALUE, identifier);
3432        case -892481550: /*status*/  return new Property("status", "code", "The status of the resource instance.", 0, 1, status);
3433        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);
3434        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);
3435        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);
3436        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);
3437        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);
3438        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);
3439        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);
3440        case 1028554472: /*created*/  return new Property("created", "dateTime", "The date this resource was created.", 0, 1, created);
3441        case 693934258: /*requestor*/  return new Property("requestor", "Reference(Practitioner|PractitionerRole|Organization)", "The provider which is responsible for the request.", 0, 1, requestor);
3442        case 1095692943: /*request*/  return new Property("request", "Reference(CoverageEligibilityRequest)", "Reference to the original request resource.", 0, 1, request);
3443        case -1106507950: /*outcome*/  return new Property("outcome", "code", "The outcome of the request processing.", 0, 1, outcome);
3444        case 583380919: /*disposition*/  return new Property("disposition", "string", "A human readable description of the status of the adjudication.", 0, 1, disposition);
3445        case 1957615864: /*insurer*/  return new Property("insurer", "Reference(Organization)", "The Insurer who issued the coverage in question and is the author of the response.", 0, 1, insurer);
3446        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);
3447        case 522246568: /*preAuthRef*/  return new Property("preAuthRef", "string", "A reference from the Insurer to which these services pertain to be used on further communication and as proof that the request occurred.", 0, 1, preAuthRef);
3448        case 3148996: /*form*/  return new Property("form", "CodeableConcept", "A code for the form to be used for printing the content.", 0, 1, form);
3449        case 96784904: /*error*/  return new Property("error", "", "Errors encountered during the processing of the request.", 0, java.lang.Integer.MAX_VALUE, error);
3450        default: return super.getNamedProperty(_hash, _name, _checkValid);
3451        }
3452
3453      }
3454
3455      @Override
3456      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3457        switch (hash) {
3458        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
3459        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<FinancialResourceStatusCodes>
3460        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : this.purpose.toArray(new Base[this.purpose.size()]); // Enumeration<EligibilityResponsePurpose>
3461        case -791418107: /*patient*/ return this.patient == null ? new Base[0] : new Base[] {this.patient}; // Reference
3462        case 96891546: /*event*/ return this.event == null ? new Base[0] : this.event.toArray(new Base[this.event.size()]); // CoverageEligibilityResponseEventComponent
3463        case 1379209295: /*serviced*/ return this.serviced == null ? new Base[0] : new Base[] {this.serviced}; // DataType
3464        case 1028554472: /*created*/ return this.created == null ? new Base[0] : new Base[] {this.created}; // DateTimeType
3465        case 693934258: /*requestor*/ return this.requestor == null ? new Base[0] : new Base[] {this.requestor}; // Reference
3466        case 1095692943: /*request*/ return this.request == null ? new Base[0] : new Base[] {this.request}; // Reference
3467        case -1106507950: /*outcome*/ return this.outcome == null ? new Base[0] : new Base[] {this.outcome}; // Enumeration<EligibilityOutcome>
3468        case 583380919: /*disposition*/ return this.disposition == null ? new Base[0] : new Base[] {this.disposition}; // StringType
3469        case 1957615864: /*insurer*/ return this.insurer == null ? new Base[0] : new Base[] {this.insurer}; // Reference
3470        case 73049818: /*insurance*/ return this.insurance == null ? new Base[0] : this.insurance.toArray(new Base[this.insurance.size()]); // InsuranceComponent
3471        case 522246568: /*preAuthRef*/ return this.preAuthRef == null ? new Base[0] : new Base[] {this.preAuthRef}; // StringType
3472        case 3148996: /*form*/ return this.form == null ? new Base[0] : new Base[] {this.form}; // CodeableConcept
3473        case 96784904: /*error*/ return this.error == null ? new Base[0] : this.error.toArray(new Base[this.error.size()]); // ErrorsComponent
3474        default: return super.getProperty(hash, name, checkValid);
3475        }
3476
3477      }
3478
3479      @Override
3480      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3481        switch (hash) {
3482        case -1618432855: // identifier
3483          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
3484          return value;
3485        case -892481550: // status
3486          value = new FinancialResourceStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
3487          this.status = (Enumeration) value; // Enumeration<FinancialResourceStatusCodes>
3488          return value;
3489        case -220463842: // purpose
3490          value = new EligibilityResponsePurposeEnumFactory().fromType(TypeConvertor.castToCode(value));
3491          this.getPurpose().add((Enumeration) value); // Enumeration<EligibilityResponsePurpose>
3492          return value;
3493        case -791418107: // patient
3494          this.patient = TypeConvertor.castToReference(value); // Reference
3495          return value;
3496        case 96891546: // event
3497          this.getEvent().add((CoverageEligibilityResponseEventComponent) value); // CoverageEligibilityResponseEventComponent
3498          return value;
3499        case 1379209295: // serviced
3500          this.serviced = TypeConvertor.castToType(value); // DataType
3501          return value;
3502        case 1028554472: // created
3503          this.created = TypeConvertor.castToDateTime(value); // DateTimeType
3504          return value;
3505        case 693934258: // requestor
3506          this.requestor = TypeConvertor.castToReference(value); // Reference
3507          return value;
3508        case 1095692943: // request
3509          this.request = TypeConvertor.castToReference(value); // Reference
3510          return value;
3511        case -1106507950: // outcome
3512          value = new EligibilityOutcomeEnumFactory().fromType(TypeConvertor.castToCode(value));
3513          this.outcome = (Enumeration) value; // Enumeration<EligibilityOutcome>
3514          return value;
3515        case 583380919: // disposition
3516          this.disposition = TypeConvertor.castToString(value); // StringType
3517          return value;
3518        case 1957615864: // insurer
3519          this.insurer = TypeConvertor.castToReference(value); // Reference
3520          return value;
3521        case 73049818: // insurance
3522          this.getInsurance().add((InsuranceComponent) value); // InsuranceComponent
3523          return value;
3524        case 522246568: // preAuthRef
3525          this.preAuthRef = TypeConvertor.castToString(value); // StringType
3526          return value;
3527        case 3148996: // form
3528          this.form = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3529          return value;
3530        case 96784904: // error
3531          this.getError().add((ErrorsComponent) value); // ErrorsComponent
3532          return value;
3533        default: return super.setProperty(hash, name, value);
3534        }
3535
3536      }
3537
3538      @Override
3539      public Base setProperty(String name, Base value) throws FHIRException {
3540        if (name.equals("identifier")) {
3541          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
3542        } else if (name.equals("status")) {
3543          value = new FinancialResourceStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
3544          this.status = (Enumeration) value; // Enumeration<FinancialResourceStatusCodes>
3545        } else if (name.equals("purpose")) {
3546          value = new EligibilityResponsePurposeEnumFactory().fromType(TypeConvertor.castToCode(value));
3547          this.getPurpose().add((Enumeration) value);
3548        } else if (name.equals("patient")) {
3549          this.patient = TypeConvertor.castToReference(value); // Reference
3550        } else if (name.equals("event")) {
3551          this.getEvent().add((CoverageEligibilityResponseEventComponent) value);
3552        } else if (name.equals("serviced[x]")) {
3553          this.serviced = TypeConvertor.castToType(value); // DataType
3554        } else if (name.equals("created")) {
3555          this.created = TypeConvertor.castToDateTime(value); // DateTimeType
3556        } else if (name.equals("requestor")) {
3557          this.requestor = TypeConvertor.castToReference(value); // Reference
3558        } else if (name.equals("request")) {
3559          this.request = TypeConvertor.castToReference(value); // Reference
3560        } else if (name.equals("outcome")) {
3561          value = new EligibilityOutcomeEnumFactory().fromType(TypeConvertor.castToCode(value));
3562          this.outcome = (Enumeration) value; // Enumeration<EligibilityOutcome>
3563        } else if (name.equals("disposition")) {
3564          this.disposition = TypeConvertor.castToString(value); // StringType
3565        } else if (name.equals("insurer")) {
3566          this.insurer = TypeConvertor.castToReference(value); // Reference
3567        } else if (name.equals("insurance")) {
3568          this.getInsurance().add((InsuranceComponent) value);
3569        } else if (name.equals("preAuthRef")) {
3570          this.preAuthRef = TypeConvertor.castToString(value); // StringType
3571        } else if (name.equals("form")) {
3572          this.form = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
3573        } else if (name.equals("error")) {
3574          this.getError().add((ErrorsComponent) value);
3575        } else
3576          return super.setProperty(name, value);
3577        return value;
3578      }
3579
3580  @Override
3581  public void removeChild(String name, Base value) throws FHIRException {
3582        if (name.equals("identifier")) {
3583          this.getIdentifier().remove(value);
3584        } else if (name.equals("status")) {
3585          value = new FinancialResourceStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
3586          this.status = (Enumeration) value; // Enumeration<FinancialResourceStatusCodes>
3587        } else if (name.equals("purpose")) {
3588          value = new EligibilityResponsePurposeEnumFactory().fromType(TypeConvertor.castToCode(value));
3589          this.getPurpose().remove((Enumeration) value);
3590        } else if (name.equals("patient")) {
3591          this.patient = null;
3592        } else if (name.equals("event")) {
3593          this.getEvent().remove((CoverageEligibilityResponseEventComponent) value);
3594        } else if (name.equals("serviced[x]")) {
3595          this.serviced = null;
3596        } else if (name.equals("created")) {
3597          this.created = null;
3598        } else if (name.equals("requestor")) {
3599          this.requestor = null;
3600        } else if (name.equals("request")) {
3601          this.request = null;
3602        } else if (name.equals("outcome")) {
3603          value = new EligibilityOutcomeEnumFactory().fromType(TypeConvertor.castToCode(value));
3604          this.outcome = (Enumeration) value; // Enumeration<EligibilityOutcome>
3605        } else if (name.equals("disposition")) {
3606          this.disposition = null;
3607        } else if (name.equals("insurer")) {
3608          this.insurer = null;
3609        } else if (name.equals("insurance")) {
3610          this.getInsurance().remove((InsuranceComponent) value);
3611        } else if (name.equals("preAuthRef")) {
3612          this.preAuthRef = null;
3613        } else if (name.equals("form")) {
3614          this.form = null;
3615        } else if (name.equals("error")) {
3616          this.getError().remove((ErrorsComponent) value);
3617        } else
3618          super.removeChild(name, value);
3619        
3620      }
3621
3622      @Override
3623      public Base makeProperty(int hash, String name) throws FHIRException {
3624        switch (hash) {
3625        case -1618432855:  return addIdentifier(); 
3626        case -892481550:  return getStatusElement();
3627        case -220463842:  return addPurposeElement();
3628        case -791418107:  return getPatient();
3629        case 96891546:  return addEvent(); 
3630        case -1927922223:  return getServiced();
3631        case 1379209295:  return getServiced();
3632        case 1028554472:  return getCreatedElement();
3633        case 693934258:  return getRequestor();
3634        case 1095692943:  return getRequest();
3635        case -1106507950:  return getOutcomeElement();
3636        case 583380919:  return getDispositionElement();
3637        case 1957615864:  return getInsurer();
3638        case 73049818:  return addInsurance(); 
3639        case 522246568:  return getPreAuthRefElement();
3640        case 3148996:  return getForm();
3641        case 96784904:  return addError(); 
3642        default: return super.makeProperty(hash, name);
3643        }
3644
3645      }
3646
3647      @Override
3648      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3649        switch (hash) {
3650        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
3651        case -892481550: /*status*/ return new String[] {"code"};
3652        case -220463842: /*purpose*/ return new String[] {"code"};
3653        case -791418107: /*patient*/ return new String[] {"Reference"};
3654        case 96891546: /*event*/ return new String[] {};
3655        case 1379209295: /*serviced*/ return new String[] {"date", "Period"};
3656        case 1028554472: /*created*/ return new String[] {"dateTime"};
3657        case 693934258: /*requestor*/ return new String[] {"Reference"};
3658        case 1095692943: /*request*/ return new String[] {"Reference"};
3659        case -1106507950: /*outcome*/ return new String[] {"code"};
3660        case 583380919: /*disposition*/ return new String[] {"string"};
3661        case 1957615864: /*insurer*/ return new String[] {"Reference"};
3662        case 73049818: /*insurance*/ return new String[] {};
3663        case 522246568: /*preAuthRef*/ return new String[] {"string"};
3664        case 3148996: /*form*/ return new String[] {"CodeableConcept"};
3665        case 96784904: /*error*/ return new String[] {};
3666        default: return super.getTypesForProperty(hash, name);
3667        }
3668
3669      }
3670
3671      @Override
3672      public Base addChild(String name) throws FHIRException {
3673        if (name.equals("identifier")) {
3674          return addIdentifier();
3675        }
3676        else if (name.equals("status")) {
3677          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityResponse.status");
3678        }
3679        else if (name.equals("purpose")) {
3680          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityResponse.purpose");
3681        }
3682        else if (name.equals("patient")) {
3683          this.patient = new Reference();
3684          return this.patient;
3685        }
3686        else if (name.equals("event")) {
3687          return addEvent();
3688        }
3689        else if (name.equals("servicedDate")) {
3690          this.serviced = new DateType();
3691          return this.serviced;
3692        }
3693        else if (name.equals("servicedPeriod")) {
3694          this.serviced = new Period();
3695          return this.serviced;
3696        }
3697        else if (name.equals("created")) {
3698          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityResponse.created");
3699        }
3700        else if (name.equals("requestor")) {
3701          this.requestor = new Reference();
3702          return this.requestor;
3703        }
3704        else if (name.equals("request")) {
3705          this.request = new Reference();
3706          return this.request;
3707        }
3708        else if (name.equals("outcome")) {
3709          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityResponse.outcome");
3710        }
3711        else if (name.equals("disposition")) {
3712          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityResponse.disposition");
3713        }
3714        else if (name.equals("insurer")) {
3715          this.insurer = new Reference();
3716          return this.insurer;
3717        }
3718        else if (name.equals("insurance")) {
3719          return addInsurance();
3720        }
3721        else if (name.equals("preAuthRef")) {
3722          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityResponse.preAuthRef");
3723        }
3724        else if (name.equals("form")) {
3725          this.form = new CodeableConcept();
3726          return this.form;
3727        }
3728        else if (name.equals("error")) {
3729          return addError();
3730        }
3731        else
3732          return super.addChild(name);
3733      }
3734
3735  public String fhirType() {
3736    return "CoverageEligibilityResponse";
3737
3738  }
3739
3740      public CoverageEligibilityResponse copy() {
3741        CoverageEligibilityResponse dst = new CoverageEligibilityResponse();
3742        copyValues(dst);
3743        return dst;
3744      }
3745
3746      public void copyValues(CoverageEligibilityResponse dst) {
3747        super.copyValues(dst);
3748        if (identifier != null) {
3749          dst.identifier = new ArrayList<Identifier>();
3750          for (Identifier i : identifier)
3751            dst.identifier.add(i.copy());
3752        };
3753        dst.status = status == null ? null : status.copy();
3754        if (purpose != null) {
3755          dst.purpose = new ArrayList<Enumeration<EligibilityResponsePurpose>>();
3756          for (Enumeration<EligibilityResponsePurpose> i : purpose)
3757            dst.purpose.add(i.copy());
3758        };
3759        dst.patient = patient == null ? null : patient.copy();
3760        if (event != null) {
3761          dst.event = new ArrayList<CoverageEligibilityResponseEventComponent>();
3762          for (CoverageEligibilityResponseEventComponent i : event)
3763            dst.event.add(i.copy());
3764        };
3765        dst.serviced = serviced == null ? null : serviced.copy();
3766        dst.created = created == null ? null : created.copy();
3767        dst.requestor = requestor == null ? null : requestor.copy();
3768        dst.request = request == null ? null : request.copy();
3769        dst.outcome = outcome == null ? null : outcome.copy();
3770        dst.disposition = disposition == null ? null : disposition.copy();
3771        dst.insurer = insurer == null ? null : insurer.copy();
3772        if (insurance != null) {
3773          dst.insurance = new ArrayList<InsuranceComponent>();
3774          for (InsuranceComponent i : insurance)
3775            dst.insurance.add(i.copy());
3776        };
3777        dst.preAuthRef = preAuthRef == null ? null : preAuthRef.copy();
3778        dst.form = form == null ? null : form.copy();
3779        if (error != null) {
3780          dst.error = new ArrayList<ErrorsComponent>();
3781          for (ErrorsComponent i : error)
3782            dst.error.add(i.copy());
3783        };
3784      }
3785
3786      protected CoverageEligibilityResponse typedCopy() {
3787        return copy();
3788      }
3789
3790      @Override
3791      public boolean equalsDeep(Base other_) {
3792        if (!super.equalsDeep(other_))
3793          return false;
3794        if (!(other_ instanceof CoverageEligibilityResponse))
3795          return false;
3796        CoverageEligibilityResponse o = (CoverageEligibilityResponse) other_;
3797        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(purpose, o.purpose, true)
3798           && compareDeep(patient, o.patient, true) && compareDeep(event, o.event, true) && compareDeep(serviced, o.serviced, true)
3799           && compareDeep(created, o.created, true) && compareDeep(requestor, o.requestor, true) && compareDeep(request, o.request, true)
3800           && compareDeep(outcome, o.outcome, true) && compareDeep(disposition, o.disposition, true) && compareDeep(insurer, o.insurer, true)
3801           && compareDeep(insurance, o.insurance, true) && compareDeep(preAuthRef, o.preAuthRef, true) && compareDeep(form, o.form, true)
3802           && compareDeep(error, o.error, true);
3803      }
3804
3805      @Override
3806      public boolean equalsShallow(Base other_) {
3807        if (!super.equalsShallow(other_))
3808          return false;
3809        if (!(other_ instanceof CoverageEligibilityResponse))
3810          return false;
3811        CoverageEligibilityResponse o = (CoverageEligibilityResponse) other_;
3812        return compareValues(status, o.status, true) && compareValues(purpose, o.purpose, true) && compareValues(created, o.created, true)
3813           && compareValues(outcome, o.outcome, true) && compareValues(disposition, o.disposition, true) && compareValues(preAuthRef, o.preAuthRef, true)
3814          ;
3815      }
3816
3817      public boolean isEmpty() {
3818        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, purpose
3819          , patient, event, serviced, created, requestor, request, outcome, disposition
3820          , insurer, insurance, preAuthRef, form, error);
3821      }
3822
3823  @Override
3824  public ResourceType getResourceType() {
3825    return ResourceType.CoverageEligibilityResponse;
3826   }
3827
3828 /**
3829   * Search parameter: <b>created</b>
3830   * <p>
3831   * Description: <b>The creation date</b><br>
3832   * Type: <b>date</b><br>
3833   * Path: <b>CoverageEligibilityResponse.created</b><br>
3834   * </p>
3835   */
3836  @SearchParamDefinition(name="created", path="CoverageEligibilityResponse.created", description="The creation date", type="date" )
3837  public static final String SP_CREATED = "created";
3838 /**
3839   * <b>Fluent Client</b> search parameter constant for <b>created</b>
3840   * <p>
3841   * Description: <b>The creation date</b><br>
3842   * Type: <b>date</b><br>
3843   * Path: <b>CoverageEligibilityResponse.created</b><br>
3844   * </p>
3845   */
3846  public static final ca.uhn.fhir.rest.gclient.DateClientParam CREATED = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_CREATED);
3847
3848 /**
3849   * Search parameter: <b>disposition</b>
3850   * <p>
3851   * Description: <b>The contents of the disposition message</b><br>
3852   * Type: <b>string</b><br>
3853   * Path: <b>CoverageEligibilityResponse.disposition</b><br>
3854   * </p>
3855   */
3856  @SearchParamDefinition(name="disposition", path="CoverageEligibilityResponse.disposition", description="The contents of the disposition message", type="string" )
3857  public static final String SP_DISPOSITION = "disposition";
3858 /**
3859   * <b>Fluent Client</b> search parameter constant for <b>disposition</b>
3860   * <p>
3861   * Description: <b>The contents of the disposition message</b><br>
3862   * Type: <b>string</b><br>
3863   * Path: <b>CoverageEligibilityResponse.disposition</b><br>
3864   * </p>
3865   */
3866  public static final ca.uhn.fhir.rest.gclient.StringClientParam DISPOSITION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DISPOSITION);
3867
3868 /**
3869   * Search parameter: <b>insurer</b>
3870   * <p>
3871   * Description: <b>The organization which generated this resource</b><br>
3872   * Type: <b>reference</b><br>
3873   * Path: <b>CoverageEligibilityResponse.insurer</b><br>
3874   * </p>
3875   */
3876  @SearchParamDefinition(name="insurer", path="CoverageEligibilityResponse.insurer", description="The organization which generated this resource", type="reference", target={Organization.class } )
3877  public static final String SP_INSURER = "insurer";
3878 /**
3879   * <b>Fluent Client</b> search parameter constant for <b>insurer</b>
3880   * <p>
3881   * Description: <b>The organization which generated this resource</b><br>
3882   * Type: <b>reference</b><br>
3883   * Path: <b>CoverageEligibilityResponse.insurer</b><br>
3884   * </p>
3885   */
3886  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INSURER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INSURER);
3887
3888/**
3889   * Constant for fluent queries to be used to add include statements. Specifies
3890   * the path value of "<b>CoverageEligibilityResponse:insurer</b>".
3891   */
3892  public static final ca.uhn.fhir.model.api.Include INCLUDE_INSURER = new ca.uhn.fhir.model.api.Include("CoverageEligibilityResponse:insurer").toLocked();
3893
3894 /**
3895   * Search parameter: <b>outcome</b>
3896   * <p>
3897   * Description: <b>The processing outcome</b><br>
3898   * Type: <b>token</b><br>
3899   * Path: <b>CoverageEligibilityResponse.outcome</b><br>
3900   * </p>
3901   */
3902  @SearchParamDefinition(name="outcome", path="CoverageEligibilityResponse.outcome", description="The processing outcome", type="token" )
3903  public static final String SP_OUTCOME = "outcome";
3904 /**
3905   * <b>Fluent Client</b> search parameter constant for <b>outcome</b>
3906   * <p>
3907   * Description: <b>The processing outcome</b><br>
3908   * Type: <b>token</b><br>
3909   * Path: <b>CoverageEligibilityResponse.outcome</b><br>
3910   * </p>
3911   */
3912  public static final ca.uhn.fhir.rest.gclient.TokenClientParam OUTCOME = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_OUTCOME);
3913
3914 /**
3915   * Search parameter: <b>request</b>
3916   * <p>
3917   * Description: <b>The EligibilityRequest reference</b><br>
3918   * Type: <b>reference</b><br>
3919   * Path: <b>CoverageEligibilityResponse.request</b><br>
3920   * </p>
3921   */
3922  @SearchParamDefinition(name="request", path="CoverageEligibilityResponse.request", description="The EligibilityRequest reference", type="reference", target={CoverageEligibilityRequest.class } )
3923  public static final String SP_REQUEST = "request";
3924 /**
3925   * <b>Fluent Client</b> search parameter constant for <b>request</b>
3926   * <p>
3927   * Description: <b>The EligibilityRequest reference</b><br>
3928   * Type: <b>reference</b><br>
3929   * Path: <b>CoverageEligibilityResponse.request</b><br>
3930   * </p>
3931   */
3932  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REQUEST = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REQUEST);
3933
3934/**
3935   * Constant for fluent queries to be used to add include statements. Specifies
3936   * the path value of "<b>CoverageEligibilityResponse:request</b>".
3937   */
3938  public static final ca.uhn.fhir.model.api.Include INCLUDE_REQUEST = new ca.uhn.fhir.model.api.Include("CoverageEligibilityResponse:request").toLocked();
3939
3940 /**
3941   * Search parameter: <b>requestor</b>
3942   * <p>
3943   * Description: <b>The EligibilityRequest provider</b><br>
3944   * Type: <b>reference</b><br>
3945   * Path: <b>CoverageEligibilityResponse.requestor</b><br>
3946   * </p>
3947   */
3948  @SearchParamDefinition(name="requestor", path="CoverageEligibilityResponse.requestor", description="The EligibilityRequest 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 } )
3949  public static final String SP_REQUESTOR = "requestor";
3950 /**
3951   * <b>Fluent Client</b> search parameter constant for <b>requestor</b>
3952   * <p>
3953   * Description: <b>The EligibilityRequest provider</b><br>
3954   * Type: <b>reference</b><br>
3955   * Path: <b>CoverageEligibilityResponse.requestor</b><br>
3956   * </p>
3957   */
3958  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REQUESTOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REQUESTOR);
3959
3960/**
3961   * Constant for fluent queries to be used to add include statements. Specifies
3962   * the path value of "<b>CoverageEligibilityResponse:requestor</b>".
3963   */
3964  public static final ca.uhn.fhir.model.api.Include INCLUDE_REQUESTOR = new ca.uhn.fhir.model.api.Include("CoverageEligibilityResponse:requestor").toLocked();
3965
3966 /**
3967   * Search parameter: <b>status</b>
3968   * <p>
3969   * Description: <b>The EligibilityRequest status</b><br>
3970   * Type: <b>token</b><br>
3971   * Path: <b>CoverageEligibilityResponse.status</b><br>
3972   * </p>
3973   */
3974  @SearchParamDefinition(name="status", path="CoverageEligibilityResponse.status", description="The EligibilityRequest status", type="token" )
3975  public static final String SP_STATUS = "status";
3976 /**
3977   * <b>Fluent Client</b> search parameter constant for <b>status</b>
3978   * <p>
3979   * Description: <b>The EligibilityRequest status</b><br>
3980   * Type: <b>token</b><br>
3981   * Path: <b>CoverageEligibilityResponse.status</b><br>
3982   * </p>
3983   */
3984  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
3985
3986 /**
3987   * Search parameter: <b>identifier</b>
3988   * <p>
3989   * Description: <b>Multiple Resources: 
3990
3991* [Account](account.html): Account number
3992* [AdverseEvent](adverseevent.html): Business identifier for the event
3993* [AllergyIntolerance](allergyintolerance.html): External ids for this item
3994* [Appointment](appointment.html): An Identifier of the Appointment
3995* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
3996* [Basic](basic.html): Business identifier
3997* [BodyStructure](bodystructure.html): Bodystructure identifier
3998* [CarePlan](careplan.html): External Ids for this plan
3999* [CareTeam](careteam.html): External Ids for this team
4000* [ChargeItem](chargeitem.html): Business Identifier for item
4001* [Claim](claim.html): The primary identifier of the financial resource
4002* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
4003* [ClinicalImpression](clinicalimpression.html): Business identifier
4004* [Communication](communication.html): Unique identifier
4005* [CommunicationRequest](communicationrequest.html): Unique identifier
4006* [Composition](composition.html): Version-independent identifier for the Composition
4007* [Condition](condition.html): A unique identifier of the condition record
4008* [Consent](consent.html): Identifier for this record (external references)
4009* [Contract](contract.html): The identity of the contract
4010* [Coverage](coverage.html): The primary identifier of the insured and the coverage
4011* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
4012* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
4013* [DetectedIssue](detectedissue.html): Unique id for the detected issue
4014* [DeviceRequest](devicerequest.html): Business identifier for request/order
4015* [DeviceUsage](deviceusage.html): Search by identifier
4016* [DiagnosticReport](diagnosticreport.html): An identifier for the report
4017* [DocumentReference](documentreference.html): Identifier of the attachment binary
4018* [Encounter](encounter.html): Identifier(s) by which this encounter is known
4019* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
4020* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
4021* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
4022* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
4023* [Flag](flag.html): Business identifier
4024* [Goal](goal.html): External Ids for this goal
4025* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
4026* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
4027* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
4028* [Immunization](immunization.html): Business identifier
4029* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
4030* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
4031* [Invoice](invoice.html): Business Identifier for item
4032* [List](list.html): Business identifier
4033* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
4034* [Medication](medication.html): Returns medications with this external identifier
4035* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
4036* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
4037* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
4038* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
4039* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
4040* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
4041* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
4042* [Observation](observation.html): The unique id for a particular observation
4043* [Person](person.html): A person Identifier
4044* [Procedure](procedure.html): A unique identifier for a procedure
4045* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
4046* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
4047* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
4048* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
4049* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
4050* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
4051* [Specimen](specimen.html): The unique identifier associated with the specimen
4052* [SupplyDelivery](supplydelivery.html): External identifier
4053* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
4054* [Task](task.html): Search for a task instance by its business identifier
4055* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
4056</b><br>
4057   * Type: <b>token</b><br>
4058   * 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>
4059   * </p>
4060   */
4061  @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" )
4062  public static final String SP_IDENTIFIER = "identifier";
4063 /**
4064   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
4065   * <p>
4066   * Description: <b>Multiple Resources: 
4067
4068* [Account](account.html): Account number
4069* [AdverseEvent](adverseevent.html): Business identifier for the event
4070* [AllergyIntolerance](allergyintolerance.html): External ids for this item
4071* [Appointment](appointment.html): An Identifier of the Appointment
4072* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
4073* [Basic](basic.html): Business identifier
4074* [BodyStructure](bodystructure.html): Bodystructure identifier
4075* [CarePlan](careplan.html): External Ids for this plan
4076* [CareTeam](careteam.html): External Ids for this team
4077* [ChargeItem](chargeitem.html): Business Identifier for item
4078* [Claim](claim.html): The primary identifier of the financial resource
4079* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
4080* [ClinicalImpression](clinicalimpression.html): Business identifier
4081* [Communication](communication.html): Unique identifier
4082* [CommunicationRequest](communicationrequest.html): Unique identifier
4083* [Composition](composition.html): Version-independent identifier for the Composition
4084* [Condition](condition.html): A unique identifier of the condition record
4085* [Consent](consent.html): Identifier for this record (external references)
4086* [Contract](contract.html): The identity of the contract
4087* [Coverage](coverage.html): The primary identifier of the insured and the coverage
4088* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
4089* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
4090* [DetectedIssue](detectedissue.html): Unique id for the detected issue
4091* [DeviceRequest](devicerequest.html): Business identifier for request/order
4092* [DeviceUsage](deviceusage.html): Search by identifier
4093* [DiagnosticReport](diagnosticreport.html): An identifier for the report
4094* [DocumentReference](documentreference.html): Identifier of the attachment binary
4095* [Encounter](encounter.html): Identifier(s) by which this encounter is known
4096* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
4097* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
4098* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
4099* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
4100* [Flag](flag.html): Business identifier
4101* [Goal](goal.html): External Ids for this goal
4102* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
4103* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
4104* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
4105* [Immunization](immunization.html): Business identifier
4106* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
4107* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
4108* [Invoice](invoice.html): Business Identifier for item
4109* [List](list.html): Business identifier
4110* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
4111* [Medication](medication.html): Returns medications with this external identifier
4112* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
4113* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
4114* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
4115* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
4116* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
4117* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
4118* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
4119* [Observation](observation.html): The unique id for a particular observation
4120* [Person](person.html): A person Identifier
4121* [Procedure](procedure.html): A unique identifier for a procedure
4122* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
4123* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
4124* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
4125* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
4126* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
4127* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
4128* [Specimen](specimen.html): The unique identifier associated with the specimen
4129* [SupplyDelivery](supplydelivery.html): External identifier
4130* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
4131* [Task](task.html): Search for a task instance by its business identifier
4132* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
4133</b><br>
4134   * Type: <b>token</b><br>
4135   * 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>
4136   * </p>
4137   */
4138  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
4139
4140 /**
4141   * Search parameter: <b>patient</b>
4142   * <p>
4143   * Description: <b>Multiple Resources: 
4144
4145* [Account](account.html): The entity that caused the expenses
4146* [AdverseEvent](adverseevent.html): Subject impacted by event
4147* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
4148* [Appointment](appointment.html): One of the individuals of the appointment is this patient
4149* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
4150* [AuditEvent](auditevent.html): Where the activity involved patient data
4151* [Basic](basic.html): Identifies the focus of this resource
4152* [BodyStructure](bodystructure.html): Who this is about
4153* [CarePlan](careplan.html): Who the care plan is for
4154* [CareTeam](careteam.html): Who care team is for
4155* [ChargeItem](chargeitem.html): Individual service was done for/to
4156* [Claim](claim.html): Patient receiving the products or services
4157* [ClaimResponse](claimresponse.html): The subject of care
4158* [ClinicalImpression](clinicalimpression.html): Patient assessed
4159* [Communication](communication.html): Focus of message
4160* [CommunicationRequest](communicationrequest.html): Focus of message
4161* [Composition](composition.html): Who and/or what the composition is about
4162* [Condition](condition.html): Who has the condition?
4163* [Consent](consent.html): Who the consent applies to
4164* [Contract](contract.html): The identity of the subject of the contract (if a patient)
4165* [Coverage](coverage.html): Retrieve coverages for a patient
4166* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
4167* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
4168* [DetectedIssue](detectedissue.html): Associated patient
4169* [DeviceRequest](devicerequest.html): Individual the service is ordered for
4170* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
4171* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
4172* [DocumentReference](documentreference.html): Who/what is the subject of the document
4173* [Encounter](encounter.html): The patient present at the encounter
4174* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
4175* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
4176* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
4177* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
4178* [Flag](flag.html): The identity of a subject to list flags for
4179* [Goal](goal.html): Who this goal is intended for
4180* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
4181* [ImagingSelection](imagingselection.html): Who the study is about
4182* [ImagingStudy](imagingstudy.html): Who the study is about
4183* [Immunization](immunization.html): The patient for the vaccination record
4184* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
4185* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
4186* [Invoice](invoice.html): Recipient(s) of goods and services
4187* [List](list.html): If all resources have the same subject
4188* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
4189* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
4190* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
4191* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
4192* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
4193* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
4194* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
4195* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
4196* [Observation](observation.html): The subject that the observation is about (if patient)
4197* [Person](person.html): The Person links to this Patient
4198* [Procedure](procedure.html): Search by subject - a patient
4199* [Provenance](provenance.html): Where the activity involved patient data
4200* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
4201* [RelatedPerson](relatedperson.html): The patient this related person is related to
4202* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
4203* [ResearchSubject](researchsubject.html): Who or what is part of study
4204* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
4205* [ServiceRequest](servicerequest.html): Search by subject - a patient
4206* [Specimen](specimen.html): The patient the specimen comes from
4207* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
4208* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
4209* [Task](task.html): Search by patient
4210* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
4211</b><br>
4212   * Type: <b>reference</b><br>
4213   * 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>
4214   * </p>
4215   */
4216  @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 } )
4217  public static final String SP_PATIENT = "patient";
4218 /**
4219   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
4220   * <p>
4221   * Description: <b>Multiple Resources: 
4222
4223* [Account](account.html): The entity that caused the expenses
4224* [AdverseEvent](adverseevent.html): Subject impacted by event
4225* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
4226* [Appointment](appointment.html): One of the individuals of the appointment is this patient
4227* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
4228* [AuditEvent](auditevent.html): Where the activity involved patient data
4229* [Basic](basic.html): Identifies the focus of this resource
4230* [BodyStructure](bodystructure.html): Who this is about
4231* [CarePlan](careplan.html): Who the care plan is for
4232* [CareTeam](careteam.html): Who care team is for
4233* [ChargeItem](chargeitem.html): Individual service was done for/to
4234* [Claim](claim.html): Patient receiving the products or services
4235* [ClaimResponse](claimresponse.html): The subject of care
4236* [ClinicalImpression](clinicalimpression.html): Patient assessed
4237* [Communication](communication.html): Focus of message
4238* [CommunicationRequest](communicationrequest.html): Focus of message
4239* [Composition](composition.html): Who and/or what the composition is about
4240* [Condition](condition.html): Who has the condition?
4241* [Consent](consent.html): Who the consent applies to
4242* [Contract](contract.html): The identity of the subject of the contract (if a patient)
4243* [Coverage](coverage.html): Retrieve coverages for a patient
4244* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
4245* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
4246* [DetectedIssue](detectedissue.html): Associated patient
4247* [DeviceRequest](devicerequest.html): Individual the service is ordered for
4248* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
4249* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
4250* [DocumentReference](documentreference.html): Who/what is the subject of the document
4251* [Encounter](encounter.html): The patient present at the encounter
4252* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
4253* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
4254* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
4255* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
4256* [Flag](flag.html): The identity of a subject to list flags for
4257* [Goal](goal.html): Who this goal is intended for
4258* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
4259* [ImagingSelection](imagingselection.html): Who the study is about
4260* [ImagingStudy](imagingstudy.html): Who the study is about
4261* [Immunization](immunization.html): The patient for the vaccination record
4262* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
4263* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
4264* [Invoice](invoice.html): Recipient(s) of goods and services
4265* [List](list.html): If all resources have the same subject
4266* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
4267* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
4268* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
4269* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
4270* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
4271* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
4272* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
4273* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
4274* [Observation](observation.html): The subject that the observation is about (if patient)
4275* [Person](person.html): The Person links to this Patient
4276* [Procedure](procedure.html): Search by subject - a patient
4277* [Provenance](provenance.html): Where the activity involved patient data
4278* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
4279* [RelatedPerson](relatedperson.html): The patient this related person is related to
4280* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
4281* [ResearchSubject](researchsubject.html): Who or what is part of study
4282* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
4283* [ServiceRequest](servicerequest.html): Search by subject - a patient
4284* [Specimen](specimen.html): The patient the specimen comes from
4285* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
4286* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
4287* [Task](task.html): Search by patient
4288* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
4289</b><br>
4290   * Type: <b>reference</b><br>
4291   * 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>
4292   * </p>
4293   */
4294  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
4295
4296/**
4297   * Constant for fluent queries to be used to add include statements. Specifies
4298   * the path value of "<b>CoverageEligibilityResponse:patient</b>".
4299   */
4300  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("CoverageEligibilityResponse:patient").toLocked();
4301
4302
4303}
4304