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