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