001package org.hl7.fhir.r4.model;
002
003/*-
004 * #%L
005 * org.hl7.fhir.r4
006 * %%
007 * Copyright (C) 2014 - 2019 Health Level 7
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 * 
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 * 
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023/*
024  Copyright (c) 2011+, HL7, Inc.
025  All rights reserved.
026  
027  Redistribution and use in source and binary forms, with or without modification, 
028  are permitted provided that the following conditions are met:
029  
030   * Redistributions of source code must retain the above copyright notice, this 
031     list of conditions and the following disclaimer.
032   * Redistributions in binary form must reproduce the above copyright notice, 
033     this list of conditions and the following disclaimer in the documentation 
034     and/or other materials provided with the distribution.
035   * Neither the name of HL7 nor the names of its contributors may be used to 
036     endorse or promote products derived from this software without specific 
037     prior written permission.
038  
039  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
040  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
041  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
042  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
043  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
044  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
045  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
046  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
047  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
048  POSSIBILITY OF SUCH DAMAGE.
049  
050*/
051
052// Generated on Thu, Dec 13, 2018 14:07+1100 for FHIR v4.0.0
053import java.util.ArrayList;
054import java.util.Date;
055import java.util.List;
056
057import org.hl7.fhir.exceptions.FHIRException;
058import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
059import org.hl7.fhir.r4.model.Enumerations.NoteType;
060import org.hl7.fhir.r4.model.Enumerations.NoteTypeEnumFactory;
061import org.hl7.fhir.r4.model.Enumerations.RemittanceOutcome;
062import org.hl7.fhir.r4.model.Enumerations.RemittanceOutcomeEnumFactory;
063import org.hl7.fhir.utilities.Utilities;
064
065import ca.uhn.fhir.model.api.annotation.Block;
066import ca.uhn.fhir.model.api.annotation.Child;
067import ca.uhn.fhir.model.api.annotation.Description;
068import ca.uhn.fhir.model.api.annotation.ResourceDef;
069import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
070/**
071 * This resource provides the details including amount of a payment and allocates the payment items being paid.
072 */
073@ResourceDef(name="PaymentReconciliation", profile="http://hl7.org/fhir/StructureDefinition/PaymentReconciliation")
074public class PaymentReconciliation extends DomainResource {
075
076    public enum PaymentReconciliationStatus {
077        /**
078         * The instance is currently in-force.
079         */
080        ACTIVE, 
081        /**
082         * The instance is withdrawn, rescinded or reversed.
083         */
084        CANCELLED, 
085        /**
086         * A new instance the contents of which is not complete.
087         */
088        DRAFT, 
089        /**
090         * The instance was entered in error.
091         */
092        ENTEREDINERROR, 
093        /**
094         * added to help the parsers with the generic types
095         */
096        NULL;
097        public static PaymentReconciliationStatus fromCode(String codeString) throws FHIRException {
098            if (codeString == null || "".equals(codeString))
099                return null;
100        if ("active".equals(codeString))
101          return ACTIVE;
102        if ("cancelled".equals(codeString))
103          return CANCELLED;
104        if ("draft".equals(codeString))
105          return DRAFT;
106        if ("entered-in-error".equals(codeString))
107          return ENTEREDINERROR;
108        if (Configuration.isAcceptInvalidEnums())
109          return null;
110        else
111          throw new FHIRException("Unknown PaymentReconciliationStatus code '"+codeString+"'");
112        }
113        public String toCode() {
114          switch (this) {
115            case ACTIVE: return "active";
116            case CANCELLED: return "cancelled";
117            case DRAFT: return "draft";
118            case ENTEREDINERROR: return "entered-in-error";
119            default: return "?";
120          }
121        }
122        public String getSystem() {
123          switch (this) {
124            case ACTIVE: return "http://hl7.org/fhir/fm-status";
125            case CANCELLED: return "http://hl7.org/fhir/fm-status";
126            case DRAFT: return "http://hl7.org/fhir/fm-status";
127            case ENTEREDINERROR: return "http://hl7.org/fhir/fm-status";
128            default: return "?";
129          }
130        }
131        public String getDefinition() {
132          switch (this) {
133            case ACTIVE: return "The instance is currently in-force.";
134            case CANCELLED: return "The instance is withdrawn, rescinded or reversed.";
135            case DRAFT: return "A new instance the contents of which is not complete.";
136            case ENTEREDINERROR: return "The instance was entered in error.";
137            default: return "?";
138          }
139        }
140        public String getDisplay() {
141          switch (this) {
142            case ACTIVE: return "Active";
143            case CANCELLED: return "Cancelled";
144            case DRAFT: return "Draft";
145            case ENTEREDINERROR: return "Entered in Error";
146            default: return "?";
147          }
148        }
149    }
150
151  public static class PaymentReconciliationStatusEnumFactory implements EnumFactory<PaymentReconciliationStatus> {
152    public PaymentReconciliationStatus fromCode(String codeString) throws IllegalArgumentException {
153      if (codeString == null || "".equals(codeString))
154            if (codeString == null || "".equals(codeString))
155                return null;
156        if ("active".equals(codeString))
157          return PaymentReconciliationStatus.ACTIVE;
158        if ("cancelled".equals(codeString))
159          return PaymentReconciliationStatus.CANCELLED;
160        if ("draft".equals(codeString))
161          return PaymentReconciliationStatus.DRAFT;
162        if ("entered-in-error".equals(codeString))
163          return PaymentReconciliationStatus.ENTEREDINERROR;
164        throw new IllegalArgumentException("Unknown PaymentReconciliationStatus code '"+codeString+"'");
165        }
166        public Enumeration<PaymentReconciliationStatus> fromType(Base code) throws FHIRException {
167          if (code == null)
168            return null;
169          if (code.isEmpty())
170            return new Enumeration<PaymentReconciliationStatus>(this);
171          String codeString = ((PrimitiveType) code).asStringValue();
172          if (codeString == null || "".equals(codeString))
173            return null;
174        if ("active".equals(codeString))
175          return new Enumeration<PaymentReconciliationStatus>(this, PaymentReconciliationStatus.ACTIVE);
176        if ("cancelled".equals(codeString))
177          return new Enumeration<PaymentReconciliationStatus>(this, PaymentReconciliationStatus.CANCELLED);
178        if ("draft".equals(codeString))
179          return new Enumeration<PaymentReconciliationStatus>(this, PaymentReconciliationStatus.DRAFT);
180        if ("entered-in-error".equals(codeString))
181          return new Enumeration<PaymentReconciliationStatus>(this, PaymentReconciliationStatus.ENTEREDINERROR);
182        throw new FHIRException("Unknown PaymentReconciliationStatus code '"+codeString+"'");
183        }
184    public String toCode(PaymentReconciliationStatus code) {
185      if (code == PaymentReconciliationStatus.ACTIVE)
186        return "active";
187      if (code == PaymentReconciliationStatus.CANCELLED)
188        return "cancelled";
189      if (code == PaymentReconciliationStatus.DRAFT)
190        return "draft";
191      if (code == PaymentReconciliationStatus.ENTEREDINERROR)
192        return "entered-in-error";
193      return "?";
194      }
195    public String toSystem(PaymentReconciliationStatus code) {
196      return code.getSystem();
197      }
198    }
199
200    @Block()
201    public static class DetailsComponent extends BackboneElement implements IBaseBackboneElement {
202        /**
203         * Unique identifier for the current payment item for the referenced payable.
204         */
205        @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1, modifier=false, summary=false)
206        @Description(shortDefinition="Business identifier of the payment detail", formalDefinition="Unique identifier for the current payment item for the referenced payable." )
207        protected Identifier identifier;
208
209        /**
210         * Unique identifier for the prior payment item for the referenced payable.
211         */
212        @Child(name = "predecessor", type = {Identifier.class}, order=2, min=0, max=1, modifier=false, summary=false)
213        @Description(shortDefinition="Business identifier of the prior payment detail", formalDefinition="Unique identifier for the prior payment item for the referenced payable." )
214        protected Identifier predecessor;
215
216        /**
217         * Code to indicate the nature of the payment.
218         */
219        @Child(name = "type", type = {CodeableConcept.class}, order=3, min=1, max=1, modifier=false, summary=false)
220        @Description(shortDefinition="Category of payment", formalDefinition="Code to indicate the nature of the payment." )
221        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/payment-type")
222        protected CodeableConcept type;
223
224        /**
225         * A resource, such as a Claim, the evaluation of which could lead to payment.
226         */
227        @Child(name = "request", type = {Reference.class}, order=4, min=0, max=1, modifier=false, summary=false)
228        @Description(shortDefinition="Request giving rise to the payment", formalDefinition="A resource, such as a Claim, the evaluation of which could lead to payment." )
229        protected Reference request;
230
231        /**
232         * The actual object that is the target of the reference (A resource, such as a Claim, the evaluation of which could lead to payment.)
233         */
234        protected Resource requestTarget;
235
236        /**
237         * The party which submitted the claim or financial transaction.
238         */
239        @Child(name = "submitter", type = {Practitioner.class, PractitionerRole.class, Organization.class}, order=5, min=0, max=1, modifier=false, summary=false)
240        @Description(shortDefinition="Submitter of the request", formalDefinition="The party which submitted the claim or financial transaction." )
241        protected Reference submitter;
242
243        /**
244         * The actual object that is the target of the reference (The party which submitted the claim or financial transaction.)
245         */
246        protected Resource submitterTarget;
247
248        /**
249         * A resource, such as a ClaimResponse, which contains a commitment to payment.
250         */
251        @Child(name = "response", type = {Reference.class}, order=6, min=0, max=1, modifier=false, summary=false)
252        @Description(shortDefinition="Response committing to a payment", formalDefinition="A resource, such as a ClaimResponse, which contains a commitment to payment." )
253        protected Reference response;
254
255        /**
256         * The actual object that is the target of the reference (A resource, such as a ClaimResponse, which contains a commitment to payment.)
257         */
258        protected Resource responseTarget;
259
260        /**
261         * The date from the response resource containing a commitment to pay.
262         */
263        @Child(name = "date", type = {DateType.class}, order=7, min=0, max=1, modifier=false, summary=false)
264        @Description(shortDefinition="Date of commitment to pay", formalDefinition="The date from the response resource containing a commitment to pay." )
265        protected DateType date;
266
267        /**
268         * A reference to the individual who is responsible for inquiries regarding the response and its payment.
269         */
270        @Child(name = "responsible", type = {PractitionerRole.class}, order=8, min=0, max=1, modifier=false, summary=false)
271        @Description(shortDefinition="Contact for the response", formalDefinition="A reference to the individual who is responsible for inquiries regarding the response and its payment." )
272        protected Reference responsible;
273
274        /**
275         * The actual object that is the target of the reference (A reference to the individual who is responsible for inquiries regarding the response and its payment.)
276         */
277        protected PractitionerRole responsibleTarget;
278
279        /**
280         * The party which is receiving the payment.
281         */
282        @Child(name = "payee", type = {Practitioner.class, PractitionerRole.class, Organization.class}, order=9, min=0, max=1, modifier=false, summary=false)
283        @Description(shortDefinition="Recipient of the payment", formalDefinition="The party which is receiving the payment." )
284        protected Reference payee;
285
286        /**
287         * The actual object that is the target of the reference (The party which is receiving the payment.)
288         */
289        protected Resource payeeTarget;
290
291        /**
292         * The monetary amount allocated from the total payment to the payable.
293         */
294        @Child(name = "amount", type = {Money.class}, order=10, min=0, max=1, modifier=false, summary=false)
295        @Description(shortDefinition="Amount allocated to this payable", formalDefinition="The monetary amount allocated from the total payment to the payable." )
296        protected Money amount;
297
298        private static final long serialVersionUID = -1361848619L;
299
300    /**
301     * Constructor
302     */
303      public DetailsComponent() {
304        super();
305      }
306
307    /**
308     * Constructor
309     */
310      public DetailsComponent(CodeableConcept type) {
311        super();
312        this.type = type;
313      }
314
315        /**
316         * @return {@link #identifier} (Unique identifier for the current payment item for the referenced payable.)
317         */
318        public Identifier getIdentifier() { 
319          if (this.identifier == null)
320            if (Configuration.errorOnAutoCreate())
321              throw new Error("Attempt to auto-create DetailsComponent.identifier");
322            else if (Configuration.doAutoCreate())
323              this.identifier = new Identifier(); // cc
324          return this.identifier;
325        }
326
327        public boolean hasIdentifier() { 
328          return this.identifier != null && !this.identifier.isEmpty();
329        }
330
331        /**
332         * @param value {@link #identifier} (Unique identifier for the current payment item for the referenced payable.)
333         */
334        public DetailsComponent setIdentifier(Identifier value) { 
335          this.identifier = value;
336          return this;
337        }
338
339        /**
340         * @return {@link #predecessor} (Unique identifier for the prior payment item for the referenced payable.)
341         */
342        public Identifier getPredecessor() { 
343          if (this.predecessor == null)
344            if (Configuration.errorOnAutoCreate())
345              throw new Error("Attempt to auto-create DetailsComponent.predecessor");
346            else if (Configuration.doAutoCreate())
347              this.predecessor = new Identifier(); // cc
348          return this.predecessor;
349        }
350
351        public boolean hasPredecessor() { 
352          return this.predecessor != null && !this.predecessor.isEmpty();
353        }
354
355        /**
356         * @param value {@link #predecessor} (Unique identifier for the prior payment item for the referenced payable.)
357         */
358        public DetailsComponent setPredecessor(Identifier value) { 
359          this.predecessor = value;
360          return this;
361        }
362
363        /**
364         * @return {@link #type} (Code to indicate the nature of the payment.)
365         */
366        public CodeableConcept getType() { 
367          if (this.type == null)
368            if (Configuration.errorOnAutoCreate())
369              throw new Error("Attempt to auto-create DetailsComponent.type");
370            else if (Configuration.doAutoCreate())
371              this.type = new CodeableConcept(); // cc
372          return this.type;
373        }
374
375        public boolean hasType() { 
376          return this.type != null && !this.type.isEmpty();
377        }
378
379        /**
380         * @param value {@link #type} (Code to indicate the nature of the payment.)
381         */
382        public DetailsComponent setType(CodeableConcept value) { 
383          this.type = value;
384          return this;
385        }
386
387        /**
388         * @return {@link #request} (A resource, such as a Claim, the evaluation of which could lead to payment.)
389         */
390        public Reference getRequest() { 
391          if (this.request == null)
392            if (Configuration.errorOnAutoCreate())
393              throw new Error("Attempt to auto-create DetailsComponent.request");
394            else if (Configuration.doAutoCreate())
395              this.request = new Reference(); // cc
396          return this.request;
397        }
398
399        public boolean hasRequest() { 
400          return this.request != null && !this.request.isEmpty();
401        }
402
403        /**
404         * @param value {@link #request} (A resource, such as a Claim, the evaluation of which could lead to payment.)
405         */
406        public DetailsComponent setRequest(Reference value) { 
407          this.request = value;
408          return this;
409        }
410
411        /**
412         * @return {@link #request} 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. (A resource, such as a Claim, the evaluation of which could lead to payment.)
413         */
414        public Resource getRequestTarget() { 
415          return this.requestTarget;
416        }
417
418        /**
419         * @param value {@link #request} 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. (A resource, such as a Claim, the evaluation of which could lead to payment.)
420         */
421        public DetailsComponent setRequestTarget(Resource value) { 
422          this.requestTarget = value;
423          return this;
424        }
425
426        /**
427         * @return {@link #submitter} (The party which submitted the claim or financial transaction.)
428         */
429        public Reference getSubmitter() { 
430          if (this.submitter == null)
431            if (Configuration.errorOnAutoCreate())
432              throw new Error("Attempt to auto-create DetailsComponent.submitter");
433            else if (Configuration.doAutoCreate())
434              this.submitter = new Reference(); // cc
435          return this.submitter;
436        }
437
438        public boolean hasSubmitter() { 
439          return this.submitter != null && !this.submitter.isEmpty();
440        }
441
442        /**
443         * @param value {@link #submitter} (The party which submitted the claim or financial transaction.)
444         */
445        public DetailsComponent setSubmitter(Reference value) { 
446          this.submitter = value;
447          return this;
448        }
449
450        /**
451         * @return {@link #submitter} 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 which submitted the claim or financial transaction.)
452         */
453        public Resource getSubmitterTarget() { 
454          return this.submitterTarget;
455        }
456
457        /**
458         * @param value {@link #submitter} 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 which submitted the claim or financial transaction.)
459         */
460        public DetailsComponent setSubmitterTarget(Resource value) { 
461          this.submitterTarget = value;
462          return this;
463        }
464
465        /**
466         * @return {@link #response} (A resource, such as a ClaimResponse, which contains a commitment to payment.)
467         */
468        public Reference getResponse() { 
469          if (this.response == null)
470            if (Configuration.errorOnAutoCreate())
471              throw new Error("Attempt to auto-create DetailsComponent.response");
472            else if (Configuration.doAutoCreate())
473              this.response = new Reference(); // cc
474          return this.response;
475        }
476
477        public boolean hasResponse() { 
478          return this.response != null && !this.response.isEmpty();
479        }
480
481        /**
482         * @param value {@link #response} (A resource, such as a ClaimResponse, which contains a commitment to payment.)
483         */
484        public DetailsComponent setResponse(Reference value) { 
485          this.response = value;
486          return this;
487        }
488
489        /**
490         * @return {@link #response} 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. (A resource, such as a ClaimResponse, which contains a commitment to payment.)
491         */
492        public Resource getResponseTarget() { 
493          return this.responseTarget;
494        }
495
496        /**
497         * @param value {@link #response} 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. (A resource, such as a ClaimResponse, which contains a commitment to payment.)
498         */
499        public DetailsComponent setResponseTarget(Resource value) { 
500          this.responseTarget = value;
501          return this;
502        }
503
504        /**
505         * @return {@link #date} (The date from the response resource containing a commitment to pay.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
506         */
507        public DateType getDateElement() { 
508          if (this.date == null)
509            if (Configuration.errorOnAutoCreate())
510              throw new Error("Attempt to auto-create DetailsComponent.date");
511            else if (Configuration.doAutoCreate())
512              this.date = new DateType(); // bb
513          return this.date;
514        }
515
516        public boolean hasDateElement() { 
517          return this.date != null && !this.date.isEmpty();
518        }
519
520        public boolean hasDate() { 
521          return this.date != null && !this.date.isEmpty();
522        }
523
524        /**
525         * @param value {@link #date} (The date from the response resource containing a commitment to pay.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
526         */
527        public DetailsComponent setDateElement(DateType value) { 
528          this.date = value;
529          return this;
530        }
531
532        /**
533         * @return The date from the response resource containing a commitment to pay.
534         */
535        public Date getDate() { 
536          return this.date == null ? null : this.date.getValue();
537        }
538
539        /**
540         * @param value The date from the response resource containing a commitment to pay.
541         */
542        public DetailsComponent setDate(Date value) { 
543          if (value == null)
544            this.date = null;
545          else {
546            if (this.date == null)
547              this.date = new DateType();
548            this.date.setValue(value);
549          }
550          return this;
551        }
552
553        /**
554         * @return {@link #responsible} (A reference to the individual who is responsible for inquiries regarding the response and its payment.)
555         */
556        public Reference getResponsible() { 
557          if (this.responsible == null)
558            if (Configuration.errorOnAutoCreate())
559              throw new Error("Attempt to auto-create DetailsComponent.responsible");
560            else if (Configuration.doAutoCreate())
561              this.responsible = new Reference(); // cc
562          return this.responsible;
563        }
564
565        public boolean hasResponsible() { 
566          return this.responsible != null && !this.responsible.isEmpty();
567        }
568
569        /**
570         * @param value {@link #responsible} (A reference to the individual who is responsible for inquiries regarding the response and its payment.)
571         */
572        public DetailsComponent setResponsible(Reference value) { 
573          this.responsible = value;
574          return this;
575        }
576
577        /**
578         * @return {@link #responsible} 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. (A reference to the individual who is responsible for inquiries regarding the response and its payment.)
579         */
580        public PractitionerRole getResponsibleTarget() { 
581          if (this.responsibleTarget == null)
582            if (Configuration.errorOnAutoCreate())
583              throw new Error("Attempt to auto-create DetailsComponent.responsible");
584            else if (Configuration.doAutoCreate())
585              this.responsibleTarget = new PractitionerRole(); // aa
586          return this.responsibleTarget;
587        }
588
589        /**
590         * @param value {@link #responsible} 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. (A reference to the individual who is responsible for inquiries regarding the response and its payment.)
591         */
592        public DetailsComponent setResponsibleTarget(PractitionerRole value) { 
593          this.responsibleTarget = value;
594          return this;
595        }
596
597        /**
598         * @return {@link #payee} (The party which is receiving the payment.)
599         */
600        public Reference getPayee() { 
601          if (this.payee == null)
602            if (Configuration.errorOnAutoCreate())
603              throw new Error("Attempt to auto-create DetailsComponent.payee");
604            else if (Configuration.doAutoCreate())
605              this.payee = new Reference(); // cc
606          return this.payee;
607        }
608
609        public boolean hasPayee() { 
610          return this.payee != null && !this.payee.isEmpty();
611        }
612
613        /**
614         * @param value {@link #payee} (The party which is receiving the payment.)
615         */
616        public DetailsComponent setPayee(Reference value) { 
617          this.payee = value;
618          return this;
619        }
620
621        /**
622         * @return {@link #payee} 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 which is receiving the payment.)
623         */
624        public Resource getPayeeTarget() { 
625          return this.payeeTarget;
626        }
627
628        /**
629         * @param value {@link #payee} 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 which is receiving the payment.)
630         */
631        public DetailsComponent setPayeeTarget(Resource value) { 
632          this.payeeTarget = value;
633          return this;
634        }
635
636        /**
637         * @return {@link #amount} (The monetary amount allocated from the total payment to the payable.)
638         */
639        public Money getAmount() { 
640          if (this.amount == null)
641            if (Configuration.errorOnAutoCreate())
642              throw new Error("Attempt to auto-create DetailsComponent.amount");
643            else if (Configuration.doAutoCreate())
644              this.amount = new Money(); // cc
645          return this.amount;
646        }
647
648        public boolean hasAmount() { 
649          return this.amount != null && !this.amount.isEmpty();
650        }
651
652        /**
653         * @param value {@link #amount} (The monetary amount allocated from the total payment to the payable.)
654         */
655        public DetailsComponent setAmount(Money value) { 
656          this.amount = value;
657          return this;
658        }
659
660        protected void listChildren(List<Property> children) {
661          super.listChildren(children);
662          children.add(new Property("identifier", "Identifier", "Unique identifier for the current payment item for the referenced payable.", 0, 1, identifier));
663          children.add(new Property("predecessor", "Identifier", "Unique identifier for the prior payment item for the referenced payable.", 0, 1, predecessor));
664          children.add(new Property("type", "CodeableConcept", "Code to indicate the nature of the payment.", 0, 1, type));
665          children.add(new Property("request", "Reference(Any)", "A resource, such as a Claim, the evaluation of which could lead to payment.", 0, 1, request));
666          children.add(new Property("submitter", "Reference(Practitioner|PractitionerRole|Organization)", "The party which submitted the claim or financial transaction.", 0, 1, submitter));
667          children.add(new Property("response", "Reference(Any)", "A resource, such as a ClaimResponse, which contains a commitment to payment.", 0, 1, response));
668          children.add(new Property("date", "date", "The date from the response resource containing a commitment to pay.", 0, 1, date));
669          children.add(new Property("responsible", "Reference(PractitionerRole)", "A reference to the individual who is responsible for inquiries regarding the response and its payment.", 0, 1, responsible));
670          children.add(new Property("payee", "Reference(Practitioner|PractitionerRole|Organization)", "The party which is receiving the payment.", 0, 1, payee));
671          children.add(new Property("amount", "Money", "The monetary amount allocated from the total payment to the payable.", 0, 1, amount));
672        }
673
674        @Override
675        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
676          switch (_hash) {
677          case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Unique identifier for the current payment item for the referenced payable.", 0, 1, identifier);
678          case -1925032183: /*predecessor*/  return new Property("predecessor", "Identifier", "Unique identifier for the prior payment item for the referenced payable.", 0, 1, predecessor);
679          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Code to indicate the nature of the payment.", 0, 1, type);
680          case 1095692943: /*request*/  return new Property("request", "Reference(Any)", "A resource, such as a Claim, the evaluation of which could lead to payment.", 0, 1, request);
681          case 348678409: /*submitter*/  return new Property("submitter", "Reference(Practitioner|PractitionerRole|Organization)", "The party which submitted the claim or financial transaction.", 0, 1, submitter);
682          case -340323263: /*response*/  return new Property("response", "Reference(Any)", "A resource, such as a ClaimResponse, which contains a commitment to payment.", 0, 1, response);
683          case 3076014: /*date*/  return new Property("date", "date", "The date from the response resource containing a commitment to pay.", 0, 1, date);
684          case 1847674614: /*responsible*/  return new Property("responsible", "Reference(PractitionerRole)", "A reference to the individual who is responsible for inquiries regarding the response and its payment.", 0, 1, responsible);
685          case 106443592: /*payee*/  return new Property("payee", "Reference(Practitioner|PractitionerRole|Organization)", "The party which is receiving the payment.", 0, 1, payee);
686          case -1413853096: /*amount*/  return new Property("amount", "Money", "The monetary amount allocated from the total payment to the payable.", 0, 1, amount);
687          default: return super.getNamedProperty(_hash, _name, _checkValid);
688          }
689
690        }
691
692      @Override
693      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
694        switch (hash) {
695        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : new Base[] {this.identifier}; // Identifier
696        case -1925032183: /*predecessor*/ return this.predecessor == null ? new Base[0] : new Base[] {this.predecessor}; // Identifier
697        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
698        case 1095692943: /*request*/ return this.request == null ? new Base[0] : new Base[] {this.request}; // Reference
699        case 348678409: /*submitter*/ return this.submitter == null ? new Base[0] : new Base[] {this.submitter}; // Reference
700        case -340323263: /*response*/ return this.response == null ? new Base[0] : new Base[] {this.response}; // Reference
701        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateType
702        case 1847674614: /*responsible*/ return this.responsible == null ? new Base[0] : new Base[] {this.responsible}; // Reference
703        case 106443592: /*payee*/ return this.payee == null ? new Base[0] : new Base[] {this.payee}; // Reference
704        case -1413853096: /*amount*/ return this.amount == null ? new Base[0] : new Base[] {this.amount}; // Money
705        default: return super.getProperty(hash, name, checkValid);
706        }
707
708      }
709
710      @Override
711      public Base setProperty(int hash, String name, Base value) throws FHIRException {
712        switch (hash) {
713        case -1618432855: // identifier
714          this.identifier = castToIdentifier(value); // Identifier
715          return value;
716        case -1925032183: // predecessor
717          this.predecessor = castToIdentifier(value); // Identifier
718          return value;
719        case 3575610: // type
720          this.type = castToCodeableConcept(value); // CodeableConcept
721          return value;
722        case 1095692943: // request
723          this.request = castToReference(value); // Reference
724          return value;
725        case 348678409: // submitter
726          this.submitter = castToReference(value); // Reference
727          return value;
728        case -340323263: // response
729          this.response = castToReference(value); // Reference
730          return value;
731        case 3076014: // date
732          this.date = castToDate(value); // DateType
733          return value;
734        case 1847674614: // responsible
735          this.responsible = castToReference(value); // Reference
736          return value;
737        case 106443592: // payee
738          this.payee = castToReference(value); // Reference
739          return value;
740        case -1413853096: // amount
741          this.amount = castToMoney(value); // Money
742          return value;
743        default: return super.setProperty(hash, name, value);
744        }
745
746      }
747
748      @Override
749      public Base setProperty(String name, Base value) throws FHIRException {
750        if (name.equals("identifier")) {
751          this.identifier = castToIdentifier(value); // Identifier
752        } else if (name.equals("predecessor")) {
753          this.predecessor = castToIdentifier(value); // Identifier
754        } else if (name.equals("type")) {
755          this.type = castToCodeableConcept(value); // CodeableConcept
756        } else if (name.equals("request")) {
757          this.request = castToReference(value); // Reference
758        } else if (name.equals("submitter")) {
759          this.submitter = castToReference(value); // Reference
760        } else if (name.equals("response")) {
761          this.response = castToReference(value); // Reference
762        } else if (name.equals("date")) {
763          this.date = castToDate(value); // DateType
764        } else if (name.equals("responsible")) {
765          this.responsible = castToReference(value); // Reference
766        } else if (name.equals("payee")) {
767          this.payee = castToReference(value); // Reference
768        } else if (name.equals("amount")) {
769          this.amount = castToMoney(value); // Money
770        } else
771          return super.setProperty(name, value);
772        return value;
773      }
774
775      @Override
776      public Base makeProperty(int hash, String name) throws FHIRException {
777        switch (hash) {
778        case -1618432855:  return getIdentifier(); 
779        case -1925032183:  return getPredecessor(); 
780        case 3575610:  return getType(); 
781        case 1095692943:  return getRequest(); 
782        case 348678409:  return getSubmitter(); 
783        case -340323263:  return getResponse(); 
784        case 3076014:  return getDateElement();
785        case 1847674614:  return getResponsible(); 
786        case 106443592:  return getPayee(); 
787        case -1413853096:  return getAmount(); 
788        default: return super.makeProperty(hash, name);
789        }
790
791      }
792
793      @Override
794      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
795        switch (hash) {
796        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
797        case -1925032183: /*predecessor*/ return new String[] {"Identifier"};
798        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
799        case 1095692943: /*request*/ return new String[] {"Reference"};
800        case 348678409: /*submitter*/ return new String[] {"Reference"};
801        case -340323263: /*response*/ return new String[] {"Reference"};
802        case 3076014: /*date*/ return new String[] {"date"};
803        case 1847674614: /*responsible*/ return new String[] {"Reference"};
804        case 106443592: /*payee*/ return new String[] {"Reference"};
805        case -1413853096: /*amount*/ return new String[] {"Money"};
806        default: return super.getTypesForProperty(hash, name);
807        }
808
809      }
810
811      @Override
812      public Base addChild(String name) throws FHIRException {
813        if (name.equals("identifier")) {
814          this.identifier = new Identifier();
815          return this.identifier;
816        }
817        else if (name.equals("predecessor")) {
818          this.predecessor = new Identifier();
819          return this.predecessor;
820        }
821        else if (name.equals("type")) {
822          this.type = new CodeableConcept();
823          return this.type;
824        }
825        else if (name.equals("request")) {
826          this.request = new Reference();
827          return this.request;
828        }
829        else if (name.equals("submitter")) {
830          this.submitter = new Reference();
831          return this.submitter;
832        }
833        else if (name.equals("response")) {
834          this.response = new Reference();
835          return this.response;
836        }
837        else if (name.equals("date")) {
838          throw new FHIRException("Cannot call addChild on a primitive type PaymentReconciliation.date");
839        }
840        else if (name.equals("responsible")) {
841          this.responsible = new Reference();
842          return this.responsible;
843        }
844        else if (name.equals("payee")) {
845          this.payee = new Reference();
846          return this.payee;
847        }
848        else if (name.equals("amount")) {
849          this.amount = new Money();
850          return this.amount;
851        }
852        else
853          return super.addChild(name);
854      }
855
856      public DetailsComponent copy() {
857        DetailsComponent dst = new DetailsComponent();
858        copyValues(dst);
859        dst.identifier = identifier == null ? null : identifier.copy();
860        dst.predecessor = predecessor == null ? null : predecessor.copy();
861        dst.type = type == null ? null : type.copy();
862        dst.request = request == null ? null : request.copy();
863        dst.submitter = submitter == null ? null : submitter.copy();
864        dst.response = response == null ? null : response.copy();
865        dst.date = date == null ? null : date.copy();
866        dst.responsible = responsible == null ? null : responsible.copy();
867        dst.payee = payee == null ? null : payee.copy();
868        dst.amount = amount == null ? null : amount.copy();
869        return dst;
870      }
871
872      @Override
873      public boolean equalsDeep(Base other_) {
874        if (!super.equalsDeep(other_))
875          return false;
876        if (!(other_ instanceof DetailsComponent))
877          return false;
878        DetailsComponent o = (DetailsComponent) other_;
879        return compareDeep(identifier, o.identifier, true) && compareDeep(predecessor, o.predecessor, true)
880           && compareDeep(type, o.type, true) && compareDeep(request, o.request, true) && compareDeep(submitter, o.submitter, true)
881           && compareDeep(response, o.response, true) && compareDeep(date, o.date, true) && compareDeep(responsible, o.responsible, true)
882           && compareDeep(payee, o.payee, true) && compareDeep(amount, o.amount, true);
883      }
884
885      @Override
886      public boolean equalsShallow(Base other_) {
887        if (!super.equalsShallow(other_))
888          return false;
889        if (!(other_ instanceof DetailsComponent))
890          return false;
891        DetailsComponent o = (DetailsComponent) other_;
892        return compareValues(date, o.date, true);
893      }
894
895      public boolean isEmpty() {
896        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, predecessor, type
897          , request, submitter, response, date, responsible, payee, amount);
898      }
899
900  public String fhirType() {
901    return "PaymentReconciliation.detail";
902
903  }
904
905  }
906
907    @Block()
908    public static class NotesComponent extends BackboneElement implements IBaseBackboneElement {
909        /**
910         * The business purpose of the note text.
911         */
912        @Child(name = "type", type = {CodeType.class}, order=1, min=0, max=1, modifier=false, summary=false)
913        @Description(shortDefinition="display | print | printoper", formalDefinition="The business purpose of the note text." )
914        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/note-type")
915        protected Enumeration<NoteType> type;
916
917        /**
918         * The explanation or description associated with the processing.
919         */
920        @Child(name = "text", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
921        @Description(shortDefinition="Note explanatory text", formalDefinition="The explanation or description associated with the processing." )
922        protected StringType text;
923
924        private static final long serialVersionUID = 529250161L;
925
926    /**
927     * Constructor
928     */
929      public NotesComponent() {
930        super();
931      }
932
933        /**
934         * @return {@link #type} (The business purpose of the note text.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
935         */
936        public Enumeration<NoteType> getTypeElement() { 
937          if (this.type == null)
938            if (Configuration.errorOnAutoCreate())
939              throw new Error("Attempt to auto-create NotesComponent.type");
940            else if (Configuration.doAutoCreate())
941              this.type = new Enumeration<NoteType>(new NoteTypeEnumFactory()); // bb
942          return this.type;
943        }
944
945        public boolean hasTypeElement() { 
946          return this.type != null && !this.type.isEmpty();
947        }
948
949        public boolean hasType() { 
950          return this.type != null && !this.type.isEmpty();
951        }
952
953        /**
954         * @param value {@link #type} (The business purpose of the note text.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
955         */
956        public NotesComponent setTypeElement(Enumeration<NoteType> value) { 
957          this.type = value;
958          return this;
959        }
960
961        /**
962         * @return The business purpose of the note text.
963         */
964        public NoteType getType() { 
965          return this.type == null ? null : this.type.getValue();
966        }
967
968        /**
969         * @param value The business purpose of the note text.
970         */
971        public NotesComponent setType(NoteType value) { 
972          if (value == null)
973            this.type = null;
974          else {
975            if (this.type == null)
976              this.type = new Enumeration<NoteType>(new NoteTypeEnumFactory());
977            this.type.setValue(value);
978          }
979          return this;
980        }
981
982        /**
983         * @return {@link #text} (The explanation or description associated with the processing.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
984         */
985        public StringType getTextElement() { 
986          if (this.text == null)
987            if (Configuration.errorOnAutoCreate())
988              throw new Error("Attempt to auto-create NotesComponent.text");
989            else if (Configuration.doAutoCreate())
990              this.text = new StringType(); // bb
991          return this.text;
992        }
993
994        public boolean hasTextElement() { 
995          return this.text != null && !this.text.isEmpty();
996        }
997
998        public boolean hasText() { 
999          return this.text != null && !this.text.isEmpty();
1000        }
1001
1002        /**
1003         * @param value {@link #text} (The explanation or description associated with the processing.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
1004         */
1005        public NotesComponent setTextElement(StringType value) { 
1006          this.text = value;
1007          return this;
1008        }
1009
1010        /**
1011         * @return The explanation or description associated with the processing.
1012         */
1013        public String getText() { 
1014          return this.text == null ? null : this.text.getValue();
1015        }
1016
1017        /**
1018         * @param value The explanation or description associated with the processing.
1019         */
1020        public NotesComponent setText(String value) { 
1021          if (Utilities.noString(value))
1022            this.text = null;
1023          else {
1024            if (this.text == null)
1025              this.text = new StringType();
1026            this.text.setValue(value);
1027          }
1028          return this;
1029        }
1030
1031        protected void listChildren(List<Property> children) {
1032          super.listChildren(children);
1033          children.add(new Property("type", "code", "The business purpose of the note text.", 0, 1, type));
1034          children.add(new Property("text", "string", "The explanation or description associated with the processing.", 0, 1, text));
1035        }
1036
1037        @Override
1038        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1039          switch (_hash) {
1040          case 3575610: /*type*/  return new Property("type", "code", "The business purpose of the note text.", 0, 1, type);
1041          case 3556653: /*text*/  return new Property("text", "string", "The explanation or description associated with the processing.", 0, 1, text);
1042          default: return super.getNamedProperty(_hash, _name, _checkValid);
1043          }
1044
1045        }
1046
1047      @Override
1048      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1049        switch (hash) {
1050        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Enumeration<NoteType>
1051        case 3556653: /*text*/ return this.text == null ? new Base[0] : new Base[] {this.text}; // StringType
1052        default: return super.getProperty(hash, name, checkValid);
1053        }
1054
1055      }
1056
1057      @Override
1058      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1059        switch (hash) {
1060        case 3575610: // type
1061          value = new NoteTypeEnumFactory().fromType(castToCode(value));
1062          this.type = (Enumeration) value; // Enumeration<NoteType>
1063          return value;
1064        case 3556653: // text
1065          this.text = castToString(value); // StringType
1066          return value;
1067        default: return super.setProperty(hash, name, value);
1068        }
1069
1070      }
1071
1072      @Override
1073      public Base setProperty(String name, Base value) throws FHIRException {
1074        if (name.equals("type")) {
1075          value = new NoteTypeEnumFactory().fromType(castToCode(value));
1076          this.type = (Enumeration) value; // Enumeration<NoteType>
1077        } else if (name.equals("text")) {
1078          this.text = castToString(value); // StringType
1079        } else
1080          return super.setProperty(name, value);
1081        return value;
1082      }
1083
1084      @Override
1085      public Base makeProperty(int hash, String name) throws FHIRException {
1086        switch (hash) {
1087        case 3575610:  return getTypeElement();
1088        case 3556653:  return getTextElement();
1089        default: return super.makeProperty(hash, name);
1090        }
1091
1092      }
1093
1094      @Override
1095      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1096        switch (hash) {
1097        case 3575610: /*type*/ return new String[] {"code"};
1098        case 3556653: /*text*/ return new String[] {"string"};
1099        default: return super.getTypesForProperty(hash, name);
1100        }
1101
1102      }
1103
1104      @Override
1105      public Base addChild(String name) throws FHIRException {
1106        if (name.equals("type")) {
1107          throw new FHIRException("Cannot call addChild on a primitive type PaymentReconciliation.type");
1108        }
1109        else if (name.equals("text")) {
1110          throw new FHIRException("Cannot call addChild on a primitive type PaymentReconciliation.text");
1111        }
1112        else
1113          return super.addChild(name);
1114      }
1115
1116      public NotesComponent copy() {
1117        NotesComponent dst = new NotesComponent();
1118        copyValues(dst);
1119        dst.type = type == null ? null : type.copy();
1120        dst.text = text == null ? null : text.copy();
1121        return dst;
1122      }
1123
1124      @Override
1125      public boolean equalsDeep(Base other_) {
1126        if (!super.equalsDeep(other_))
1127          return false;
1128        if (!(other_ instanceof NotesComponent))
1129          return false;
1130        NotesComponent o = (NotesComponent) other_;
1131        return compareDeep(type, o.type, true) && compareDeep(text, o.text, true);
1132      }
1133
1134      @Override
1135      public boolean equalsShallow(Base other_) {
1136        if (!super.equalsShallow(other_))
1137          return false;
1138        if (!(other_ instanceof NotesComponent))
1139          return false;
1140        NotesComponent o = (NotesComponent) other_;
1141        return compareValues(type, o.type, true) && compareValues(text, o.text, true);
1142      }
1143
1144      public boolean isEmpty() {
1145        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, text);
1146      }
1147
1148  public String fhirType() {
1149    return "PaymentReconciliation.processNote";
1150
1151  }
1152
1153  }
1154
1155    /**
1156     * A unique identifier assigned to this payment reconciliation.
1157     */
1158    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1159    @Description(shortDefinition="Business Identifier for a payment reconciliation", formalDefinition="A unique identifier assigned to this payment reconciliation." )
1160    protected List<Identifier> identifier;
1161
1162    /**
1163     * The status of the resource instance.
1164     */
1165    @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
1166    @Description(shortDefinition="active | cancelled | draft | entered-in-error", formalDefinition="The status of the resource instance." )
1167    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/fm-status")
1168    protected Enumeration<PaymentReconciliationStatus> status;
1169
1170    /**
1171     * The period of time for which payments have been gathered into this bulk payment for settlement.
1172     */
1173    @Child(name = "period", type = {Period.class}, order=2, min=0, max=1, modifier=false, summary=true)
1174    @Description(shortDefinition="Period covered", formalDefinition="The period of time for which payments have been gathered into this bulk payment for settlement." )
1175    protected Period period;
1176
1177    /**
1178     * The date when the resource was created.
1179     */
1180    @Child(name = "created", type = {DateTimeType.class}, order=3, min=1, max=1, modifier=false, summary=true)
1181    @Description(shortDefinition="Creation date", formalDefinition="The date when the resource was created." )
1182    protected DateTimeType created;
1183
1184    /**
1185     * The party who generated the payment.
1186     */
1187    @Child(name = "paymentIssuer", type = {Organization.class}, order=4, min=0, max=1, modifier=false, summary=true)
1188    @Description(shortDefinition="Party generating payment", formalDefinition="The party who generated the payment." )
1189    protected Reference paymentIssuer;
1190
1191    /**
1192     * The actual object that is the target of the reference (The party who generated the payment.)
1193     */
1194    protected Organization paymentIssuerTarget;
1195
1196    /**
1197     * Original request resource reference.
1198     */
1199    @Child(name = "request", type = {Task.class}, order=5, min=0, max=1, modifier=false, summary=false)
1200    @Description(shortDefinition="Reference to requesting resource", formalDefinition="Original request resource reference." )
1201    protected Reference request;
1202
1203    /**
1204     * The actual object that is the target of the reference (Original request resource reference.)
1205     */
1206    protected Task requestTarget;
1207
1208    /**
1209     * The practitioner who is responsible for the services rendered to the patient.
1210     */
1211    @Child(name = "requestor", type = {Practitioner.class, PractitionerRole.class, Organization.class}, order=6, min=0, max=1, modifier=false, summary=false)
1212    @Description(shortDefinition="Responsible practitioner", formalDefinition="The practitioner who is responsible for the services rendered to the patient." )
1213    protected Reference requestor;
1214
1215    /**
1216     * The actual object that is the target of the reference (The practitioner who is responsible for the services rendered to the patient.)
1217     */
1218    protected Resource requestorTarget;
1219
1220    /**
1221     * The outcome of a request for a reconciliation.
1222     */
1223    @Child(name = "outcome", type = {CodeType.class}, order=7, min=0, max=1, modifier=false, summary=false)
1224    @Description(shortDefinition="queued | complete | error | partial", formalDefinition="The outcome of a request for a reconciliation." )
1225    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/remittance-outcome")
1226    protected Enumeration<RemittanceOutcome> outcome;
1227
1228    /**
1229     * A human readable description of the status of the request for the reconciliation.
1230     */
1231    @Child(name = "disposition", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=false)
1232    @Description(shortDefinition="Disposition message", formalDefinition="A human readable description of the status of the request for the reconciliation." )
1233    protected StringType disposition;
1234
1235    /**
1236     * The date of payment as indicated on the financial instrument.
1237     */
1238    @Child(name = "paymentDate", type = {DateType.class}, order=9, min=1, max=1, modifier=false, summary=true)
1239    @Description(shortDefinition="When payment issued", formalDefinition="The date of payment as indicated on the financial instrument." )
1240    protected DateType paymentDate;
1241
1242    /**
1243     * Total payment amount as indicated on the financial instrument.
1244     */
1245    @Child(name = "paymentAmount", type = {Money.class}, order=10, min=1, max=1, modifier=false, summary=true)
1246    @Description(shortDefinition="Total amount of Payment", formalDefinition="Total payment amount as indicated on the financial instrument." )
1247    protected Money paymentAmount;
1248
1249    /**
1250     * Issuer's unique identifier for the payment instrument.
1251     */
1252    @Child(name = "paymentIdentifier", type = {Identifier.class}, order=11, min=0, max=1, modifier=false, summary=false)
1253    @Description(shortDefinition="Business identifier for the payment", formalDefinition="Issuer's unique identifier for the payment instrument." )
1254    protected Identifier paymentIdentifier;
1255
1256    /**
1257     * Distribution of the payment amount for a previously acknowledged payable.
1258     */
1259    @Child(name = "detail", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1260    @Description(shortDefinition="Settlement particulars", formalDefinition="Distribution of the payment amount for a previously acknowledged payable." )
1261    protected List<DetailsComponent> detail;
1262
1263    /**
1264     * A code for the form to be used for printing the content.
1265     */
1266    @Child(name = "formCode", type = {CodeableConcept.class}, order=13, min=0, max=1, modifier=false, summary=false)
1267    @Description(shortDefinition="Printed form identifier", formalDefinition="A code for the form to be used for printing the content." )
1268    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/forms")
1269    protected CodeableConcept formCode;
1270
1271    /**
1272     * A note that describes or explains the processing in a human readable form.
1273     */
1274    @Child(name = "processNote", type = {}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1275    @Description(shortDefinition="Note concerning processing", formalDefinition="A note that describes or explains the processing in a human readable form." )
1276    protected List<NotesComponent> processNote;
1277
1278    private static final long serialVersionUID = -1620965037L;
1279
1280  /**
1281   * Constructor
1282   */
1283    public PaymentReconciliation() {
1284      super();
1285    }
1286
1287  /**
1288   * Constructor
1289   */
1290    public PaymentReconciliation(Enumeration<PaymentReconciliationStatus> status, DateTimeType created, DateType paymentDate, Money paymentAmount) {
1291      super();
1292      this.status = status;
1293      this.created = created;
1294      this.paymentDate = paymentDate;
1295      this.paymentAmount = paymentAmount;
1296    }
1297
1298    /**
1299     * @return {@link #identifier} (A unique identifier assigned to this payment reconciliation.)
1300     */
1301    public List<Identifier> getIdentifier() { 
1302      if (this.identifier == null)
1303        this.identifier = new ArrayList<Identifier>();
1304      return this.identifier;
1305    }
1306
1307    /**
1308     * @return Returns a reference to <code>this</code> for easy method chaining
1309     */
1310    public PaymentReconciliation setIdentifier(List<Identifier> theIdentifier) { 
1311      this.identifier = theIdentifier;
1312      return this;
1313    }
1314
1315    public boolean hasIdentifier() { 
1316      if (this.identifier == null)
1317        return false;
1318      for (Identifier item : this.identifier)
1319        if (!item.isEmpty())
1320          return true;
1321      return false;
1322    }
1323
1324    public Identifier addIdentifier() { //3
1325      Identifier t = new Identifier();
1326      if (this.identifier == null)
1327        this.identifier = new ArrayList<Identifier>();
1328      this.identifier.add(t);
1329      return t;
1330    }
1331
1332    public PaymentReconciliation addIdentifier(Identifier t) { //3
1333      if (t == null)
1334        return this;
1335      if (this.identifier == null)
1336        this.identifier = new ArrayList<Identifier>();
1337      this.identifier.add(t);
1338      return this;
1339    }
1340
1341    /**
1342     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
1343     */
1344    public Identifier getIdentifierFirstRep() { 
1345      if (getIdentifier().isEmpty()) {
1346        addIdentifier();
1347      }
1348      return getIdentifier().get(0);
1349    }
1350
1351    /**
1352     * @return {@link #status} (The status of the resource instance.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1353     */
1354    public Enumeration<PaymentReconciliationStatus> getStatusElement() { 
1355      if (this.status == null)
1356        if (Configuration.errorOnAutoCreate())
1357          throw new Error("Attempt to auto-create PaymentReconciliation.status");
1358        else if (Configuration.doAutoCreate())
1359          this.status = new Enumeration<PaymentReconciliationStatus>(new PaymentReconciliationStatusEnumFactory()); // bb
1360      return this.status;
1361    }
1362
1363    public boolean hasStatusElement() { 
1364      return this.status != null && !this.status.isEmpty();
1365    }
1366
1367    public boolean hasStatus() { 
1368      return this.status != null && !this.status.isEmpty();
1369    }
1370
1371    /**
1372     * @param value {@link #status} (The status of the resource instance.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1373     */
1374    public PaymentReconciliation setStatusElement(Enumeration<PaymentReconciliationStatus> value) { 
1375      this.status = value;
1376      return this;
1377    }
1378
1379    /**
1380     * @return The status of the resource instance.
1381     */
1382    public PaymentReconciliationStatus getStatus() { 
1383      return this.status == null ? null : this.status.getValue();
1384    }
1385
1386    /**
1387     * @param value The status of the resource instance.
1388     */
1389    public PaymentReconciliation setStatus(PaymentReconciliationStatus value) { 
1390        if (this.status == null)
1391          this.status = new Enumeration<PaymentReconciliationStatus>(new PaymentReconciliationStatusEnumFactory());
1392        this.status.setValue(value);
1393      return this;
1394    }
1395
1396    /**
1397     * @return {@link #period} (The period of time for which payments have been gathered into this bulk payment for settlement.)
1398     */
1399    public Period getPeriod() { 
1400      if (this.period == null)
1401        if (Configuration.errorOnAutoCreate())
1402          throw new Error("Attempt to auto-create PaymentReconciliation.period");
1403        else if (Configuration.doAutoCreate())
1404          this.period = new Period(); // cc
1405      return this.period;
1406    }
1407
1408    public boolean hasPeriod() { 
1409      return this.period != null && !this.period.isEmpty();
1410    }
1411
1412    /**
1413     * @param value {@link #period} (The period of time for which payments have been gathered into this bulk payment for settlement.)
1414     */
1415    public PaymentReconciliation setPeriod(Period value) { 
1416      this.period = value;
1417      return this;
1418    }
1419
1420    /**
1421     * @return {@link #created} (The date when the resource was created.). This is the underlying object with id, value and extensions. The accessor "getCreated" gives direct access to the value
1422     */
1423    public DateTimeType getCreatedElement() { 
1424      if (this.created == null)
1425        if (Configuration.errorOnAutoCreate())
1426          throw new Error("Attempt to auto-create PaymentReconciliation.created");
1427        else if (Configuration.doAutoCreate())
1428          this.created = new DateTimeType(); // bb
1429      return this.created;
1430    }
1431
1432    public boolean hasCreatedElement() { 
1433      return this.created != null && !this.created.isEmpty();
1434    }
1435
1436    public boolean hasCreated() { 
1437      return this.created != null && !this.created.isEmpty();
1438    }
1439
1440    /**
1441     * @param value {@link #created} (The date when the resource was created.). This is the underlying object with id, value and extensions. The accessor "getCreated" gives direct access to the value
1442     */
1443    public PaymentReconciliation setCreatedElement(DateTimeType value) { 
1444      this.created = value;
1445      return this;
1446    }
1447
1448    /**
1449     * @return The date when the resource was created.
1450     */
1451    public Date getCreated() { 
1452      return this.created == null ? null : this.created.getValue();
1453    }
1454
1455    /**
1456     * @param value The date when the resource was created.
1457     */
1458    public PaymentReconciliation setCreated(Date value) { 
1459        if (this.created == null)
1460          this.created = new DateTimeType();
1461        this.created.setValue(value);
1462      return this;
1463    }
1464
1465    /**
1466     * @return {@link #paymentIssuer} (The party who generated the payment.)
1467     */
1468    public Reference getPaymentIssuer() { 
1469      if (this.paymentIssuer == null)
1470        if (Configuration.errorOnAutoCreate())
1471          throw new Error("Attempt to auto-create PaymentReconciliation.paymentIssuer");
1472        else if (Configuration.doAutoCreate())
1473          this.paymentIssuer = new Reference(); // cc
1474      return this.paymentIssuer;
1475    }
1476
1477    public boolean hasPaymentIssuer() { 
1478      return this.paymentIssuer != null && !this.paymentIssuer.isEmpty();
1479    }
1480
1481    /**
1482     * @param value {@link #paymentIssuer} (The party who generated the payment.)
1483     */
1484    public PaymentReconciliation setPaymentIssuer(Reference value) { 
1485      this.paymentIssuer = value;
1486      return this;
1487    }
1488
1489    /**
1490     * @return {@link #paymentIssuer} 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 who generated the payment.)
1491     */
1492    public Organization getPaymentIssuerTarget() { 
1493      if (this.paymentIssuerTarget == null)
1494        if (Configuration.errorOnAutoCreate())
1495          throw new Error("Attempt to auto-create PaymentReconciliation.paymentIssuer");
1496        else if (Configuration.doAutoCreate())
1497          this.paymentIssuerTarget = new Organization(); // aa
1498      return this.paymentIssuerTarget;
1499    }
1500
1501    /**
1502     * @param value {@link #paymentIssuer} 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 who generated the payment.)
1503     */
1504    public PaymentReconciliation setPaymentIssuerTarget(Organization value) { 
1505      this.paymentIssuerTarget = value;
1506      return this;
1507    }
1508
1509    /**
1510     * @return {@link #request} (Original request resource reference.)
1511     */
1512    public Reference getRequest() { 
1513      if (this.request == null)
1514        if (Configuration.errorOnAutoCreate())
1515          throw new Error("Attempt to auto-create PaymentReconciliation.request");
1516        else if (Configuration.doAutoCreate())
1517          this.request = new Reference(); // cc
1518      return this.request;
1519    }
1520
1521    public boolean hasRequest() { 
1522      return this.request != null && !this.request.isEmpty();
1523    }
1524
1525    /**
1526     * @param value {@link #request} (Original request resource reference.)
1527     */
1528    public PaymentReconciliation setRequest(Reference value) { 
1529      this.request = value;
1530      return this;
1531    }
1532
1533    /**
1534     * @return {@link #request} 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. (Original request resource reference.)
1535     */
1536    public Task getRequestTarget() { 
1537      if (this.requestTarget == null)
1538        if (Configuration.errorOnAutoCreate())
1539          throw new Error("Attempt to auto-create PaymentReconciliation.request");
1540        else if (Configuration.doAutoCreate())
1541          this.requestTarget = new Task(); // aa
1542      return this.requestTarget;
1543    }
1544
1545    /**
1546     * @param value {@link #request} 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. (Original request resource reference.)
1547     */
1548    public PaymentReconciliation setRequestTarget(Task value) { 
1549      this.requestTarget = value;
1550      return this;
1551    }
1552
1553    /**
1554     * @return {@link #requestor} (The practitioner who is responsible for the services rendered to the patient.)
1555     */
1556    public Reference getRequestor() { 
1557      if (this.requestor == null)
1558        if (Configuration.errorOnAutoCreate())
1559          throw new Error("Attempt to auto-create PaymentReconciliation.requestor");
1560        else if (Configuration.doAutoCreate())
1561          this.requestor = new Reference(); // cc
1562      return this.requestor;
1563    }
1564
1565    public boolean hasRequestor() { 
1566      return this.requestor != null && !this.requestor.isEmpty();
1567    }
1568
1569    /**
1570     * @param value {@link #requestor} (The practitioner who is responsible for the services rendered to the patient.)
1571     */
1572    public PaymentReconciliation setRequestor(Reference value) { 
1573      this.requestor = value;
1574      return this;
1575    }
1576
1577    /**
1578     * @return {@link #requestor} 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 practitioner who is responsible for the services rendered to the patient.)
1579     */
1580    public Resource getRequestorTarget() { 
1581      return this.requestorTarget;
1582    }
1583
1584    /**
1585     * @param value {@link #requestor} 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 practitioner who is responsible for the services rendered to the patient.)
1586     */
1587    public PaymentReconciliation setRequestorTarget(Resource value) { 
1588      this.requestorTarget = value;
1589      return this;
1590    }
1591
1592    /**
1593     * @return {@link #outcome} (The outcome of a request for a reconciliation.). This is the underlying object with id, value and extensions. The accessor "getOutcome" gives direct access to the value
1594     */
1595    public Enumeration<RemittanceOutcome> getOutcomeElement() { 
1596      if (this.outcome == null)
1597        if (Configuration.errorOnAutoCreate())
1598          throw new Error("Attempt to auto-create PaymentReconciliation.outcome");
1599        else if (Configuration.doAutoCreate())
1600          this.outcome = new Enumeration<RemittanceOutcome>(new RemittanceOutcomeEnumFactory()); // bb
1601      return this.outcome;
1602    }
1603
1604    public boolean hasOutcomeElement() { 
1605      return this.outcome != null && !this.outcome.isEmpty();
1606    }
1607
1608    public boolean hasOutcome() { 
1609      return this.outcome != null && !this.outcome.isEmpty();
1610    }
1611
1612    /**
1613     * @param value {@link #outcome} (The outcome of a request for a reconciliation.). This is the underlying object with id, value and extensions. The accessor "getOutcome" gives direct access to the value
1614     */
1615    public PaymentReconciliation setOutcomeElement(Enumeration<RemittanceOutcome> value) { 
1616      this.outcome = value;
1617      return this;
1618    }
1619
1620    /**
1621     * @return The outcome of a request for a reconciliation.
1622     */
1623    public RemittanceOutcome getOutcome() { 
1624      return this.outcome == null ? null : this.outcome.getValue();
1625    }
1626
1627    /**
1628     * @param value The outcome of a request for a reconciliation.
1629     */
1630    public PaymentReconciliation setOutcome(RemittanceOutcome value) { 
1631      if (value == null)
1632        this.outcome = null;
1633      else {
1634        if (this.outcome == null)
1635          this.outcome = new Enumeration<RemittanceOutcome>(new RemittanceOutcomeEnumFactory());
1636        this.outcome.setValue(value);
1637      }
1638      return this;
1639    }
1640
1641    /**
1642     * @return {@link #disposition} (A human readable description of the status of the request for the reconciliation.). This is the underlying object with id, value and extensions. The accessor "getDisposition" gives direct access to the value
1643     */
1644    public StringType getDispositionElement() { 
1645      if (this.disposition == null)
1646        if (Configuration.errorOnAutoCreate())
1647          throw new Error("Attempt to auto-create PaymentReconciliation.disposition");
1648        else if (Configuration.doAutoCreate())
1649          this.disposition = new StringType(); // bb
1650      return this.disposition;
1651    }
1652
1653    public boolean hasDispositionElement() { 
1654      return this.disposition != null && !this.disposition.isEmpty();
1655    }
1656
1657    public boolean hasDisposition() { 
1658      return this.disposition != null && !this.disposition.isEmpty();
1659    }
1660
1661    /**
1662     * @param value {@link #disposition} (A human readable description of the status of the request for the reconciliation.). This is the underlying object with id, value and extensions. The accessor "getDisposition" gives direct access to the value
1663     */
1664    public PaymentReconciliation setDispositionElement(StringType value) { 
1665      this.disposition = value;
1666      return this;
1667    }
1668
1669    /**
1670     * @return A human readable description of the status of the request for the reconciliation.
1671     */
1672    public String getDisposition() { 
1673      return this.disposition == null ? null : this.disposition.getValue();
1674    }
1675
1676    /**
1677     * @param value A human readable description of the status of the request for the reconciliation.
1678     */
1679    public PaymentReconciliation setDisposition(String value) { 
1680      if (Utilities.noString(value))
1681        this.disposition = null;
1682      else {
1683        if (this.disposition == null)
1684          this.disposition = new StringType();
1685        this.disposition.setValue(value);
1686      }
1687      return this;
1688    }
1689
1690    /**
1691     * @return {@link #paymentDate} (The date of payment as indicated on the financial instrument.). This is the underlying object with id, value and extensions. The accessor "getPaymentDate" gives direct access to the value
1692     */
1693    public DateType getPaymentDateElement() { 
1694      if (this.paymentDate == null)
1695        if (Configuration.errorOnAutoCreate())
1696          throw new Error("Attempt to auto-create PaymentReconciliation.paymentDate");
1697        else if (Configuration.doAutoCreate())
1698          this.paymentDate = new DateType(); // bb
1699      return this.paymentDate;
1700    }
1701
1702    public boolean hasPaymentDateElement() { 
1703      return this.paymentDate != null && !this.paymentDate.isEmpty();
1704    }
1705
1706    public boolean hasPaymentDate() { 
1707      return this.paymentDate != null && !this.paymentDate.isEmpty();
1708    }
1709
1710    /**
1711     * @param value {@link #paymentDate} (The date of payment as indicated on the financial instrument.). This is the underlying object with id, value and extensions. The accessor "getPaymentDate" gives direct access to the value
1712     */
1713    public PaymentReconciliation setPaymentDateElement(DateType value) { 
1714      this.paymentDate = value;
1715      return this;
1716    }
1717
1718    /**
1719     * @return The date of payment as indicated on the financial instrument.
1720     */
1721    public Date getPaymentDate() { 
1722      return this.paymentDate == null ? null : this.paymentDate.getValue();
1723    }
1724
1725    /**
1726     * @param value The date of payment as indicated on the financial instrument.
1727     */
1728    public PaymentReconciliation setPaymentDate(Date value) { 
1729        if (this.paymentDate == null)
1730          this.paymentDate = new DateType();
1731        this.paymentDate.setValue(value);
1732      return this;
1733    }
1734
1735    /**
1736     * @return {@link #paymentAmount} (Total payment amount as indicated on the financial instrument.)
1737     */
1738    public Money getPaymentAmount() { 
1739      if (this.paymentAmount == null)
1740        if (Configuration.errorOnAutoCreate())
1741          throw new Error("Attempt to auto-create PaymentReconciliation.paymentAmount");
1742        else if (Configuration.doAutoCreate())
1743          this.paymentAmount = new Money(); // cc
1744      return this.paymentAmount;
1745    }
1746
1747    public boolean hasPaymentAmount() { 
1748      return this.paymentAmount != null && !this.paymentAmount.isEmpty();
1749    }
1750
1751    /**
1752     * @param value {@link #paymentAmount} (Total payment amount as indicated on the financial instrument.)
1753     */
1754    public PaymentReconciliation setPaymentAmount(Money value) { 
1755      this.paymentAmount = value;
1756      return this;
1757    }
1758
1759    /**
1760     * @return {@link #paymentIdentifier} (Issuer's unique identifier for the payment instrument.)
1761     */
1762    public Identifier getPaymentIdentifier() { 
1763      if (this.paymentIdentifier == null)
1764        if (Configuration.errorOnAutoCreate())
1765          throw new Error("Attempt to auto-create PaymentReconciliation.paymentIdentifier");
1766        else if (Configuration.doAutoCreate())
1767          this.paymentIdentifier = new Identifier(); // cc
1768      return this.paymentIdentifier;
1769    }
1770
1771    public boolean hasPaymentIdentifier() { 
1772      return this.paymentIdentifier != null && !this.paymentIdentifier.isEmpty();
1773    }
1774
1775    /**
1776     * @param value {@link #paymentIdentifier} (Issuer's unique identifier for the payment instrument.)
1777     */
1778    public PaymentReconciliation setPaymentIdentifier(Identifier value) { 
1779      this.paymentIdentifier = value;
1780      return this;
1781    }
1782
1783    /**
1784     * @return {@link #detail} (Distribution of the payment amount for a previously acknowledged payable.)
1785     */
1786    public List<DetailsComponent> getDetail() { 
1787      if (this.detail == null)
1788        this.detail = new ArrayList<DetailsComponent>();
1789      return this.detail;
1790    }
1791
1792    /**
1793     * @return Returns a reference to <code>this</code> for easy method chaining
1794     */
1795    public PaymentReconciliation setDetail(List<DetailsComponent> theDetail) { 
1796      this.detail = theDetail;
1797      return this;
1798    }
1799
1800    public boolean hasDetail() { 
1801      if (this.detail == null)
1802        return false;
1803      for (DetailsComponent item : this.detail)
1804        if (!item.isEmpty())
1805          return true;
1806      return false;
1807    }
1808
1809    public DetailsComponent addDetail() { //3
1810      DetailsComponent t = new DetailsComponent();
1811      if (this.detail == null)
1812        this.detail = new ArrayList<DetailsComponent>();
1813      this.detail.add(t);
1814      return t;
1815    }
1816
1817    public PaymentReconciliation addDetail(DetailsComponent t) { //3
1818      if (t == null)
1819        return this;
1820      if (this.detail == null)
1821        this.detail = new ArrayList<DetailsComponent>();
1822      this.detail.add(t);
1823      return this;
1824    }
1825
1826    /**
1827     * @return The first repetition of repeating field {@link #detail}, creating it if it does not already exist
1828     */
1829    public DetailsComponent getDetailFirstRep() { 
1830      if (getDetail().isEmpty()) {
1831        addDetail();
1832      }
1833      return getDetail().get(0);
1834    }
1835
1836    /**
1837     * @return {@link #formCode} (A code for the form to be used for printing the content.)
1838     */
1839    public CodeableConcept getFormCode() { 
1840      if (this.formCode == null)
1841        if (Configuration.errorOnAutoCreate())
1842          throw new Error("Attempt to auto-create PaymentReconciliation.formCode");
1843        else if (Configuration.doAutoCreate())
1844          this.formCode = new CodeableConcept(); // cc
1845      return this.formCode;
1846    }
1847
1848    public boolean hasFormCode() { 
1849      return this.formCode != null && !this.formCode.isEmpty();
1850    }
1851
1852    /**
1853     * @param value {@link #formCode} (A code for the form to be used for printing the content.)
1854     */
1855    public PaymentReconciliation setFormCode(CodeableConcept value) { 
1856      this.formCode = value;
1857      return this;
1858    }
1859
1860    /**
1861     * @return {@link #processNote} (A note that describes or explains the processing in a human readable form.)
1862     */
1863    public List<NotesComponent> getProcessNote() { 
1864      if (this.processNote == null)
1865        this.processNote = new ArrayList<NotesComponent>();
1866      return this.processNote;
1867    }
1868
1869    /**
1870     * @return Returns a reference to <code>this</code> for easy method chaining
1871     */
1872    public PaymentReconciliation setProcessNote(List<NotesComponent> theProcessNote) { 
1873      this.processNote = theProcessNote;
1874      return this;
1875    }
1876
1877    public boolean hasProcessNote() { 
1878      if (this.processNote == null)
1879        return false;
1880      for (NotesComponent item : this.processNote)
1881        if (!item.isEmpty())
1882          return true;
1883      return false;
1884    }
1885
1886    public NotesComponent addProcessNote() { //3
1887      NotesComponent t = new NotesComponent();
1888      if (this.processNote == null)
1889        this.processNote = new ArrayList<NotesComponent>();
1890      this.processNote.add(t);
1891      return t;
1892    }
1893
1894    public PaymentReconciliation addProcessNote(NotesComponent t) { //3
1895      if (t == null)
1896        return this;
1897      if (this.processNote == null)
1898        this.processNote = new ArrayList<NotesComponent>();
1899      this.processNote.add(t);
1900      return this;
1901    }
1902
1903    /**
1904     * @return The first repetition of repeating field {@link #processNote}, creating it if it does not already exist
1905     */
1906    public NotesComponent getProcessNoteFirstRep() { 
1907      if (getProcessNote().isEmpty()) {
1908        addProcessNote();
1909      }
1910      return getProcessNote().get(0);
1911    }
1912
1913      protected void listChildren(List<Property> children) {
1914        super.listChildren(children);
1915        children.add(new Property("identifier", "Identifier", "A unique identifier assigned to this payment reconciliation.", 0, java.lang.Integer.MAX_VALUE, identifier));
1916        children.add(new Property("status", "code", "The status of the resource instance.", 0, 1, status));
1917        children.add(new Property("period", "Period", "The period of time for which payments have been gathered into this bulk payment for settlement.", 0, 1, period));
1918        children.add(new Property("created", "dateTime", "The date when the resource was created.", 0, 1, created));
1919        children.add(new Property("paymentIssuer", "Reference(Organization)", "The party who generated the payment.", 0, 1, paymentIssuer));
1920        children.add(new Property("request", "Reference(Task)", "Original request resource reference.", 0, 1, request));
1921        children.add(new Property("requestor", "Reference(Practitioner|PractitionerRole|Organization)", "The practitioner who is responsible for the services rendered to the patient.", 0, 1, requestor));
1922        children.add(new Property("outcome", "code", "The outcome of a request for a reconciliation.", 0, 1, outcome));
1923        children.add(new Property("disposition", "string", "A human readable description of the status of the request for the reconciliation.", 0, 1, disposition));
1924        children.add(new Property("paymentDate", "date", "The date of payment as indicated on the financial instrument.", 0, 1, paymentDate));
1925        children.add(new Property("paymentAmount", "Money", "Total payment amount as indicated on the financial instrument.", 0, 1, paymentAmount));
1926        children.add(new Property("paymentIdentifier", "Identifier", "Issuer's unique identifier for the payment instrument.", 0, 1, paymentIdentifier));
1927        children.add(new Property("detail", "", "Distribution of the payment amount for a previously acknowledged payable.", 0, java.lang.Integer.MAX_VALUE, detail));
1928        children.add(new Property("formCode", "CodeableConcept", "A code for the form to be used for printing the content.", 0, 1, formCode));
1929        children.add(new Property("processNote", "", "A note that describes or explains the processing in a human readable form.", 0, java.lang.Integer.MAX_VALUE, processNote));
1930      }
1931
1932      @Override
1933      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1934        switch (_hash) {
1935        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A unique identifier assigned to this payment reconciliation.", 0, java.lang.Integer.MAX_VALUE, identifier);
1936        case -892481550: /*status*/  return new Property("status", "code", "The status of the resource instance.", 0, 1, status);
1937        case -991726143: /*period*/  return new Property("period", "Period", "The period of time for which payments have been gathered into this bulk payment for settlement.", 0, 1, period);
1938        case 1028554472: /*created*/  return new Property("created", "dateTime", "The date when the resource was created.", 0, 1, created);
1939        case 1144026207: /*paymentIssuer*/  return new Property("paymentIssuer", "Reference(Organization)", "The party who generated the payment.", 0, 1, paymentIssuer);
1940        case 1095692943: /*request*/  return new Property("request", "Reference(Task)", "Original request resource reference.", 0, 1, request);
1941        case 693934258: /*requestor*/  return new Property("requestor", "Reference(Practitioner|PractitionerRole|Organization)", "The practitioner who is responsible for the services rendered to the patient.", 0, 1, requestor);
1942        case -1106507950: /*outcome*/  return new Property("outcome", "code", "The outcome of a request for a reconciliation.", 0, 1, outcome);
1943        case 583380919: /*disposition*/  return new Property("disposition", "string", "A human readable description of the status of the request for the reconciliation.", 0, 1, disposition);
1944        case -1540873516: /*paymentDate*/  return new Property("paymentDate", "date", "The date of payment as indicated on the financial instrument.", 0, 1, paymentDate);
1945        case 909332990: /*paymentAmount*/  return new Property("paymentAmount", "Money", "Total payment amount as indicated on the financial instrument.", 0, 1, paymentAmount);
1946        case 1555852111: /*paymentIdentifier*/  return new Property("paymentIdentifier", "Identifier", "Issuer's unique identifier for the payment instrument.", 0, 1, paymentIdentifier);
1947        case -1335224239: /*detail*/  return new Property("detail", "", "Distribution of the payment amount for a previously acknowledged payable.", 0, java.lang.Integer.MAX_VALUE, detail);
1948        case 473181393: /*formCode*/  return new Property("formCode", "CodeableConcept", "A code for the form to be used for printing the content.", 0, 1, formCode);
1949        case 202339073: /*processNote*/  return new Property("processNote", "", "A note that describes or explains the processing in a human readable form.", 0, java.lang.Integer.MAX_VALUE, processNote);
1950        default: return super.getNamedProperty(_hash, _name, _checkValid);
1951        }
1952
1953      }
1954
1955      @Override
1956      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1957        switch (hash) {
1958        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1959        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PaymentReconciliationStatus>
1960        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
1961        case 1028554472: /*created*/ return this.created == null ? new Base[0] : new Base[] {this.created}; // DateTimeType
1962        case 1144026207: /*paymentIssuer*/ return this.paymentIssuer == null ? new Base[0] : new Base[] {this.paymentIssuer}; // Reference
1963        case 1095692943: /*request*/ return this.request == null ? new Base[0] : new Base[] {this.request}; // Reference
1964        case 693934258: /*requestor*/ return this.requestor == null ? new Base[0] : new Base[] {this.requestor}; // Reference
1965        case -1106507950: /*outcome*/ return this.outcome == null ? new Base[0] : new Base[] {this.outcome}; // Enumeration<RemittanceOutcome>
1966        case 583380919: /*disposition*/ return this.disposition == null ? new Base[0] : new Base[] {this.disposition}; // StringType
1967        case -1540873516: /*paymentDate*/ return this.paymentDate == null ? new Base[0] : new Base[] {this.paymentDate}; // DateType
1968        case 909332990: /*paymentAmount*/ return this.paymentAmount == null ? new Base[0] : new Base[] {this.paymentAmount}; // Money
1969        case 1555852111: /*paymentIdentifier*/ return this.paymentIdentifier == null ? new Base[0] : new Base[] {this.paymentIdentifier}; // Identifier
1970        case -1335224239: /*detail*/ return this.detail == null ? new Base[0] : this.detail.toArray(new Base[this.detail.size()]); // DetailsComponent
1971        case 473181393: /*formCode*/ return this.formCode == null ? new Base[0] : new Base[] {this.formCode}; // CodeableConcept
1972        case 202339073: /*processNote*/ return this.processNote == null ? new Base[0] : this.processNote.toArray(new Base[this.processNote.size()]); // NotesComponent
1973        default: return super.getProperty(hash, name, checkValid);
1974        }
1975
1976      }
1977
1978      @Override
1979      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1980        switch (hash) {
1981        case -1618432855: // identifier
1982          this.getIdentifier().add(castToIdentifier(value)); // Identifier
1983          return value;
1984        case -892481550: // status
1985          value = new PaymentReconciliationStatusEnumFactory().fromType(castToCode(value));
1986          this.status = (Enumeration) value; // Enumeration<PaymentReconciliationStatus>
1987          return value;
1988        case -991726143: // period
1989          this.period = castToPeriod(value); // Period
1990          return value;
1991        case 1028554472: // created
1992          this.created = castToDateTime(value); // DateTimeType
1993          return value;
1994        case 1144026207: // paymentIssuer
1995          this.paymentIssuer = castToReference(value); // Reference
1996          return value;
1997        case 1095692943: // request
1998          this.request = castToReference(value); // Reference
1999          return value;
2000        case 693934258: // requestor
2001          this.requestor = castToReference(value); // Reference
2002          return value;
2003        case -1106507950: // outcome
2004          value = new RemittanceOutcomeEnumFactory().fromType(castToCode(value));
2005          this.outcome = (Enumeration) value; // Enumeration<RemittanceOutcome>
2006          return value;
2007        case 583380919: // disposition
2008          this.disposition = castToString(value); // StringType
2009          return value;
2010        case -1540873516: // paymentDate
2011          this.paymentDate = castToDate(value); // DateType
2012          return value;
2013        case 909332990: // paymentAmount
2014          this.paymentAmount = castToMoney(value); // Money
2015          return value;
2016        case 1555852111: // paymentIdentifier
2017          this.paymentIdentifier = castToIdentifier(value); // Identifier
2018          return value;
2019        case -1335224239: // detail
2020          this.getDetail().add((DetailsComponent) value); // DetailsComponent
2021          return value;
2022        case 473181393: // formCode
2023          this.formCode = castToCodeableConcept(value); // CodeableConcept
2024          return value;
2025        case 202339073: // processNote
2026          this.getProcessNote().add((NotesComponent) value); // NotesComponent
2027          return value;
2028        default: return super.setProperty(hash, name, value);
2029        }
2030
2031      }
2032
2033      @Override
2034      public Base setProperty(String name, Base value) throws FHIRException {
2035        if (name.equals("identifier")) {
2036          this.getIdentifier().add(castToIdentifier(value));
2037        } else if (name.equals("status")) {
2038          value = new PaymentReconciliationStatusEnumFactory().fromType(castToCode(value));
2039          this.status = (Enumeration) value; // Enumeration<PaymentReconciliationStatus>
2040        } else if (name.equals("period")) {
2041          this.period = castToPeriod(value); // Period
2042        } else if (name.equals("created")) {
2043          this.created = castToDateTime(value); // DateTimeType
2044        } else if (name.equals("paymentIssuer")) {
2045          this.paymentIssuer = castToReference(value); // Reference
2046        } else if (name.equals("request")) {
2047          this.request = castToReference(value); // Reference
2048        } else if (name.equals("requestor")) {
2049          this.requestor = castToReference(value); // Reference
2050        } else if (name.equals("outcome")) {
2051          value = new RemittanceOutcomeEnumFactory().fromType(castToCode(value));
2052          this.outcome = (Enumeration) value; // Enumeration<RemittanceOutcome>
2053        } else if (name.equals("disposition")) {
2054          this.disposition = castToString(value); // StringType
2055        } else if (name.equals("paymentDate")) {
2056          this.paymentDate = castToDate(value); // DateType
2057        } else if (name.equals("paymentAmount")) {
2058          this.paymentAmount = castToMoney(value); // Money
2059        } else if (name.equals("paymentIdentifier")) {
2060          this.paymentIdentifier = castToIdentifier(value); // Identifier
2061        } else if (name.equals("detail")) {
2062          this.getDetail().add((DetailsComponent) value);
2063        } else if (name.equals("formCode")) {
2064          this.formCode = castToCodeableConcept(value); // CodeableConcept
2065        } else if (name.equals("processNote")) {
2066          this.getProcessNote().add((NotesComponent) value);
2067        } else
2068          return super.setProperty(name, value);
2069        return value;
2070      }
2071
2072      @Override
2073      public Base makeProperty(int hash, String name) throws FHIRException {
2074        switch (hash) {
2075        case -1618432855:  return addIdentifier(); 
2076        case -892481550:  return getStatusElement();
2077        case -991726143:  return getPeriod(); 
2078        case 1028554472:  return getCreatedElement();
2079        case 1144026207:  return getPaymentIssuer(); 
2080        case 1095692943:  return getRequest(); 
2081        case 693934258:  return getRequestor(); 
2082        case -1106507950:  return getOutcomeElement();
2083        case 583380919:  return getDispositionElement();
2084        case -1540873516:  return getPaymentDateElement();
2085        case 909332990:  return getPaymentAmount(); 
2086        case 1555852111:  return getPaymentIdentifier(); 
2087        case -1335224239:  return addDetail(); 
2088        case 473181393:  return getFormCode(); 
2089        case 202339073:  return addProcessNote(); 
2090        default: return super.makeProperty(hash, name);
2091        }
2092
2093      }
2094
2095      @Override
2096      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2097        switch (hash) {
2098        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2099        case -892481550: /*status*/ return new String[] {"code"};
2100        case -991726143: /*period*/ return new String[] {"Period"};
2101        case 1028554472: /*created*/ return new String[] {"dateTime"};
2102        case 1144026207: /*paymentIssuer*/ return new String[] {"Reference"};
2103        case 1095692943: /*request*/ return new String[] {"Reference"};
2104        case 693934258: /*requestor*/ return new String[] {"Reference"};
2105        case -1106507950: /*outcome*/ return new String[] {"code"};
2106        case 583380919: /*disposition*/ return new String[] {"string"};
2107        case -1540873516: /*paymentDate*/ return new String[] {"date"};
2108        case 909332990: /*paymentAmount*/ return new String[] {"Money"};
2109        case 1555852111: /*paymentIdentifier*/ return new String[] {"Identifier"};
2110        case -1335224239: /*detail*/ return new String[] {};
2111        case 473181393: /*formCode*/ return new String[] {"CodeableConcept"};
2112        case 202339073: /*processNote*/ return new String[] {};
2113        default: return super.getTypesForProperty(hash, name);
2114        }
2115
2116      }
2117
2118      @Override
2119      public Base addChild(String name) throws FHIRException {
2120        if (name.equals("identifier")) {
2121          return addIdentifier();
2122        }
2123        else if (name.equals("status")) {
2124          throw new FHIRException("Cannot call addChild on a primitive type PaymentReconciliation.status");
2125        }
2126        else if (name.equals("period")) {
2127          this.period = new Period();
2128          return this.period;
2129        }
2130        else if (name.equals("created")) {
2131          throw new FHIRException("Cannot call addChild on a primitive type PaymentReconciliation.created");
2132        }
2133        else if (name.equals("paymentIssuer")) {
2134          this.paymentIssuer = new Reference();
2135          return this.paymentIssuer;
2136        }
2137        else if (name.equals("request")) {
2138          this.request = new Reference();
2139          return this.request;
2140        }
2141        else if (name.equals("requestor")) {
2142          this.requestor = new Reference();
2143          return this.requestor;
2144        }
2145        else if (name.equals("outcome")) {
2146          throw new FHIRException("Cannot call addChild on a primitive type PaymentReconciliation.outcome");
2147        }
2148        else if (name.equals("disposition")) {
2149          throw new FHIRException("Cannot call addChild on a primitive type PaymentReconciliation.disposition");
2150        }
2151        else if (name.equals("paymentDate")) {
2152          throw new FHIRException("Cannot call addChild on a primitive type PaymentReconciliation.paymentDate");
2153        }
2154        else if (name.equals("paymentAmount")) {
2155          this.paymentAmount = new Money();
2156          return this.paymentAmount;
2157        }
2158        else if (name.equals("paymentIdentifier")) {
2159          this.paymentIdentifier = new Identifier();
2160          return this.paymentIdentifier;
2161        }
2162        else if (name.equals("detail")) {
2163          return addDetail();
2164        }
2165        else if (name.equals("formCode")) {
2166          this.formCode = new CodeableConcept();
2167          return this.formCode;
2168        }
2169        else if (name.equals("processNote")) {
2170          return addProcessNote();
2171        }
2172        else
2173          return super.addChild(name);
2174      }
2175
2176  public String fhirType() {
2177    return "PaymentReconciliation";
2178
2179  }
2180
2181      public PaymentReconciliation copy() {
2182        PaymentReconciliation dst = new PaymentReconciliation();
2183        copyValues(dst);
2184        if (identifier != null) {
2185          dst.identifier = new ArrayList<Identifier>();
2186          for (Identifier i : identifier)
2187            dst.identifier.add(i.copy());
2188        };
2189        dst.status = status == null ? null : status.copy();
2190        dst.period = period == null ? null : period.copy();
2191        dst.created = created == null ? null : created.copy();
2192        dst.paymentIssuer = paymentIssuer == null ? null : paymentIssuer.copy();
2193        dst.request = request == null ? null : request.copy();
2194        dst.requestor = requestor == null ? null : requestor.copy();
2195        dst.outcome = outcome == null ? null : outcome.copy();
2196        dst.disposition = disposition == null ? null : disposition.copy();
2197        dst.paymentDate = paymentDate == null ? null : paymentDate.copy();
2198        dst.paymentAmount = paymentAmount == null ? null : paymentAmount.copy();
2199        dst.paymentIdentifier = paymentIdentifier == null ? null : paymentIdentifier.copy();
2200        if (detail != null) {
2201          dst.detail = new ArrayList<DetailsComponent>();
2202          for (DetailsComponent i : detail)
2203            dst.detail.add(i.copy());
2204        };
2205        dst.formCode = formCode == null ? null : formCode.copy();
2206        if (processNote != null) {
2207          dst.processNote = new ArrayList<NotesComponent>();
2208          for (NotesComponent i : processNote)
2209            dst.processNote.add(i.copy());
2210        };
2211        return dst;
2212      }
2213
2214      protected PaymentReconciliation typedCopy() {
2215        return copy();
2216      }
2217
2218      @Override
2219      public boolean equalsDeep(Base other_) {
2220        if (!super.equalsDeep(other_))
2221          return false;
2222        if (!(other_ instanceof PaymentReconciliation))
2223          return false;
2224        PaymentReconciliation o = (PaymentReconciliation) other_;
2225        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(period, o.period, true)
2226           && compareDeep(created, o.created, true) && compareDeep(paymentIssuer, o.paymentIssuer, true) && compareDeep(request, o.request, true)
2227           && compareDeep(requestor, o.requestor, true) && compareDeep(outcome, o.outcome, true) && compareDeep(disposition, o.disposition, true)
2228           && compareDeep(paymentDate, o.paymentDate, true) && compareDeep(paymentAmount, o.paymentAmount, true)
2229           && compareDeep(paymentIdentifier, o.paymentIdentifier, true) && compareDeep(detail, o.detail, true)
2230           && compareDeep(formCode, o.formCode, true) && compareDeep(processNote, o.processNote, true);
2231      }
2232
2233      @Override
2234      public boolean equalsShallow(Base other_) {
2235        if (!super.equalsShallow(other_))
2236          return false;
2237        if (!(other_ instanceof PaymentReconciliation))
2238          return false;
2239        PaymentReconciliation o = (PaymentReconciliation) other_;
2240        return compareValues(status, o.status, true) && compareValues(created, o.created, true) && compareValues(outcome, o.outcome, true)
2241           && compareValues(disposition, o.disposition, true) && compareValues(paymentDate, o.paymentDate, true)
2242          ;
2243      }
2244
2245      public boolean isEmpty() {
2246        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, period
2247          , created, paymentIssuer, request, requestor, outcome, disposition, paymentDate
2248          , paymentAmount, paymentIdentifier, detail, formCode, processNote);
2249      }
2250
2251  @Override
2252  public ResourceType getResourceType() {
2253    return ResourceType.PaymentReconciliation;
2254   }
2255
2256 /**
2257   * Search parameter: <b>identifier</b>
2258   * <p>
2259   * Description: <b>The business identifier of the ExplanationOfBenefit</b><br>
2260   * Type: <b>token</b><br>
2261   * Path: <b>PaymentReconciliation.identifier</b><br>
2262   * </p>
2263   */
2264  @SearchParamDefinition(name="identifier", path="PaymentReconciliation.identifier", description="The business identifier of the ExplanationOfBenefit", type="token" )
2265  public static final String SP_IDENTIFIER = "identifier";
2266 /**
2267   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2268   * <p>
2269   * Description: <b>The business identifier of the ExplanationOfBenefit</b><br>
2270   * Type: <b>token</b><br>
2271   * Path: <b>PaymentReconciliation.identifier</b><br>
2272   * </p>
2273   */
2274  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2275
2276 /**
2277   * Search parameter: <b>request</b>
2278   * <p>
2279   * Description: <b>The reference to the claim</b><br>
2280   * Type: <b>reference</b><br>
2281   * Path: <b>PaymentReconciliation.request</b><br>
2282   * </p>
2283   */
2284  @SearchParamDefinition(name="request", path="PaymentReconciliation.request", description="The reference to the claim", type="reference", target={Task.class } )
2285  public static final String SP_REQUEST = "request";
2286 /**
2287   * <b>Fluent Client</b> search parameter constant for <b>request</b>
2288   * <p>
2289   * Description: <b>The reference to the claim</b><br>
2290   * Type: <b>reference</b><br>
2291   * Path: <b>PaymentReconciliation.request</b><br>
2292   * </p>
2293   */
2294  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REQUEST = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REQUEST);
2295
2296/**
2297   * Constant for fluent queries to be used to add include statements. Specifies
2298   * the path value of "<b>PaymentReconciliation:request</b>".
2299   */
2300  public static final ca.uhn.fhir.model.api.Include INCLUDE_REQUEST = new ca.uhn.fhir.model.api.Include("PaymentReconciliation:request").toLocked();
2301
2302 /**
2303   * Search parameter: <b>disposition</b>
2304   * <p>
2305   * Description: <b>The contents of the disposition message</b><br>
2306   * Type: <b>string</b><br>
2307   * Path: <b>PaymentReconciliation.disposition</b><br>
2308   * </p>
2309   */
2310  @SearchParamDefinition(name="disposition", path="PaymentReconciliation.disposition", description="The contents of the disposition message", type="string" )
2311  public static final String SP_DISPOSITION = "disposition";
2312 /**
2313   * <b>Fluent Client</b> search parameter constant for <b>disposition</b>
2314   * <p>
2315   * Description: <b>The contents of the disposition message</b><br>
2316   * Type: <b>string</b><br>
2317   * Path: <b>PaymentReconciliation.disposition</b><br>
2318   * </p>
2319   */
2320  public static final ca.uhn.fhir.rest.gclient.StringClientParam DISPOSITION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DISPOSITION);
2321
2322 /**
2323   * Search parameter: <b>created</b>
2324   * <p>
2325   * Description: <b>The creation date</b><br>
2326   * Type: <b>date</b><br>
2327   * Path: <b>PaymentReconciliation.created</b><br>
2328   * </p>
2329   */
2330  @SearchParamDefinition(name="created", path="PaymentReconciliation.created", description="The creation date", type="date" )
2331  public static final String SP_CREATED = "created";
2332 /**
2333   * <b>Fluent Client</b> search parameter constant for <b>created</b>
2334   * <p>
2335   * Description: <b>The creation date</b><br>
2336   * Type: <b>date</b><br>
2337   * Path: <b>PaymentReconciliation.created</b><br>
2338   * </p>
2339   */
2340  public static final ca.uhn.fhir.rest.gclient.DateClientParam CREATED = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_CREATED);
2341
2342 /**
2343   * Search parameter: <b>payment-issuer</b>
2344   * <p>
2345   * Description: <b>The organization which generated this resource</b><br>
2346   * Type: <b>reference</b><br>
2347   * Path: <b>PaymentReconciliation.paymentIssuer</b><br>
2348   * </p>
2349   */
2350  @SearchParamDefinition(name="payment-issuer", path="PaymentReconciliation.paymentIssuer", description="The organization which generated this resource", type="reference", target={Organization.class } )
2351  public static final String SP_PAYMENT_ISSUER = "payment-issuer";
2352 /**
2353   * <b>Fluent Client</b> search parameter constant for <b>payment-issuer</b>
2354   * <p>
2355   * Description: <b>The organization which generated this resource</b><br>
2356   * Type: <b>reference</b><br>
2357   * Path: <b>PaymentReconciliation.paymentIssuer</b><br>
2358   * </p>
2359   */
2360  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PAYMENT_ISSUER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PAYMENT_ISSUER);
2361
2362/**
2363   * Constant for fluent queries to be used to add include statements. Specifies
2364   * the path value of "<b>PaymentReconciliation:payment-issuer</b>".
2365   */
2366  public static final ca.uhn.fhir.model.api.Include INCLUDE_PAYMENT_ISSUER = new ca.uhn.fhir.model.api.Include("PaymentReconciliation:payment-issuer").toLocked();
2367
2368 /**
2369   * Search parameter: <b>outcome</b>
2370   * <p>
2371   * Description: <b>The processing outcome</b><br>
2372   * Type: <b>token</b><br>
2373   * Path: <b>PaymentReconciliation.outcome</b><br>
2374   * </p>
2375   */
2376  @SearchParamDefinition(name="outcome", path="PaymentReconciliation.outcome", description="The processing outcome", type="token" )
2377  public static final String SP_OUTCOME = "outcome";
2378 /**
2379   * <b>Fluent Client</b> search parameter constant for <b>outcome</b>
2380   * <p>
2381   * Description: <b>The processing outcome</b><br>
2382   * Type: <b>token</b><br>
2383   * Path: <b>PaymentReconciliation.outcome</b><br>
2384   * </p>
2385   */
2386  public static final ca.uhn.fhir.rest.gclient.TokenClientParam OUTCOME = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_OUTCOME);
2387
2388 /**
2389   * Search parameter: <b>requestor</b>
2390   * <p>
2391   * Description: <b>The reference to the provider who submitted the claim</b><br>
2392   * Type: <b>reference</b><br>
2393   * Path: <b>PaymentReconciliation.requestor</b><br>
2394   * </p>
2395   */
2396  @SearchParamDefinition(name="requestor", path="PaymentReconciliation.requestor", description="The reference to the provider who submitted the claim", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Practitioner") }, target={Organization.class, Practitioner.class, PractitionerRole.class } )
2397  public static final String SP_REQUESTOR = "requestor";
2398 /**
2399   * <b>Fluent Client</b> search parameter constant for <b>requestor</b>
2400   * <p>
2401   * Description: <b>The reference to the provider who submitted the claim</b><br>
2402   * Type: <b>reference</b><br>
2403   * Path: <b>PaymentReconciliation.requestor</b><br>
2404   * </p>
2405   */
2406  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REQUESTOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REQUESTOR);
2407
2408/**
2409   * Constant for fluent queries to be used to add include statements. Specifies
2410   * the path value of "<b>PaymentReconciliation:requestor</b>".
2411   */
2412  public static final ca.uhn.fhir.model.api.Include INCLUDE_REQUESTOR = new ca.uhn.fhir.model.api.Include("PaymentReconciliation:requestor").toLocked();
2413
2414 /**
2415   * Search parameter: <b>status</b>
2416   * <p>
2417   * Description: <b>The status of the payment reconciliation</b><br>
2418   * Type: <b>token</b><br>
2419   * Path: <b>PaymentReconciliation.status</b><br>
2420   * </p>
2421   */
2422  @SearchParamDefinition(name="status", path="PaymentReconciliation.status", description="The status of the payment reconciliation", type="token" )
2423  public static final String SP_STATUS = "status";
2424 /**
2425   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2426   * <p>
2427   * Description: <b>The status of the payment reconciliation</b><br>
2428   * Type: <b>token</b><br>
2429   * Path: <b>PaymentReconciliation.status</b><br>
2430   * </p>
2431   */
2432  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2433
2434
2435}
2436