001package org.hl7.fhir.r4.model;
002
003/*-
004 * #%L
005 * org.hl7.fhir.r4
006 * %%
007 * Copyright (C) 2014 - 2019 Health Level 7
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 * 
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 * 
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023/*
024  Copyright (c) 2011+, HL7, Inc.
025  All rights reserved.
026  
027  Redistribution and use in source and binary forms, with or without modification, 
028  are permitted provided that the following conditions are met:
029  
030   * Redistributions of source code must retain the above copyright notice, this 
031     list of conditions and the following disclaimer.
032   * Redistributions in binary form must reproduce the above copyright notice, 
033     this list of conditions and the following disclaimer in the documentation 
034     and/or other materials provided with the distribution.
035   * Neither the name of HL7 nor the names of its contributors may be used to 
036     endorse or promote products derived from this software without specific 
037     prior written permission.
038  
039  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
040  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
041  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
042  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
043  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
044  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
045  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
046  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
047  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
048  POSSIBILITY OF SUCH DAMAGE.
049  
050*/
051
052// Generated on Thu, Dec 13, 2018 14:07+1100 for FHIR v4.0.0
053import java.util.ArrayList;
054import java.util.List;
055
056import org.hl7.fhir.exceptions.FHIRException;
057import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
058import org.hl7.fhir.utilities.Utilities;
059
060import ca.uhn.fhir.model.api.annotation.Block;
061import ca.uhn.fhir.model.api.annotation.Child;
062import ca.uhn.fhir.model.api.annotation.Description;
063import ca.uhn.fhir.model.api.annotation.ResourceDef;
064import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
065/**
066 * A financial tool for tracking value accrued for a particular purpose.  In the healthcare field, used to track charges for a patient, cost centers, etc.
067 */
068@ResourceDef(name="Account", profile="http://hl7.org/fhir/StructureDefinition/Account")
069public class Account extends DomainResource {
070
071    public enum AccountStatus {
072        /**
073         * This account is active and may be used.
074         */
075        ACTIVE, 
076        /**
077         * This account is inactive and should not be used to track financial information.
078         */
079        INACTIVE, 
080        /**
081         * This instance should not have been part of this patient's medical record.
082         */
083        ENTEREDINERROR, 
084        /**
085         * This account is on hold.
086         */
087        ONHOLD, 
088        /**
089         * The account status is unknown.
090         */
091        UNKNOWN, 
092        /**
093         * added to help the parsers with the generic types
094         */
095        NULL;
096        public static AccountStatus fromCode(String codeString) throws FHIRException {
097            if (codeString == null || "".equals(codeString))
098                return null;
099        if ("active".equals(codeString))
100          return ACTIVE;
101        if ("inactive".equals(codeString))
102          return INACTIVE;
103        if ("entered-in-error".equals(codeString))
104          return ENTEREDINERROR;
105        if ("on-hold".equals(codeString))
106          return ONHOLD;
107        if ("unknown".equals(codeString))
108          return UNKNOWN;
109        if (Configuration.isAcceptInvalidEnums())
110          return null;
111        else
112          throw new FHIRException("Unknown AccountStatus code '"+codeString+"'");
113        }
114        public String toCode() {
115          switch (this) {
116            case ACTIVE: return "active";
117            case INACTIVE: return "inactive";
118            case ENTEREDINERROR: return "entered-in-error";
119            case ONHOLD: return "on-hold";
120            case UNKNOWN: return "unknown";
121            default: return "?";
122          }
123        }
124        public String getSystem() {
125          switch (this) {
126            case ACTIVE: return "http://hl7.org/fhir/account-status";
127            case INACTIVE: return "http://hl7.org/fhir/account-status";
128            case ENTEREDINERROR: return "http://hl7.org/fhir/account-status";
129            case ONHOLD: return "http://hl7.org/fhir/account-status";
130            case UNKNOWN: return "http://hl7.org/fhir/account-status";
131            default: return "?";
132          }
133        }
134        public String getDefinition() {
135          switch (this) {
136            case ACTIVE: return "This account is active and may be used.";
137            case INACTIVE: return "This account is inactive and should not be used to track financial information.";
138            case ENTEREDINERROR: return "This instance should not have been part of this patient's medical record.";
139            case ONHOLD: return "This account is on hold.";
140            case UNKNOWN: return "The account status is unknown.";
141            default: return "?";
142          }
143        }
144        public String getDisplay() {
145          switch (this) {
146            case ACTIVE: return "Active";
147            case INACTIVE: return "Inactive";
148            case ENTEREDINERROR: return "Entered in error";
149            case ONHOLD: return "On Hold";
150            case UNKNOWN: return "Unknown";
151            default: return "?";
152          }
153        }
154    }
155
156  public static class AccountStatusEnumFactory implements EnumFactory<AccountStatus> {
157    public AccountStatus fromCode(String codeString) throws IllegalArgumentException {
158      if (codeString == null || "".equals(codeString))
159            if (codeString == null || "".equals(codeString))
160                return null;
161        if ("active".equals(codeString))
162          return AccountStatus.ACTIVE;
163        if ("inactive".equals(codeString))
164          return AccountStatus.INACTIVE;
165        if ("entered-in-error".equals(codeString))
166          return AccountStatus.ENTEREDINERROR;
167        if ("on-hold".equals(codeString))
168          return AccountStatus.ONHOLD;
169        if ("unknown".equals(codeString))
170          return AccountStatus.UNKNOWN;
171        throw new IllegalArgumentException("Unknown AccountStatus code '"+codeString+"'");
172        }
173        public Enumeration<AccountStatus> fromType(Base code) throws FHIRException {
174          if (code == null)
175            return null;
176          if (code.isEmpty())
177            return new Enumeration<AccountStatus>(this);
178          String codeString = ((PrimitiveType) code).asStringValue();
179          if (codeString == null || "".equals(codeString))
180            return null;
181        if ("active".equals(codeString))
182          return new Enumeration<AccountStatus>(this, AccountStatus.ACTIVE);
183        if ("inactive".equals(codeString))
184          return new Enumeration<AccountStatus>(this, AccountStatus.INACTIVE);
185        if ("entered-in-error".equals(codeString))
186          return new Enumeration<AccountStatus>(this, AccountStatus.ENTEREDINERROR);
187        if ("on-hold".equals(codeString))
188          return new Enumeration<AccountStatus>(this, AccountStatus.ONHOLD);
189        if ("unknown".equals(codeString))
190          return new Enumeration<AccountStatus>(this, AccountStatus.UNKNOWN);
191        throw new FHIRException("Unknown AccountStatus code '"+codeString+"'");
192        }
193    public String toCode(AccountStatus code) {
194      if (code == AccountStatus.ACTIVE)
195        return "active";
196      if (code == AccountStatus.INACTIVE)
197        return "inactive";
198      if (code == AccountStatus.ENTEREDINERROR)
199        return "entered-in-error";
200      if (code == AccountStatus.ONHOLD)
201        return "on-hold";
202      if (code == AccountStatus.UNKNOWN)
203        return "unknown";
204      return "?";
205      }
206    public String toSystem(AccountStatus code) {
207      return code.getSystem();
208      }
209    }
210
211    @Block()
212    public static class CoverageComponent extends BackboneElement implements IBaseBackboneElement {
213        /**
214         * The party(s) that contribute to payment (or part of) of the charges applied to this account (including self-pay).
215
216A coverage may only be responsible for specific types of charges, and the sequence of the coverages in the account could be important when processing billing.
217         */
218        @Child(name = "coverage", type = {Coverage.class}, order=1, min=1, max=1, modifier=false, summary=true)
219        @Description(shortDefinition="The party(s), such as insurances, that may contribute to the payment of this account", formalDefinition="The party(s) that contribute to payment (or part of) of the charges applied to this account (including self-pay).\n\nA coverage may only be responsible for specific types of charges, and the sequence of the coverages in the account could be important when processing billing." )
220        protected Reference coverage;
221
222        /**
223         * The actual object that is the target of the reference (The party(s) that contribute to payment (or part of) of the charges applied to this account (including self-pay).
224
225A coverage may only be responsible for specific types of charges, and the sequence of the coverages in the account could be important when processing billing.)
226         */
227        protected Coverage coverageTarget;
228
229        /**
230         * The priority of the coverage in the context of this account.
231         */
232        @Child(name = "priority", type = {PositiveIntType.class}, order=2, min=0, max=1, modifier=false, summary=true)
233        @Description(shortDefinition="The priority of the coverage in the context of this account", formalDefinition="The priority of the coverage in the context of this account." )
234        protected PositiveIntType priority;
235
236        private static final long serialVersionUID = -1046265008L;
237
238    /**
239     * Constructor
240     */
241      public CoverageComponent() {
242        super();
243      }
244
245    /**
246     * Constructor
247     */
248      public CoverageComponent(Reference coverage) {
249        super();
250        this.coverage = coverage;
251      }
252
253        /**
254         * @return {@link #coverage} (The party(s) that contribute to payment (or part of) of the charges applied to this account (including self-pay).
255
256A coverage may only be responsible for specific types of charges, and the sequence of the coverages in the account could be important when processing billing.)
257         */
258        public Reference getCoverage() { 
259          if (this.coverage == null)
260            if (Configuration.errorOnAutoCreate())
261              throw new Error("Attempt to auto-create CoverageComponent.coverage");
262            else if (Configuration.doAutoCreate())
263              this.coverage = new Reference(); // cc
264          return this.coverage;
265        }
266
267        public boolean hasCoverage() { 
268          return this.coverage != null && !this.coverage.isEmpty();
269        }
270
271        /**
272         * @param value {@link #coverage} (The party(s) that contribute to payment (or part of) of the charges applied to this account (including self-pay).
273
274A coverage may only be responsible for specific types of charges, and the sequence of the coverages in the account could be important when processing billing.)
275         */
276        public CoverageComponent setCoverage(Reference value) { 
277          this.coverage = value;
278          return this;
279        }
280
281        /**
282         * @return {@link #coverage} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The party(s) that contribute to payment (or part of) of the charges applied to this account (including self-pay).
283
284A coverage may only be responsible for specific types of charges, and the sequence of the coverages in the account could be important when processing billing.)
285         */
286        public Coverage getCoverageTarget() { 
287          if (this.coverageTarget == null)
288            if (Configuration.errorOnAutoCreate())
289              throw new Error("Attempt to auto-create CoverageComponent.coverage");
290            else if (Configuration.doAutoCreate())
291              this.coverageTarget = new Coverage(); // aa
292          return this.coverageTarget;
293        }
294
295        /**
296         * @param value {@link #coverage} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The party(s) that contribute to payment (or part of) of the charges applied to this account (including self-pay).
297
298A coverage may only be responsible for specific types of charges, and the sequence of the coverages in the account could be important when processing billing.)
299         */
300        public CoverageComponent setCoverageTarget(Coverage value) { 
301          this.coverageTarget = value;
302          return this;
303        }
304
305        /**
306         * @return {@link #priority} (The priority of the coverage in the context of this account.). This is the underlying object with id, value and extensions. The accessor "getPriority" gives direct access to the value
307         */
308        public PositiveIntType getPriorityElement() { 
309          if (this.priority == null)
310            if (Configuration.errorOnAutoCreate())
311              throw new Error("Attempt to auto-create CoverageComponent.priority");
312            else if (Configuration.doAutoCreate())
313              this.priority = new PositiveIntType(); // bb
314          return this.priority;
315        }
316
317        public boolean hasPriorityElement() { 
318          return this.priority != null && !this.priority.isEmpty();
319        }
320
321        public boolean hasPriority() { 
322          return this.priority != null && !this.priority.isEmpty();
323        }
324
325        /**
326         * @param value {@link #priority} (The priority of the coverage in the context of this account.). This is the underlying object with id, value and extensions. The accessor "getPriority" gives direct access to the value
327         */
328        public CoverageComponent setPriorityElement(PositiveIntType value) { 
329          this.priority = value;
330          return this;
331        }
332
333        /**
334         * @return The priority of the coverage in the context of this account.
335         */
336        public int getPriority() { 
337          return this.priority == null || this.priority.isEmpty() ? 0 : this.priority.getValue();
338        }
339
340        /**
341         * @param value The priority of the coverage in the context of this account.
342         */
343        public CoverageComponent setPriority(int value) { 
344            if (this.priority == null)
345              this.priority = new PositiveIntType();
346            this.priority.setValue(value);
347          return this;
348        }
349
350        protected void listChildren(List<Property> children) {
351          super.listChildren(children);
352          children.add(new Property("coverage", "Reference(Coverage)", "The party(s) that contribute to payment (or part of) of the charges applied to this account (including self-pay).\n\nA coverage may only be responsible for specific types of charges, and the sequence of the coverages in the account could be important when processing billing.", 0, 1, coverage));
353          children.add(new Property("priority", "positiveInt", "The priority of the coverage in the context of this account.", 0, 1, priority));
354        }
355
356        @Override
357        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
358          switch (_hash) {
359          case -351767064: /*coverage*/  return new Property("coverage", "Reference(Coverage)", "The party(s) that contribute to payment (or part of) of the charges applied to this account (including self-pay).\n\nA coverage may only be responsible for specific types of charges, and the sequence of the coverages in the account could be important when processing billing.", 0, 1, coverage);
360          case -1165461084: /*priority*/  return new Property("priority", "positiveInt", "The priority of the coverage in the context of this account.", 0, 1, priority);
361          default: return super.getNamedProperty(_hash, _name, _checkValid);
362          }
363
364        }
365
366      @Override
367      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
368        switch (hash) {
369        case -351767064: /*coverage*/ return this.coverage == null ? new Base[0] : new Base[] {this.coverage}; // Reference
370        case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // PositiveIntType
371        default: return super.getProperty(hash, name, checkValid);
372        }
373
374      }
375
376      @Override
377      public Base setProperty(int hash, String name, Base value) throws FHIRException {
378        switch (hash) {
379        case -351767064: // coverage
380          this.coverage = castToReference(value); // Reference
381          return value;
382        case -1165461084: // priority
383          this.priority = castToPositiveInt(value); // PositiveIntType
384          return value;
385        default: return super.setProperty(hash, name, value);
386        }
387
388      }
389
390      @Override
391      public Base setProperty(String name, Base value) throws FHIRException {
392        if (name.equals("coverage")) {
393          this.coverage = castToReference(value); // Reference
394        } else if (name.equals("priority")) {
395          this.priority = castToPositiveInt(value); // PositiveIntType
396        } else
397          return super.setProperty(name, value);
398        return value;
399      }
400
401      @Override
402      public Base makeProperty(int hash, String name) throws FHIRException {
403        switch (hash) {
404        case -351767064:  return getCoverage(); 
405        case -1165461084:  return getPriorityElement();
406        default: return super.makeProperty(hash, name);
407        }
408
409      }
410
411      @Override
412      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
413        switch (hash) {
414        case -351767064: /*coverage*/ return new String[] {"Reference"};
415        case -1165461084: /*priority*/ return new String[] {"positiveInt"};
416        default: return super.getTypesForProperty(hash, name);
417        }
418
419      }
420
421      @Override
422      public Base addChild(String name) throws FHIRException {
423        if (name.equals("coverage")) {
424          this.coverage = new Reference();
425          return this.coverage;
426        }
427        else if (name.equals("priority")) {
428          throw new FHIRException("Cannot call addChild on a primitive type Account.priority");
429        }
430        else
431          return super.addChild(name);
432      }
433
434      public CoverageComponent copy() {
435        CoverageComponent dst = new CoverageComponent();
436        copyValues(dst);
437        dst.coverage = coverage == null ? null : coverage.copy();
438        dst.priority = priority == null ? null : priority.copy();
439        return dst;
440      }
441
442      @Override
443      public boolean equalsDeep(Base other_) {
444        if (!super.equalsDeep(other_))
445          return false;
446        if (!(other_ instanceof CoverageComponent))
447          return false;
448        CoverageComponent o = (CoverageComponent) other_;
449        return compareDeep(coverage, o.coverage, true) && compareDeep(priority, o.priority, true);
450      }
451
452      @Override
453      public boolean equalsShallow(Base other_) {
454        if (!super.equalsShallow(other_))
455          return false;
456        if (!(other_ instanceof CoverageComponent))
457          return false;
458        CoverageComponent o = (CoverageComponent) other_;
459        return compareValues(priority, o.priority, true);
460      }
461
462      public boolean isEmpty() {
463        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(coverage, priority);
464      }
465
466  public String fhirType() {
467    return "Account.coverage";
468
469  }
470
471  }
472
473    @Block()
474    public static class GuarantorComponent extends BackboneElement implements IBaseBackboneElement {
475        /**
476         * The entity who is responsible.
477         */
478        @Child(name = "party", type = {Patient.class, RelatedPerson.class, Organization.class}, order=1, min=1, max=1, modifier=false, summary=false)
479        @Description(shortDefinition="Responsible entity", formalDefinition="The entity who is responsible." )
480        protected Reference party;
481
482        /**
483         * The actual object that is the target of the reference (The entity who is responsible.)
484         */
485        protected Resource partyTarget;
486
487        /**
488         * A guarantor may be placed on credit hold or otherwise have their role temporarily suspended.
489         */
490        @Child(name = "onHold", type = {BooleanType.class}, order=2, min=0, max=1, modifier=false, summary=false)
491        @Description(shortDefinition="Credit or other hold applied", formalDefinition="A guarantor may be placed on credit hold or otherwise have their role temporarily suspended." )
492        protected BooleanType onHold;
493
494        /**
495         * The timeframe during which the guarantor accepts responsibility for the account.
496         */
497        @Child(name = "period", type = {Period.class}, order=3, min=0, max=1, modifier=false, summary=false)
498        @Description(shortDefinition="Guarantee account during", formalDefinition="The timeframe during which the guarantor accepts responsibility for the account." )
499        protected Period period;
500
501        private static final long serialVersionUID = -1012345396L;
502
503    /**
504     * Constructor
505     */
506      public GuarantorComponent() {
507        super();
508      }
509
510    /**
511     * Constructor
512     */
513      public GuarantorComponent(Reference party) {
514        super();
515        this.party = party;
516      }
517
518        /**
519         * @return {@link #party} (The entity who is responsible.)
520         */
521        public Reference getParty() { 
522          if (this.party == null)
523            if (Configuration.errorOnAutoCreate())
524              throw new Error("Attempt to auto-create GuarantorComponent.party");
525            else if (Configuration.doAutoCreate())
526              this.party = new Reference(); // cc
527          return this.party;
528        }
529
530        public boolean hasParty() { 
531          return this.party != null && !this.party.isEmpty();
532        }
533
534        /**
535         * @param value {@link #party} (The entity who is responsible.)
536         */
537        public GuarantorComponent setParty(Reference value) { 
538          this.party = value;
539          return this;
540        }
541
542        /**
543         * @return {@link #party} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (The entity who is responsible.)
544         */
545        public Resource getPartyTarget() { 
546          return this.partyTarget;
547        }
548
549        /**
550         * @param value {@link #party} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (The entity who is responsible.)
551         */
552        public GuarantorComponent setPartyTarget(Resource value) { 
553          this.partyTarget = value;
554          return this;
555        }
556
557        /**
558         * @return {@link #onHold} (A guarantor may be placed on credit hold or otherwise have their role temporarily suspended.). This is the underlying object with id, value and extensions. The accessor "getOnHold" gives direct access to the value
559         */
560        public BooleanType getOnHoldElement() { 
561          if (this.onHold == null)
562            if (Configuration.errorOnAutoCreate())
563              throw new Error("Attempt to auto-create GuarantorComponent.onHold");
564            else if (Configuration.doAutoCreate())
565              this.onHold = new BooleanType(); // bb
566          return this.onHold;
567        }
568
569        public boolean hasOnHoldElement() { 
570          return this.onHold != null && !this.onHold.isEmpty();
571        }
572
573        public boolean hasOnHold() { 
574          return this.onHold != null && !this.onHold.isEmpty();
575        }
576
577        /**
578         * @param value {@link #onHold} (A guarantor may be placed on credit hold or otherwise have their role temporarily suspended.). This is the underlying object with id, value and extensions. The accessor "getOnHold" gives direct access to the value
579         */
580        public GuarantorComponent setOnHoldElement(BooleanType value) { 
581          this.onHold = value;
582          return this;
583        }
584
585        /**
586         * @return A guarantor may be placed on credit hold or otherwise have their role temporarily suspended.
587         */
588        public boolean getOnHold() { 
589          return this.onHold == null || this.onHold.isEmpty() ? false : this.onHold.getValue();
590        }
591
592        /**
593         * @param value A guarantor may be placed on credit hold or otherwise have their role temporarily suspended.
594         */
595        public GuarantorComponent setOnHold(boolean value) { 
596            if (this.onHold == null)
597              this.onHold = new BooleanType();
598            this.onHold.setValue(value);
599          return this;
600        }
601
602        /**
603         * @return {@link #period} (The timeframe during which the guarantor accepts responsibility for the account.)
604         */
605        public Period getPeriod() { 
606          if (this.period == null)
607            if (Configuration.errorOnAutoCreate())
608              throw new Error("Attempt to auto-create GuarantorComponent.period");
609            else if (Configuration.doAutoCreate())
610              this.period = new Period(); // cc
611          return this.period;
612        }
613
614        public boolean hasPeriod() { 
615          return this.period != null && !this.period.isEmpty();
616        }
617
618        /**
619         * @param value {@link #period} (The timeframe during which the guarantor accepts responsibility for the account.)
620         */
621        public GuarantorComponent setPeriod(Period value) { 
622          this.period = value;
623          return this;
624        }
625
626        protected void listChildren(List<Property> children) {
627          super.listChildren(children);
628          children.add(new Property("party", "Reference(Patient|RelatedPerson|Organization)", "The entity who is responsible.", 0, 1, party));
629          children.add(new Property("onHold", "boolean", "A guarantor may be placed on credit hold or otherwise have their role temporarily suspended.", 0, 1, onHold));
630          children.add(new Property("period", "Period", "The timeframe during which the guarantor accepts responsibility for the account.", 0, 1, period));
631        }
632
633        @Override
634        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
635          switch (_hash) {
636          case 106437350: /*party*/  return new Property("party", "Reference(Patient|RelatedPerson|Organization)", "The entity who is responsible.", 0, 1, party);
637          case -1013289154: /*onHold*/  return new Property("onHold", "boolean", "A guarantor may be placed on credit hold or otherwise have their role temporarily suspended.", 0, 1, onHold);
638          case -991726143: /*period*/  return new Property("period", "Period", "The timeframe during which the guarantor accepts responsibility for the account.", 0, 1, period);
639          default: return super.getNamedProperty(_hash, _name, _checkValid);
640          }
641
642        }
643
644      @Override
645      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
646        switch (hash) {
647        case 106437350: /*party*/ return this.party == null ? new Base[0] : new Base[] {this.party}; // Reference
648        case -1013289154: /*onHold*/ return this.onHold == null ? new Base[0] : new Base[] {this.onHold}; // BooleanType
649        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
650        default: return super.getProperty(hash, name, checkValid);
651        }
652
653      }
654
655      @Override
656      public Base setProperty(int hash, String name, Base value) throws FHIRException {
657        switch (hash) {
658        case 106437350: // party
659          this.party = castToReference(value); // Reference
660          return value;
661        case -1013289154: // onHold
662          this.onHold = castToBoolean(value); // BooleanType
663          return value;
664        case -991726143: // period
665          this.period = castToPeriod(value); // Period
666          return value;
667        default: return super.setProperty(hash, name, value);
668        }
669
670      }
671
672      @Override
673      public Base setProperty(String name, Base value) throws FHIRException {
674        if (name.equals("party")) {
675          this.party = castToReference(value); // Reference
676        } else if (name.equals("onHold")) {
677          this.onHold = castToBoolean(value); // BooleanType
678        } else if (name.equals("period")) {
679          this.period = castToPeriod(value); // Period
680        } else
681          return super.setProperty(name, value);
682        return value;
683      }
684
685      @Override
686      public Base makeProperty(int hash, String name) throws FHIRException {
687        switch (hash) {
688        case 106437350:  return getParty(); 
689        case -1013289154:  return getOnHoldElement();
690        case -991726143:  return getPeriod(); 
691        default: return super.makeProperty(hash, name);
692        }
693
694      }
695
696      @Override
697      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
698        switch (hash) {
699        case 106437350: /*party*/ return new String[] {"Reference"};
700        case -1013289154: /*onHold*/ return new String[] {"boolean"};
701        case -991726143: /*period*/ return new String[] {"Period"};
702        default: return super.getTypesForProperty(hash, name);
703        }
704
705      }
706
707      @Override
708      public Base addChild(String name) throws FHIRException {
709        if (name.equals("party")) {
710          this.party = new Reference();
711          return this.party;
712        }
713        else if (name.equals("onHold")) {
714          throw new FHIRException("Cannot call addChild on a primitive type Account.onHold");
715        }
716        else if (name.equals("period")) {
717          this.period = new Period();
718          return this.period;
719        }
720        else
721          return super.addChild(name);
722      }
723
724      public GuarantorComponent copy() {
725        GuarantorComponent dst = new GuarantorComponent();
726        copyValues(dst);
727        dst.party = party == null ? null : party.copy();
728        dst.onHold = onHold == null ? null : onHold.copy();
729        dst.period = period == null ? null : period.copy();
730        return dst;
731      }
732
733      @Override
734      public boolean equalsDeep(Base other_) {
735        if (!super.equalsDeep(other_))
736          return false;
737        if (!(other_ instanceof GuarantorComponent))
738          return false;
739        GuarantorComponent o = (GuarantorComponent) other_;
740        return compareDeep(party, o.party, true) && compareDeep(onHold, o.onHold, true) && compareDeep(period, o.period, true)
741          ;
742      }
743
744      @Override
745      public boolean equalsShallow(Base other_) {
746        if (!super.equalsShallow(other_))
747          return false;
748        if (!(other_ instanceof GuarantorComponent))
749          return false;
750        GuarantorComponent o = (GuarantorComponent) other_;
751        return compareValues(onHold, o.onHold, true);
752      }
753
754      public boolean isEmpty() {
755        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(party, onHold, period);
756      }
757
758  public String fhirType() {
759    return "Account.guarantor";
760
761  }
762
763  }
764
765    /**
766     * Unique identifier used to reference the account.  Might or might not be intended for human use (e.g. credit card number).
767     */
768    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
769    @Description(shortDefinition="Account number", formalDefinition="Unique identifier used to reference the account.  Might or might not be intended for human use (e.g. credit card number)." )
770    protected List<Identifier> identifier;
771
772    /**
773     * Indicates whether the account is presently used/usable or not.
774     */
775    @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
776    @Description(shortDefinition="active | inactive | entered-in-error | on-hold | unknown", formalDefinition="Indicates whether the account is presently used/usable or not." )
777    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/account-status")
778    protected Enumeration<AccountStatus> status;
779
780    /**
781     * Categorizes the account for reporting and searching purposes.
782     */
783    @Child(name = "type", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true)
784    @Description(shortDefinition="E.g. patient, expense, depreciation", formalDefinition="Categorizes the account for reporting and searching purposes." )
785    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/account-type")
786    protected CodeableConcept type;
787
788    /**
789     * Name used for the account when displaying it to humans in reports, etc.
790     */
791    @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
792    @Description(shortDefinition="Human-readable label", formalDefinition="Name used for the account when displaying it to humans in reports, etc." )
793    protected StringType name;
794
795    /**
796     * Identifies the entity which incurs the expenses. While the immediate recipients of services or goods might be entities related to the subject, the expenses were ultimately incurred by the subject of the Account.
797     */
798    @Child(name = "subject", type = {Patient.class, Device.class, Practitioner.class, PractitionerRole.class, Location.class, HealthcareService.class, Organization.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
799    @Description(shortDefinition="The entity that caused the expenses", formalDefinition="Identifies the entity which incurs the expenses. While the immediate recipients of services or goods might be entities related to the subject, the expenses were ultimately incurred by the subject of the Account." )
800    protected List<Reference> subject;
801    /**
802     * The actual objects that are the target of the reference (Identifies the entity which incurs the expenses. While the immediate recipients of services or goods might be entities related to the subject, the expenses were ultimately incurred by the subject of the Account.)
803     */
804    protected List<Resource> subjectTarget;
805
806
807    /**
808     * The date range of services associated with this account.
809     */
810    @Child(name = "servicePeriod", type = {Period.class}, order=5, min=0, max=1, modifier=false, summary=true)
811    @Description(shortDefinition="Transaction window", formalDefinition="The date range of services associated with this account." )
812    protected Period servicePeriod;
813
814    /**
815     * The party(s) that are responsible for covering the payment of this account, and what order should they be applied to the account.
816     */
817    @Child(name = "coverage", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
818    @Description(shortDefinition="The party(s) that are responsible for covering the payment of this account, and what order should they be applied to the account", formalDefinition="The party(s) that are responsible for covering the payment of this account, and what order should they be applied to the account." )
819    protected List<CoverageComponent> coverage;
820
821    /**
822     * Indicates the service area, hospital, department, etc. with responsibility for managing the Account.
823     */
824    @Child(name = "owner", type = {Organization.class}, order=7, min=0, max=1, modifier=false, summary=true)
825    @Description(shortDefinition="Entity managing the Account", formalDefinition="Indicates the service area, hospital, department, etc. with responsibility for managing the Account." )
826    protected Reference owner;
827
828    /**
829     * The actual object that is the target of the reference (Indicates the service area, hospital, department, etc. with responsibility for managing the Account.)
830     */
831    protected Organization ownerTarget;
832
833    /**
834     * Provides additional information about what the account tracks and how it is used.
835     */
836    @Child(name = "description", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=true)
837    @Description(shortDefinition="Explanation of purpose/use", formalDefinition="Provides additional information about what the account tracks and how it is used." )
838    protected StringType description;
839
840    /**
841     * The parties responsible for balancing the account if other payment options fall short.
842     */
843    @Child(name = "guarantor", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
844    @Description(shortDefinition="The parties ultimately responsible for balancing the Account", formalDefinition="The parties responsible for balancing the account if other payment options fall short." )
845    protected List<GuarantorComponent> guarantor;
846
847    /**
848     * Reference to a parent Account.
849     */
850    @Child(name = "partOf", type = {Account.class}, order=10, min=0, max=1, modifier=false, summary=false)
851    @Description(shortDefinition="Reference to a parent Account", formalDefinition="Reference to a parent Account." )
852    protected Reference partOf;
853
854    /**
855     * The actual object that is the target of the reference (Reference to a parent Account.)
856     */
857    protected Account partOfTarget;
858
859    private static final long serialVersionUID = 1211238069L;
860
861  /**
862   * Constructor
863   */
864    public Account() {
865      super();
866    }
867
868  /**
869   * Constructor
870   */
871    public Account(Enumeration<AccountStatus> status) {
872      super();
873      this.status = status;
874    }
875
876    /**
877     * @return {@link #identifier} (Unique identifier used to reference the account.  Might or might not be intended for human use (e.g. credit card number).)
878     */
879    public List<Identifier> getIdentifier() { 
880      if (this.identifier == null)
881        this.identifier = new ArrayList<Identifier>();
882      return this.identifier;
883    }
884
885    /**
886     * @return Returns a reference to <code>this</code> for easy method chaining
887     */
888    public Account setIdentifier(List<Identifier> theIdentifier) { 
889      this.identifier = theIdentifier;
890      return this;
891    }
892
893    public boolean hasIdentifier() { 
894      if (this.identifier == null)
895        return false;
896      for (Identifier item : this.identifier)
897        if (!item.isEmpty())
898          return true;
899      return false;
900    }
901
902    public Identifier addIdentifier() { //3
903      Identifier t = new Identifier();
904      if (this.identifier == null)
905        this.identifier = new ArrayList<Identifier>();
906      this.identifier.add(t);
907      return t;
908    }
909
910    public Account addIdentifier(Identifier t) { //3
911      if (t == null)
912        return this;
913      if (this.identifier == null)
914        this.identifier = new ArrayList<Identifier>();
915      this.identifier.add(t);
916      return this;
917    }
918
919    /**
920     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
921     */
922    public Identifier getIdentifierFirstRep() { 
923      if (getIdentifier().isEmpty()) {
924        addIdentifier();
925      }
926      return getIdentifier().get(0);
927    }
928
929    /**
930     * @return {@link #status} (Indicates whether the account is presently used/usable or not.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
931     */
932    public Enumeration<AccountStatus> getStatusElement() { 
933      if (this.status == null)
934        if (Configuration.errorOnAutoCreate())
935          throw new Error("Attempt to auto-create Account.status");
936        else if (Configuration.doAutoCreate())
937          this.status = new Enumeration<AccountStatus>(new AccountStatusEnumFactory()); // bb
938      return this.status;
939    }
940
941    public boolean hasStatusElement() { 
942      return this.status != null && !this.status.isEmpty();
943    }
944
945    public boolean hasStatus() { 
946      return this.status != null && !this.status.isEmpty();
947    }
948
949    /**
950     * @param value {@link #status} (Indicates whether the account is presently used/usable or not.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
951     */
952    public Account setStatusElement(Enumeration<AccountStatus> value) { 
953      this.status = value;
954      return this;
955    }
956
957    /**
958     * @return Indicates whether the account is presently used/usable or not.
959     */
960    public AccountStatus getStatus() { 
961      return this.status == null ? null : this.status.getValue();
962    }
963
964    /**
965     * @param value Indicates whether the account is presently used/usable or not.
966     */
967    public Account setStatus(AccountStatus value) { 
968        if (this.status == null)
969          this.status = new Enumeration<AccountStatus>(new AccountStatusEnumFactory());
970        this.status.setValue(value);
971      return this;
972    }
973
974    /**
975     * @return {@link #type} (Categorizes the account for reporting and searching purposes.)
976     */
977    public CodeableConcept getType() { 
978      if (this.type == null)
979        if (Configuration.errorOnAutoCreate())
980          throw new Error("Attempt to auto-create Account.type");
981        else if (Configuration.doAutoCreate())
982          this.type = new CodeableConcept(); // cc
983      return this.type;
984    }
985
986    public boolean hasType() { 
987      return this.type != null && !this.type.isEmpty();
988    }
989
990    /**
991     * @param value {@link #type} (Categorizes the account for reporting and searching purposes.)
992     */
993    public Account setType(CodeableConcept value) { 
994      this.type = value;
995      return this;
996    }
997
998    /**
999     * @return {@link #name} (Name used for the account when displaying it to humans in reports, etc.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
1000     */
1001    public StringType getNameElement() { 
1002      if (this.name == null)
1003        if (Configuration.errorOnAutoCreate())
1004          throw new Error("Attempt to auto-create Account.name");
1005        else if (Configuration.doAutoCreate())
1006          this.name = new StringType(); // bb
1007      return this.name;
1008    }
1009
1010    public boolean hasNameElement() { 
1011      return this.name != null && !this.name.isEmpty();
1012    }
1013
1014    public boolean hasName() { 
1015      return this.name != null && !this.name.isEmpty();
1016    }
1017
1018    /**
1019     * @param value {@link #name} (Name used for the account when displaying it to humans in reports, etc.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
1020     */
1021    public Account setNameElement(StringType value) { 
1022      this.name = value;
1023      return this;
1024    }
1025
1026    /**
1027     * @return Name used for the account when displaying it to humans in reports, etc.
1028     */
1029    public String getName() { 
1030      return this.name == null ? null : this.name.getValue();
1031    }
1032
1033    /**
1034     * @param value Name used for the account when displaying it to humans in reports, etc.
1035     */
1036    public Account setName(String value) { 
1037      if (Utilities.noString(value))
1038        this.name = null;
1039      else {
1040        if (this.name == null)
1041          this.name = new StringType();
1042        this.name.setValue(value);
1043      }
1044      return this;
1045    }
1046
1047    /**
1048     * @return {@link #subject} (Identifies the entity which incurs the expenses. While the immediate recipients of services or goods might be entities related to the subject, the expenses were ultimately incurred by the subject of the Account.)
1049     */
1050    public List<Reference> getSubject() { 
1051      if (this.subject == null)
1052        this.subject = new ArrayList<Reference>();
1053      return this.subject;
1054    }
1055
1056    /**
1057     * @return Returns a reference to <code>this</code> for easy method chaining
1058     */
1059    public Account setSubject(List<Reference> theSubject) { 
1060      this.subject = theSubject;
1061      return this;
1062    }
1063
1064    public boolean hasSubject() { 
1065      if (this.subject == null)
1066        return false;
1067      for (Reference item : this.subject)
1068        if (!item.isEmpty())
1069          return true;
1070      return false;
1071    }
1072
1073    public Reference addSubject() { //3
1074      Reference t = new Reference();
1075      if (this.subject == null)
1076        this.subject = new ArrayList<Reference>();
1077      this.subject.add(t);
1078      return t;
1079    }
1080
1081    public Account addSubject(Reference t) { //3
1082      if (t == null)
1083        return this;
1084      if (this.subject == null)
1085        this.subject = new ArrayList<Reference>();
1086      this.subject.add(t);
1087      return this;
1088    }
1089
1090    /**
1091     * @return The first repetition of repeating field {@link #subject}, creating it if it does not already exist
1092     */
1093    public Reference getSubjectFirstRep() { 
1094      if (getSubject().isEmpty()) {
1095        addSubject();
1096      }
1097      return getSubject().get(0);
1098    }
1099
1100    /**
1101     * @deprecated Use Reference#setResource(IBaseResource) instead
1102     */
1103    @Deprecated
1104    public List<Resource> getSubjectTarget() { 
1105      if (this.subjectTarget == null)
1106        this.subjectTarget = new ArrayList<Resource>();
1107      return this.subjectTarget;
1108    }
1109
1110    /**
1111     * @return {@link #servicePeriod} (The date range of services associated with this account.)
1112     */
1113    public Period getServicePeriod() { 
1114      if (this.servicePeriod == null)
1115        if (Configuration.errorOnAutoCreate())
1116          throw new Error("Attempt to auto-create Account.servicePeriod");
1117        else if (Configuration.doAutoCreate())
1118          this.servicePeriod = new Period(); // cc
1119      return this.servicePeriod;
1120    }
1121
1122    public boolean hasServicePeriod() { 
1123      return this.servicePeriod != null && !this.servicePeriod.isEmpty();
1124    }
1125
1126    /**
1127     * @param value {@link #servicePeriod} (The date range of services associated with this account.)
1128     */
1129    public Account setServicePeriod(Period value) { 
1130      this.servicePeriod = value;
1131      return this;
1132    }
1133
1134    /**
1135     * @return {@link #coverage} (The party(s) that are responsible for covering the payment of this account, and what order should they be applied to the account.)
1136     */
1137    public List<CoverageComponent> getCoverage() { 
1138      if (this.coverage == null)
1139        this.coverage = new ArrayList<CoverageComponent>();
1140      return this.coverage;
1141    }
1142
1143    /**
1144     * @return Returns a reference to <code>this</code> for easy method chaining
1145     */
1146    public Account setCoverage(List<CoverageComponent> theCoverage) { 
1147      this.coverage = theCoverage;
1148      return this;
1149    }
1150
1151    public boolean hasCoverage() { 
1152      if (this.coverage == null)
1153        return false;
1154      for (CoverageComponent item : this.coverage)
1155        if (!item.isEmpty())
1156          return true;
1157      return false;
1158    }
1159
1160    public CoverageComponent addCoverage() { //3
1161      CoverageComponent t = new CoverageComponent();
1162      if (this.coverage == null)
1163        this.coverage = new ArrayList<CoverageComponent>();
1164      this.coverage.add(t);
1165      return t;
1166    }
1167
1168    public Account addCoverage(CoverageComponent t) { //3
1169      if (t == null)
1170        return this;
1171      if (this.coverage == null)
1172        this.coverage = new ArrayList<CoverageComponent>();
1173      this.coverage.add(t);
1174      return this;
1175    }
1176
1177    /**
1178     * @return The first repetition of repeating field {@link #coverage}, creating it if it does not already exist
1179     */
1180    public CoverageComponent getCoverageFirstRep() { 
1181      if (getCoverage().isEmpty()) {
1182        addCoverage();
1183      }
1184      return getCoverage().get(0);
1185    }
1186
1187    /**
1188     * @return {@link #owner} (Indicates the service area, hospital, department, etc. with responsibility for managing the Account.)
1189     */
1190    public Reference getOwner() { 
1191      if (this.owner == null)
1192        if (Configuration.errorOnAutoCreate())
1193          throw new Error("Attempt to auto-create Account.owner");
1194        else if (Configuration.doAutoCreate())
1195          this.owner = new Reference(); // cc
1196      return this.owner;
1197    }
1198
1199    public boolean hasOwner() { 
1200      return this.owner != null && !this.owner.isEmpty();
1201    }
1202
1203    /**
1204     * @param value {@link #owner} (Indicates the service area, hospital, department, etc. with responsibility for managing the Account.)
1205     */
1206    public Account setOwner(Reference value) { 
1207      this.owner = value;
1208      return this;
1209    }
1210
1211    /**
1212     * @return {@link #owner} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Indicates the service area, hospital, department, etc. with responsibility for managing the Account.)
1213     */
1214    public Organization getOwnerTarget() { 
1215      if (this.ownerTarget == null)
1216        if (Configuration.errorOnAutoCreate())
1217          throw new Error("Attempt to auto-create Account.owner");
1218        else if (Configuration.doAutoCreate())
1219          this.ownerTarget = new Organization(); // aa
1220      return this.ownerTarget;
1221    }
1222
1223    /**
1224     * @param value {@link #owner} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Indicates the service area, hospital, department, etc. with responsibility for managing the Account.)
1225     */
1226    public Account setOwnerTarget(Organization value) { 
1227      this.ownerTarget = value;
1228      return this;
1229    }
1230
1231    /**
1232     * @return {@link #description} (Provides additional information about what the account tracks and how it is used.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1233     */
1234    public StringType getDescriptionElement() { 
1235      if (this.description == null)
1236        if (Configuration.errorOnAutoCreate())
1237          throw new Error("Attempt to auto-create Account.description");
1238        else if (Configuration.doAutoCreate())
1239          this.description = new StringType(); // bb
1240      return this.description;
1241    }
1242
1243    public boolean hasDescriptionElement() { 
1244      return this.description != null && !this.description.isEmpty();
1245    }
1246
1247    public boolean hasDescription() { 
1248      return this.description != null && !this.description.isEmpty();
1249    }
1250
1251    /**
1252     * @param value {@link #description} (Provides additional information about what the account tracks and how it is used.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1253     */
1254    public Account setDescriptionElement(StringType value) { 
1255      this.description = value;
1256      return this;
1257    }
1258
1259    /**
1260     * @return Provides additional information about what the account tracks and how it is used.
1261     */
1262    public String getDescription() { 
1263      return this.description == null ? null : this.description.getValue();
1264    }
1265
1266    /**
1267     * @param value Provides additional information about what the account tracks and how it is used.
1268     */
1269    public Account setDescription(String value) { 
1270      if (Utilities.noString(value))
1271        this.description = null;
1272      else {
1273        if (this.description == null)
1274          this.description = new StringType();
1275        this.description.setValue(value);
1276      }
1277      return this;
1278    }
1279
1280    /**
1281     * @return {@link #guarantor} (The parties responsible for balancing the account if other payment options fall short.)
1282     */
1283    public List<GuarantorComponent> getGuarantor() { 
1284      if (this.guarantor == null)
1285        this.guarantor = new ArrayList<GuarantorComponent>();
1286      return this.guarantor;
1287    }
1288
1289    /**
1290     * @return Returns a reference to <code>this</code> for easy method chaining
1291     */
1292    public Account setGuarantor(List<GuarantorComponent> theGuarantor) { 
1293      this.guarantor = theGuarantor;
1294      return this;
1295    }
1296
1297    public boolean hasGuarantor() { 
1298      if (this.guarantor == null)
1299        return false;
1300      for (GuarantorComponent item : this.guarantor)
1301        if (!item.isEmpty())
1302          return true;
1303      return false;
1304    }
1305
1306    public GuarantorComponent addGuarantor() { //3
1307      GuarantorComponent t = new GuarantorComponent();
1308      if (this.guarantor == null)
1309        this.guarantor = new ArrayList<GuarantorComponent>();
1310      this.guarantor.add(t);
1311      return t;
1312    }
1313
1314    public Account addGuarantor(GuarantorComponent t) { //3
1315      if (t == null)
1316        return this;
1317      if (this.guarantor == null)
1318        this.guarantor = new ArrayList<GuarantorComponent>();
1319      this.guarantor.add(t);
1320      return this;
1321    }
1322
1323    /**
1324     * @return The first repetition of repeating field {@link #guarantor}, creating it if it does not already exist
1325     */
1326    public GuarantorComponent getGuarantorFirstRep() { 
1327      if (getGuarantor().isEmpty()) {
1328        addGuarantor();
1329      }
1330      return getGuarantor().get(0);
1331    }
1332
1333    /**
1334     * @return {@link #partOf} (Reference to a parent Account.)
1335     */
1336    public Reference getPartOf() { 
1337      if (this.partOf == null)
1338        if (Configuration.errorOnAutoCreate())
1339          throw new Error("Attempt to auto-create Account.partOf");
1340        else if (Configuration.doAutoCreate())
1341          this.partOf = new Reference(); // cc
1342      return this.partOf;
1343    }
1344
1345    public boolean hasPartOf() { 
1346      return this.partOf != null && !this.partOf.isEmpty();
1347    }
1348
1349    /**
1350     * @param value {@link #partOf} (Reference to a parent Account.)
1351     */
1352    public Account setPartOf(Reference value) { 
1353      this.partOf = value;
1354      return this;
1355    }
1356
1357    /**
1358     * @return {@link #partOf} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Reference to a parent Account.)
1359     */
1360    public Account getPartOfTarget() { 
1361      if (this.partOfTarget == null)
1362        if (Configuration.errorOnAutoCreate())
1363          throw new Error("Attempt to auto-create Account.partOf");
1364        else if (Configuration.doAutoCreate())
1365          this.partOfTarget = new Account(); // aa
1366      return this.partOfTarget;
1367    }
1368
1369    /**
1370     * @param value {@link #partOf} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Reference to a parent Account.)
1371     */
1372    public Account setPartOfTarget(Account value) { 
1373      this.partOfTarget = value;
1374      return this;
1375    }
1376
1377      protected void listChildren(List<Property> children) {
1378        super.listChildren(children);
1379        children.add(new Property("identifier", "Identifier", "Unique identifier used to reference the account.  Might or might not be intended for human use (e.g. credit card number).", 0, java.lang.Integer.MAX_VALUE, identifier));
1380        children.add(new Property("status", "code", "Indicates whether the account is presently used/usable or not.", 0, 1, status));
1381        children.add(new Property("type", "CodeableConcept", "Categorizes the account for reporting and searching purposes.", 0, 1, type));
1382        children.add(new Property("name", "string", "Name used for the account when displaying it to humans in reports, etc.", 0, 1, name));
1383        children.add(new Property("subject", "Reference(Patient|Device|Practitioner|PractitionerRole|Location|HealthcareService|Organization)", "Identifies the entity which incurs the expenses. While the immediate recipients of services or goods might be entities related to the subject, the expenses were ultimately incurred by the subject of the Account.", 0, java.lang.Integer.MAX_VALUE, subject));
1384        children.add(new Property("servicePeriod", "Period", "The date range of services associated with this account.", 0, 1, servicePeriod));
1385        children.add(new Property("coverage", "", "The party(s) that are responsible for covering the payment of this account, and what order should they be applied to the account.", 0, java.lang.Integer.MAX_VALUE, coverage));
1386        children.add(new Property("owner", "Reference(Organization)", "Indicates the service area, hospital, department, etc. with responsibility for managing the Account.", 0, 1, owner));
1387        children.add(new Property("description", "string", "Provides additional information about what the account tracks and how it is used.", 0, 1, description));
1388        children.add(new Property("guarantor", "", "The parties responsible for balancing the account if other payment options fall short.", 0, java.lang.Integer.MAX_VALUE, guarantor));
1389        children.add(new Property("partOf", "Reference(Account)", "Reference to a parent Account.", 0, 1, partOf));
1390      }
1391
1392      @Override
1393      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1394        switch (_hash) {
1395        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Unique identifier used to reference the account.  Might or might not be intended for human use (e.g. credit card number).", 0, java.lang.Integer.MAX_VALUE, identifier);
1396        case -892481550: /*status*/  return new Property("status", "code", "Indicates whether the account is presently used/usable or not.", 0, 1, status);
1397        case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Categorizes the account for reporting and searching purposes.", 0, 1, type);
1398        case 3373707: /*name*/  return new Property("name", "string", "Name used for the account when displaying it to humans in reports, etc.", 0, 1, name);
1399        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Device|Practitioner|PractitionerRole|Location|HealthcareService|Organization)", "Identifies the entity which incurs the expenses. While the immediate recipients of services or goods might be entities related to the subject, the expenses were ultimately incurred by the subject of the Account.", 0, java.lang.Integer.MAX_VALUE, subject);
1400        case 2129104086: /*servicePeriod*/  return new Property("servicePeriod", "Period", "The date range of services associated with this account.", 0, 1, servicePeriod);
1401        case -351767064: /*coverage*/  return new Property("coverage", "", "The party(s) that are responsible for covering the payment of this account, and what order should they be applied to the account.", 0, java.lang.Integer.MAX_VALUE, coverage);
1402        case 106164915: /*owner*/  return new Property("owner", "Reference(Organization)", "Indicates the service area, hospital, department, etc. with responsibility for managing the Account.", 0, 1, owner);
1403        case -1724546052: /*description*/  return new Property("description", "string", "Provides additional information about what the account tracks and how it is used.", 0, 1, description);
1404        case -188629045: /*guarantor*/  return new Property("guarantor", "", "The parties responsible for balancing the account if other payment options fall short.", 0, java.lang.Integer.MAX_VALUE, guarantor);
1405        case -995410646: /*partOf*/  return new Property("partOf", "Reference(Account)", "Reference to a parent Account.", 0, 1, partOf);
1406        default: return super.getNamedProperty(_hash, _name, _checkValid);
1407        }
1408
1409      }
1410
1411      @Override
1412      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1413        switch (hash) {
1414        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1415        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<AccountStatus>
1416        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
1417        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
1418        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : this.subject.toArray(new Base[this.subject.size()]); // Reference
1419        case 2129104086: /*servicePeriod*/ return this.servicePeriod == null ? new Base[0] : new Base[] {this.servicePeriod}; // Period
1420        case -351767064: /*coverage*/ return this.coverage == null ? new Base[0] : this.coverage.toArray(new Base[this.coverage.size()]); // CoverageComponent
1421        case 106164915: /*owner*/ return this.owner == null ? new Base[0] : new Base[] {this.owner}; // Reference
1422        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1423        case -188629045: /*guarantor*/ return this.guarantor == null ? new Base[0] : this.guarantor.toArray(new Base[this.guarantor.size()]); // GuarantorComponent
1424        case -995410646: /*partOf*/ return this.partOf == null ? new Base[0] : new Base[] {this.partOf}; // Reference
1425        default: return super.getProperty(hash, name, checkValid);
1426        }
1427
1428      }
1429
1430      @Override
1431      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1432        switch (hash) {
1433        case -1618432855: // identifier
1434          this.getIdentifier().add(castToIdentifier(value)); // Identifier
1435          return value;
1436        case -892481550: // status
1437          value = new AccountStatusEnumFactory().fromType(castToCode(value));
1438          this.status = (Enumeration) value; // Enumeration<AccountStatus>
1439          return value;
1440        case 3575610: // type
1441          this.type = castToCodeableConcept(value); // CodeableConcept
1442          return value;
1443        case 3373707: // name
1444          this.name = castToString(value); // StringType
1445          return value;
1446        case -1867885268: // subject
1447          this.getSubject().add(castToReference(value)); // Reference
1448          return value;
1449        case 2129104086: // servicePeriod
1450          this.servicePeriod = castToPeriod(value); // Period
1451          return value;
1452        case -351767064: // coverage
1453          this.getCoverage().add((CoverageComponent) value); // CoverageComponent
1454          return value;
1455        case 106164915: // owner
1456          this.owner = castToReference(value); // Reference
1457          return value;
1458        case -1724546052: // description
1459          this.description = castToString(value); // StringType
1460          return value;
1461        case -188629045: // guarantor
1462          this.getGuarantor().add((GuarantorComponent) value); // GuarantorComponent
1463          return value;
1464        case -995410646: // partOf
1465          this.partOf = castToReference(value); // Reference
1466          return value;
1467        default: return super.setProperty(hash, name, value);
1468        }
1469
1470      }
1471
1472      @Override
1473      public Base setProperty(String name, Base value) throws FHIRException {
1474        if (name.equals("identifier")) {
1475          this.getIdentifier().add(castToIdentifier(value));
1476        } else if (name.equals("status")) {
1477          value = new AccountStatusEnumFactory().fromType(castToCode(value));
1478          this.status = (Enumeration) value; // Enumeration<AccountStatus>
1479        } else if (name.equals("type")) {
1480          this.type = castToCodeableConcept(value); // CodeableConcept
1481        } else if (name.equals("name")) {
1482          this.name = castToString(value); // StringType
1483        } else if (name.equals("subject")) {
1484          this.getSubject().add(castToReference(value));
1485        } else if (name.equals("servicePeriod")) {
1486          this.servicePeriod = castToPeriod(value); // Period
1487        } else if (name.equals("coverage")) {
1488          this.getCoverage().add((CoverageComponent) value);
1489        } else if (name.equals("owner")) {
1490          this.owner = castToReference(value); // Reference
1491        } else if (name.equals("description")) {
1492          this.description = castToString(value); // StringType
1493        } else if (name.equals("guarantor")) {
1494          this.getGuarantor().add((GuarantorComponent) value);
1495        } else if (name.equals("partOf")) {
1496          this.partOf = castToReference(value); // Reference
1497        } else
1498          return super.setProperty(name, value);
1499        return value;
1500      }
1501
1502      @Override
1503      public Base makeProperty(int hash, String name) throws FHIRException {
1504        switch (hash) {
1505        case -1618432855:  return addIdentifier(); 
1506        case -892481550:  return getStatusElement();
1507        case 3575610:  return getType(); 
1508        case 3373707:  return getNameElement();
1509        case -1867885268:  return addSubject(); 
1510        case 2129104086:  return getServicePeriod(); 
1511        case -351767064:  return addCoverage(); 
1512        case 106164915:  return getOwner(); 
1513        case -1724546052:  return getDescriptionElement();
1514        case -188629045:  return addGuarantor(); 
1515        case -995410646:  return getPartOf(); 
1516        default: return super.makeProperty(hash, name);
1517        }
1518
1519      }
1520
1521      @Override
1522      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1523        switch (hash) {
1524        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1525        case -892481550: /*status*/ return new String[] {"code"};
1526        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
1527        case 3373707: /*name*/ return new String[] {"string"};
1528        case -1867885268: /*subject*/ return new String[] {"Reference"};
1529        case 2129104086: /*servicePeriod*/ return new String[] {"Period"};
1530        case -351767064: /*coverage*/ return new String[] {};
1531        case 106164915: /*owner*/ return new String[] {"Reference"};
1532        case -1724546052: /*description*/ return new String[] {"string"};
1533        case -188629045: /*guarantor*/ return new String[] {};
1534        case -995410646: /*partOf*/ return new String[] {"Reference"};
1535        default: return super.getTypesForProperty(hash, name);
1536        }
1537
1538      }
1539
1540      @Override
1541      public Base addChild(String name) throws FHIRException {
1542        if (name.equals("identifier")) {
1543          return addIdentifier();
1544        }
1545        else if (name.equals("status")) {
1546          throw new FHIRException("Cannot call addChild on a primitive type Account.status");
1547        }
1548        else if (name.equals("type")) {
1549          this.type = new CodeableConcept();
1550          return this.type;
1551        }
1552        else if (name.equals("name")) {
1553          throw new FHIRException("Cannot call addChild on a primitive type Account.name");
1554        }
1555        else if (name.equals("subject")) {
1556          return addSubject();
1557        }
1558        else if (name.equals("servicePeriod")) {
1559          this.servicePeriod = new Period();
1560          return this.servicePeriod;
1561        }
1562        else if (name.equals("coverage")) {
1563          return addCoverage();
1564        }
1565        else if (name.equals("owner")) {
1566          this.owner = new Reference();
1567          return this.owner;
1568        }
1569        else if (name.equals("description")) {
1570          throw new FHIRException("Cannot call addChild on a primitive type Account.description");
1571        }
1572        else if (name.equals("guarantor")) {
1573          return addGuarantor();
1574        }
1575        else if (name.equals("partOf")) {
1576          this.partOf = new Reference();
1577          return this.partOf;
1578        }
1579        else
1580          return super.addChild(name);
1581      }
1582
1583  public String fhirType() {
1584    return "Account";
1585
1586  }
1587
1588      public Account copy() {
1589        Account dst = new Account();
1590        copyValues(dst);
1591        if (identifier != null) {
1592          dst.identifier = new ArrayList<Identifier>();
1593          for (Identifier i : identifier)
1594            dst.identifier.add(i.copy());
1595        };
1596        dst.status = status == null ? null : status.copy();
1597        dst.type = type == null ? null : type.copy();
1598        dst.name = name == null ? null : name.copy();
1599        if (subject != null) {
1600          dst.subject = new ArrayList<Reference>();
1601          for (Reference i : subject)
1602            dst.subject.add(i.copy());
1603        };
1604        dst.servicePeriod = servicePeriod == null ? null : servicePeriod.copy();
1605        if (coverage != null) {
1606          dst.coverage = new ArrayList<CoverageComponent>();
1607          for (CoverageComponent i : coverage)
1608            dst.coverage.add(i.copy());
1609        };
1610        dst.owner = owner == null ? null : owner.copy();
1611        dst.description = description == null ? null : description.copy();
1612        if (guarantor != null) {
1613          dst.guarantor = new ArrayList<GuarantorComponent>();
1614          for (GuarantorComponent i : guarantor)
1615            dst.guarantor.add(i.copy());
1616        };
1617        dst.partOf = partOf == null ? null : partOf.copy();
1618        return dst;
1619      }
1620
1621      protected Account typedCopy() {
1622        return copy();
1623      }
1624
1625      @Override
1626      public boolean equalsDeep(Base other_) {
1627        if (!super.equalsDeep(other_))
1628          return false;
1629        if (!(other_ instanceof Account))
1630          return false;
1631        Account o = (Account) other_;
1632        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(type, o.type, true)
1633           && compareDeep(name, o.name, true) && compareDeep(subject, o.subject, true) && compareDeep(servicePeriod, o.servicePeriod, true)
1634           && compareDeep(coverage, o.coverage, true) && compareDeep(owner, o.owner, true) && compareDeep(description, o.description, true)
1635           && compareDeep(guarantor, o.guarantor, true) && compareDeep(partOf, o.partOf, true);
1636      }
1637
1638      @Override
1639      public boolean equalsShallow(Base other_) {
1640        if (!super.equalsShallow(other_))
1641          return false;
1642        if (!(other_ instanceof Account))
1643          return false;
1644        Account o = (Account) other_;
1645        return compareValues(status, o.status, true) && compareValues(name, o.name, true) && compareValues(description, o.description, true)
1646          ;
1647      }
1648
1649      public boolean isEmpty() {
1650        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, type
1651          , name, subject, servicePeriod, coverage, owner, description, guarantor, partOf
1652          );
1653      }
1654
1655  @Override
1656  public ResourceType getResourceType() {
1657    return ResourceType.Account;
1658   }
1659
1660 /**
1661   * Search parameter: <b>owner</b>
1662   * <p>
1663   * Description: <b>Entity managing the Account</b><br>
1664   * Type: <b>reference</b><br>
1665   * Path: <b>Account.owner</b><br>
1666   * </p>
1667   */
1668  @SearchParamDefinition(name="owner", path="Account.owner", description="Entity managing the Account", type="reference", target={Organization.class } )
1669  public static final String SP_OWNER = "owner";
1670 /**
1671   * <b>Fluent Client</b> search parameter constant for <b>owner</b>
1672   * <p>
1673   * Description: <b>Entity managing the Account</b><br>
1674   * Type: <b>reference</b><br>
1675   * Path: <b>Account.owner</b><br>
1676   * </p>
1677   */
1678  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam OWNER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_OWNER);
1679
1680/**
1681   * Constant for fluent queries to be used to add include statements. Specifies
1682   * the path value of "<b>Account:owner</b>".
1683   */
1684  public static final ca.uhn.fhir.model.api.Include INCLUDE_OWNER = new ca.uhn.fhir.model.api.Include("Account:owner").toLocked();
1685
1686 /**
1687   * Search parameter: <b>identifier</b>
1688   * <p>
1689   * Description: <b>Account number</b><br>
1690   * Type: <b>token</b><br>
1691   * Path: <b>Account.identifier</b><br>
1692   * </p>
1693   */
1694  @SearchParamDefinition(name="identifier", path="Account.identifier", description="Account number", type="token" )
1695  public static final String SP_IDENTIFIER = "identifier";
1696 /**
1697   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1698   * <p>
1699   * Description: <b>Account number</b><br>
1700   * Type: <b>token</b><br>
1701   * Path: <b>Account.identifier</b><br>
1702   * </p>
1703   */
1704  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1705
1706 /**
1707   * Search parameter: <b>period</b>
1708   * <p>
1709   * Description: <b>Transaction window</b><br>
1710   * Type: <b>date</b><br>
1711   * Path: <b>Account.servicePeriod</b><br>
1712   * </p>
1713   */
1714  @SearchParamDefinition(name="period", path="Account.servicePeriod", description="Transaction window", type="date" )
1715  public static final String SP_PERIOD = "period";
1716 /**
1717   * <b>Fluent Client</b> search parameter constant for <b>period</b>
1718   * <p>
1719   * Description: <b>Transaction window</b><br>
1720   * Type: <b>date</b><br>
1721   * Path: <b>Account.servicePeriod</b><br>
1722   * </p>
1723   */
1724  public static final ca.uhn.fhir.rest.gclient.DateClientParam PERIOD = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_PERIOD);
1725
1726 /**
1727   * Search parameter: <b>subject</b>
1728   * <p>
1729   * Description: <b>The entity that caused the expenses</b><br>
1730   * Type: <b>reference</b><br>
1731   * Path: <b>Account.subject</b><br>
1732   * </p>
1733   */
1734  @SearchParamDefinition(name="subject", path="Account.subject", description="The entity that caused the expenses", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Patient"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Practitioner") }, target={Device.class, HealthcareService.class, Location.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class } )
1735  public static final String SP_SUBJECT = "subject";
1736 /**
1737   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
1738   * <p>
1739   * Description: <b>The entity that caused the expenses</b><br>
1740   * Type: <b>reference</b><br>
1741   * Path: <b>Account.subject</b><br>
1742   * </p>
1743   */
1744  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
1745
1746/**
1747   * Constant for fluent queries to be used to add include statements. Specifies
1748   * the path value of "<b>Account:subject</b>".
1749   */
1750  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("Account:subject").toLocked();
1751
1752 /**
1753   * Search parameter: <b>patient</b>
1754   * <p>
1755   * Description: <b>The entity that caused the expenses</b><br>
1756   * Type: <b>reference</b><br>
1757   * Path: <b>Account.subject</b><br>
1758   * </p>
1759   */
1760  @SearchParamDefinition(name="patient", path="Account.subject.where(resolve() is Patient)", description="The entity that caused the expenses", type="reference", target={Patient.class } )
1761  public static final String SP_PATIENT = "patient";
1762 /**
1763   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1764   * <p>
1765   * Description: <b>The entity that caused the expenses</b><br>
1766   * Type: <b>reference</b><br>
1767   * Path: <b>Account.subject</b><br>
1768   * </p>
1769   */
1770  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1771
1772/**
1773   * Constant for fluent queries to be used to add include statements. Specifies
1774   * the path value of "<b>Account:patient</b>".
1775   */
1776  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("Account:patient").toLocked();
1777
1778 /**
1779   * Search parameter: <b>name</b>
1780   * <p>
1781   * Description: <b>Human-readable label</b><br>
1782   * Type: <b>string</b><br>
1783   * Path: <b>Account.name</b><br>
1784   * </p>
1785   */
1786  @SearchParamDefinition(name="name", path="Account.name", description="Human-readable label", type="string" )
1787  public static final String SP_NAME = "name";
1788 /**
1789   * <b>Fluent Client</b> search parameter constant for <b>name</b>
1790   * <p>
1791   * Description: <b>Human-readable label</b><br>
1792   * Type: <b>string</b><br>
1793   * Path: <b>Account.name</b><br>
1794   * </p>
1795   */
1796  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
1797
1798 /**
1799   * Search parameter: <b>type</b>
1800   * <p>
1801   * Description: <b>E.g. patient, expense, depreciation</b><br>
1802   * Type: <b>token</b><br>
1803   * Path: <b>Account.type</b><br>
1804   * </p>
1805   */
1806  @SearchParamDefinition(name="type", path="Account.type", description="E.g. patient, expense, depreciation", type="token" )
1807  public static final String SP_TYPE = "type";
1808 /**
1809   * <b>Fluent Client</b> search parameter constant for <b>type</b>
1810   * <p>
1811   * Description: <b>E.g. patient, expense, depreciation</b><br>
1812   * Type: <b>token</b><br>
1813   * Path: <b>Account.type</b><br>
1814   * </p>
1815   */
1816  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TYPE);
1817
1818 /**
1819   * Search parameter: <b>status</b>
1820   * <p>
1821   * Description: <b>active | inactive | entered-in-error | on-hold | unknown</b><br>
1822   * Type: <b>token</b><br>
1823   * Path: <b>Account.status</b><br>
1824   * </p>
1825   */
1826  @SearchParamDefinition(name="status", path="Account.status", description="active | inactive | entered-in-error | on-hold | unknown", type="token" )
1827  public static final String SP_STATUS = "status";
1828 /**
1829   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1830   * <p>
1831   * Description: <b>active | inactive | entered-in-error | on-hold | unknown</b><br>
1832   * Type: <b>token</b><br>
1833   * Path: <b>Account.status</b><br>
1834   * </p>
1835   */
1836  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1837
1838
1839}
1840