001package org.hl7.fhir.r4.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Tue, May 12, 2020 07:26+1000 for FHIR v4.0.1
033import java.util.ArrayList;
034import java.util.Date;
035import java.util.List;
036
037import org.hl7.fhir.exceptions.FHIRException;
038
039import ca.uhn.fhir.model.api.annotation.Child;
040import ca.uhn.fhir.model.api.annotation.Description;
041import ca.uhn.fhir.model.api.annotation.ResourceDef;
042import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
043
044/**
045 * This resource provides the status of the payment for goods and services
046 * rendered, and the request and response resource references.
047 */
048@ResourceDef(name = "PaymentNotice", profile = "http://hl7.org/fhir/StructureDefinition/PaymentNotice")
049public class PaymentNotice extends DomainResource {
050
051  public enum PaymentNoticeStatus {
052    /**
053     * The instance is currently in-force.
054     */
055    ACTIVE,
056    /**
057     * The instance is withdrawn, rescinded or reversed.
058     */
059    CANCELLED,
060    /**
061     * A new instance the contents of which is not complete.
062     */
063    DRAFT,
064    /**
065     * The instance was entered in error.
066     */
067    ENTEREDINERROR,
068    /**
069     * added to help the parsers with the generic types
070     */
071    NULL;
072
073    public static PaymentNoticeStatus fromCode(String codeString) throws FHIRException {
074      if (codeString == null || "".equals(codeString))
075        return null;
076      if ("active".equals(codeString))
077        return ACTIVE;
078      if ("cancelled".equals(codeString))
079        return CANCELLED;
080      if ("draft".equals(codeString))
081        return DRAFT;
082      if ("entered-in-error".equals(codeString))
083        return ENTEREDINERROR;
084      if (Configuration.isAcceptInvalidEnums())
085        return null;
086      else
087        throw new FHIRException("Unknown PaymentNoticeStatus code '" + codeString + "'");
088    }
089
090    public String toCode() {
091      switch (this) {
092      case ACTIVE:
093        return "active";
094      case CANCELLED:
095        return "cancelled";
096      case DRAFT:
097        return "draft";
098      case ENTEREDINERROR:
099        return "entered-in-error";
100      case NULL:
101        return null;
102      default:
103        return "?";
104      }
105    }
106
107    public String getSystem() {
108      switch (this) {
109      case ACTIVE:
110        return "http://hl7.org/fhir/fm-status";
111      case CANCELLED:
112        return "http://hl7.org/fhir/fm-status";
113      case DRAFT:
114        return "http://hl7.org/fhir/fm-status";
115      case ENTEREDINERROR:
116        return "http://hl7.org/fhir/fm-status";
117      case NULL:
118        return null;
119      default:
120        return "?";
121      }
122    }
123
124    public String getDefinition() {
125      switch (this) {
126      case ACTIVE:
127        return "The instance is currently in-force.";
128      case CANCELLED:
129        return "The instance is withdrawn, rescinded or reversed.";
130      case DRAFT:
131        return "A new instance the contents of which is not complete.";
132      case ENTEREDINERROR:
133        return "The instance was entered in error.";
134      case NULL:
135        return null;
136      default:
137        return "?";
138      }
139    }
140
141    public String getDisplay() {
142      switch (this) {
143      case ACTIVE:
144        return "Active";
145      case CANCELLED:
146        return "Cancelled";
147      case DRAFT:
148        return "Draft";
149      case ENTEREDINERROR:
150        return "Entered in Error";
151      case NULL:
152        return null;
153      default:
154        return "?";
155      }
156    }
157  }
158
159  public static class PaymentNoticeStatusEnumFactory implements EnumFactory<PaymentNoticeStatus> {
160    public PaymentNoticeStatus fromCode(String codeString) throws IllegalArgumentException {
161      if (codeString == null || "".equals(codeString))
162        if (codeString == null || "".equals(codeString))
163          return null;
164      if ("active".equals(codeString))
165        return PaymentNoticeStatus.ACTIVE;
166      if ("cancelled".equals(codeString))
167        return PaymentNoticeStatus.CANCELLED;
168      if ("draft".equals(codeString))
169        return PaymentNoticeStatus.DRAFT;
170      if ("entered-in-error".equals(codeString))
171        return PaymentNoticeStatus.ENTEREDINERROR;
172      throw new IllegalArgumentException("Unknown PaymentNoticeStatus code '" + codeString + "'");
173    }
174
175    public Enumeration<PaymentNoticeStatus> fromType(PrimitiveType<?> code) throws FHIRException {
176      if (code == null)
177        return null;
178      if (code.isEmpty())
179        return new Enumeration<PaymentNoticeStatus>(this, PaymentNoticeStatus.NULL, code);
180      String codeString = code.asStringValue();
181      if (codeString == null || "".equals(codeString))
182        return new Enumeration<PaymentNoticeStatus>(this, PaymentNoticeStatus.NULL, code);
183      if ("active".equals(codeString))
184        return new Enumeration<PaymentNoticeStatus>(this, PaymentNoticeStatus.ACTIVE, code);
185      if ("cancelled".equals(codeString))
186        return new Enumeration<PaymentNoticeStatus>(this, PaymentNoticeStatus.CANCELLED, code);
187      if ("draft".equals(codeString))
188        return new Enumeration<PaymentNoticeStatus>(this, PaymentNoticeStatus.DRAFT, code);
189      if ("entered-in-error".equals(codeString))
190        return new Enumeration<PaymentNoticeStatus>(this, PaymentNoticeStatus.ENTEREDINERROR, code);
191      throw new FHIRException("Unknown PaymentNoticeStatus code '" + codeString + "'");
192    }
193
194    public String toCode(PaymentNoticeStatus code) {
195      if (code == PaymentNoticeStatus.ACTIVE)
196        return "active";
197      if (code == PaymentNoticeStatus.CANCELLED)
198        return "cancelled";
199      if (code == PaymentNoticeStatus.DRAFT)
200        return "draft";
201      if (code == PaymentNoticeStatus.ENTEREDINERROR)
202        return "entered-in-error";
203      return "?";
204    }
205
206    public String toSystem(PaymentNoticeStatus code) {
207      return code.getSystem();
208    }
209  }
210
211  /**
212   * A unique identifier assigned to this payment notice.
213   */
214  @Child(name = "identifier", type = {
215      Identifier.class }, order = 0, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = false)
216  @Description(shortDefinition = "Business Identifier for the payment noctice", formalDefinition = "A unique identifier assigned to this payment notice.")
217  protected List<Identifier> identifier;
218
219  /**
220   * The status of the resource instance.
221   */
222  @Child(name = "status", type = { CodeType.class }, order = 1, min = 1, max = 1, modifier = true, summary = true)
223  @Description(shortDefinition = "active | cancelled | draft | entered-in-error", formalDefinition = "The status of the resource instance.")
224  @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/fm-status")
225  protected Enumeration<PaymentNoticeStatus> status;
226
227  /**
228   * Reference of resource for which payment is being made.
229   */
230  @Child(name = "request", type = { Reference.class }, order = 2, min = 0, max = 1, modifier = false, summary = false)
231  @Description(shortDefinition = "Request reference", formalDefinition = "Reference of resource for which payment is being made.")
232  protected Reference request;
233
234  /**
235   * The actual object that is the target of the reference (Reference of resource
236   * for which payment is being made.)
237   */
238  protected Resource requestTarget;
239
240  /**
241   * Reference of response to resource for which payment is being made.
242   */
243  @Child(name = "response", type = { Reference.class }, order = 3, min = 0, max = 1, modifier = false, summary = false)
244  @Description(shortDefinition = "Response reference", formalDefinition = "Reference of response to resource for which payment is being made.")
245  protected Reference response;
246
247  /**
248   * The actual object that is the target of the reference (Reference of response
249   * to resource for which payment is being made.)
250   */
251  protected Resource responseTarget;
252
253  /**
254   * The date when this resource was created.
255   */
256  @Child(name = "created", type = { DateTimeType.class }, order = 4, min = 1, max = 1, modifier = false, summary = true)
257  @Description(shortDefinition = "Creation date", formalDefinition = "The date when this resource was created.")
258  protected DateTimeType created;
259
260  /**
261   * The practitioner who is responsible for the services rendered to the patient.
262   */
263  @Child(name = "provider", type = { Practitioner.class, PractitionerRole.class,
264      Organization.class }, order = 5, min = 0, max = 1, modifier = false, summary = false)
265  @Description(shortDefinition = "Responsible practitioner", formalDefinition = "The practitioner who is responsible for the services rendered to the patient.")
266  protected Reference provider;
267
268  /**
269   * The actual object that is the target of the reference (The practitioner who
270   * is responsible for the services rendered to the patient.)
271   */
272  protected Resource providerTarget;
273
274  /**
275   * A reference to the payment which is the subject of this notice.
276   */
277  @Child(name = "payment", type = {
278      PaymentReconciliation.class }, order = 6, min = 1, max = 1, modifier = false, summary = true)
279  @Description(shortDefinition = "Payment reference", formalDefinition = "A reference to the payment which is the subject of this notice.")
280  protected Reference payment;
281
282  /**
283   * The actual object that is the target of the reference (A reference to the
284   * payment which is the subject of this notice.)
285   */
286  protected PaymentReconciliation paymentTarget;
287
288  /**
289   * The date when the above payment action occurred.
290   */
291  @Child(name = "paymentDate", type = {
292      DateType.class }, order = 7, min = 0, max = 1, modifier = false, summary = false)
293  @Description(shortDefinition = "Payment or clearing date", formalDefinition = "The date when the above payment action occurred.")
294  protected DateType paymentDate;
295
296  /**
297   * The party who will receive or has received payment that is the subject of
298   * this notification.
299   */
300  @Child(name = "payee", type = { Practitioner.class, PractitionerRole.class,
301      Organization.class }, order = 8, min = 0, max = 1, modifier = false, summary = false)
302  @Description(shortDefinition = "Party being paid", formalDefinition = "The party who will receive or has received payment that is the subject of this notification.")
303  protected Reference payee;
304
305  /**
306   * The actual object that is the target of the reference (The party who will
307   * receive or has received payment that is the subject of this notification.)
308   */
309  protected Resource payeeTarget;
310
311  /**
312   * The party who is notified of the payment status.
313   */
314  @Child(name = "recipient", type = {
315      Organization.class }, order = 9, min = 1, max = 1, modifier = false, summary = true)
316  @Description(shortDefinition = "Party being notified", formalDefinition = "The party who is notified of the payment status.")
317  protected Reference recipient;
318
319  /**
320   * The actual object that is the target of the reference (The party who is
321   * notified of the payment status.)
322   */
323  protected Organization recipientTarget;
324
325  /**
326   * The amount sent to the payee.
327   */
328  @Child(name = "amount", type = { Money.class }, order = 10, min = 1, max = 1, modifier = false, summary = true)
329  @Description(shortDefinition = "Monetary amount of the payment", formalDefinition = "The amount sent to the payee.")
330  protected Money amount;
331
332  /**
333   * A code indicating whether payment has been sent or cleared.
334   */
335  @Child(name = "paymentStatus", type = {
336      CodeableConcept.class }, order = 11, min = 0, max = 1, modifier = false, summary = false)
337  @Description(shortDefinition = "Issued or cleared Status of the payment", formalDefinition = "A code indicating whether payment has been sent or cleared.")
338  @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/payment-status")
339  protected CodeableConcept paymentStatus;
340
341  private static final long serialVersionUID = -545198613L;
342
343  /**
344   * Constructor
345   */
346  public PaymentNotice() {
347    super();
348  }
349
350  /**
351   * Constructor
352   */
353  public PaymentNotice(Enumeration<PaymentNoticeStatus> status, DateTimeType created, Reference payment,
354      Reference recipient, Money amount) {
355    super();
356    this.status = status;
357    this.created = created;
358    this.payment = payment;
359    this.recipient = recipient;
360    this.amount = amount;
361  }
362
363  /**
364   * @return {@link #identifier} (A unique identifier assigned to this payment
365   *         notice.)
366   */
367  public List<Identifier> getIdentifier() {
368    if (this.identifier == null)
369      this.identifier = new ArrayList<Identifier>();
370    return this.identifier;
371  }
372
373  /**
374   * @return Returns a reference to <code>this</code> for easy method chaining
375   */
376  public PaymentNotice setIdentifier(List<Identifier> theIdentifier) {
377    this.identifier = theIdentifier;
378    return this;
379  }
380
381  public boolean hasIdentifier() {
382    if (this.identifier == null)
383      return false;
384    for (Identifier item : this.identifier)
385      if (!item.isEmpty())
386        return true;
387    return false;
388  }
389
390  public Identifier addIdentifier() { // 3
391    Identifier t = new Identifier();
392    if (this.identifier == null)
393      this.identifier = new ArrayList<Identifier>();
394    this.identifier.add(t);
395    return t;
396  }
397
398  public PaymentNotice addIdentifier(Identifier t) { // 3
399    if (t == null)
400      return this;
401    if (this.identifier == null)
402      this.identifier = new ArrayList<Identifier>();
403    this.identifier.add(t);
404    return this;
405  }
406
407  /**
408   * @return The first repetition of repeating field {@link #identifier}, creating
409   *         it if it does not already exist
410   */
411  public Identifier getIdentifierFirstRep() {
412    if (getIdentifier().isEmpty()) {
413      addIdentifier();
414    }
415    return getIdentifier().get(0);
416  }
417
418  /**
419   * @return {@link #status} (The status of the resource instance.). This is the
420   *         underlying object with id, value and extensions. The accessor
421   *         "getStatus" gives direct access to the value
422   */
423  public Enumeration<PaymentNoticeStatus> getStatusElement() {
424    if (this.status == null)
425      if (Configuration.errorOnAutoCreate())
426        throw new Error("Attempt to auto-create PaymentNotice.status");
427      else if (Configuration.doAutoCreate())
428        this.status = new Enumeration<PaymentNoticeStatus>(new PaymentNoticeStatusEnumFactory()); // bb
429    return this.status;
430  }
431
432  public boolean hasStatusElement() {
433    return this.status != null && !this.status.isEmpty();
434  }
435
436  public boolean hasStatus() {
437    return this.status != null && !this.status.isEmpty();
438  }
439
440  /**
441   * @param value {@link #status} (The status of the resource instance.). This is
442   *              the underlying object with id, value and extensions. The
443   *              accessor "getStatus" gives direct access to the value
444   */
445  public PaymentNotice setStatusElement(Enumeration<PaymentNoticeStatus> value) {
446    this.status = value;
447    return this;
448  }
449
450  /**
451   * @return The status of the resource instance.
452   */
453  public PaymentNoticeStatus getStatus() {
454    return this.status == null ? null : this.status.getValue();
455  }
456
457  /**
458   * @param value The status of the resource instance.
459   */
460  public PaymentNotice setStatus(PaymentNoticeStatus value) {
461    if (this.status == null)
462      this.status = new Enumeration<PaymentNoticeStatus>(new PaymentNoticeStatusEnumFactory());
463    this.status.setValue(value);
464    return this;
465  }
466
467  /**
468   * @return {@link #request} (Reference of resource for which payment is being
469   *         made.)
470   */
471  public Reference getRequest() {
472    if (this.request == null)
473      if (Configuration.errorOnAutoCreate())
474        throw new Error("Attempt to auto-create PaymentNotice.request");
475      else if (Configuration.doAutoCreate())
476        this.request = new Reference(); // cc
477    return this.request;
478  }
479
480  public boolean hasRequest() {
481    return this.request != null && !this.request.isEmpty();
482  }
483
484  /**
485   * @param value {@link #request} (Reference of resource for which payment is
486   *              being made.)
487   */
488  public PaymentNotice setRequest(Reference value) {
489    this.request = value;
490    return this;
491  }
492
493  /**
494   * @return {@link #request} The actual object that is the target of the
495   *         reference. The reference library doesn't populate this, but you can
496   *         use it to hold the resource if you resolve it. (Reference of resource
497   *         for which payment is being made.)
498   */
499  public Resource getRequestTarget() {
500    return this.requestTarget;
501  }
502
503  /**
504   * @param value {@link #request} The actual object that is the target of the
505   *              reference. The reference library doesn't use these, but you can
506   *              use it to hold the resource if you resolve it. (Reference of
507   *              resource for which payment is being made.)
508   */
509  public PaymentNotice setRequestTarget(Resource value) {
510    this.requestTarget = value;
511    return this;
512  }
513
514  /**
515   * @return {@link #response} (Reference of response to resource for which
516   *         payment is being made.)
517   */
518  public Reference getResponse() {
519    if (this.response == null)
520      if (Configuration.errorOnAutoCreate())
521        throw new Error("Attempt to auto-create PaymentNotice.response");
522      else if (Configuration.doAutoCreate())
523        this.response = new Reference(); // cc
524    return this.response;
525  }
526
527  public boolean hasResponse() {
528    return this.response != null && !this.response.isEmpty();
529  }
530
531  /**
532   * @param value {@link #response} (Reference of response to resource for which
533   *              payment is being made.)
534   */
535  public PaymentNotice setResponse(Reference value) {
536    this.response = value;
537    return this;
538  }
539
540  /**
541   * @return {@link #response} The actual object that is the target of the
542   *         reference. The reference library doesn't populate this, but you can
543   *         use it to hold the resource if you resolve it. (Reference of response
544   *         to resource for which payment is being made.)
545   */
546  public Resource getResponseTarget() {
547    return this.responseTarget;
548  }
549
550  /**
551   * @param value {@link #response} The actual object that is the target of the
552   *              reference. The reference library doesn't use these, but you can
553   *              use it to hold the resource if you resolve it. (Reference of
554   *              response to resource for which payment is being made.)
555   */
556  public PaymentNotice setResponseTarget(Resource value) {
557    this.responseTarget = value;
558    return this;
559  }
560
561  /**
562   * @return {@link #created} (The date when this resource was created.). This is
563   *         the underlying object with id, value and extensions. The accessor
564   *         "getCreated" gives direct access to the value
565   */
566  public DateTimeType getCreatedElement() {
567    if (this.created == null)
568      if (Configuration.errorOnAutoCreate())
569        throw new Error("Attempt to auto-create PaymentNotice.created");
570      else if (Configuration.doAutoCreate())
571        this.created = new DateTimeType(); // bb
572    return this.created;
573  }
574
575  public boolean hasCreatedElement() {
576    return this.created != null && !this.created.isEmpty();
577  }
578
579  public boolean hasCreated() {
580    return this.created != null && !this.created.isEmpty();
581  }
582
583  /**
584   * @param value {@link #created} (The date when this resource was created.).
585   *              This is the underlying object with id, value and extensions. The
586   *              accessor "getCreated" gives direct access to the value
587   */
588  public PaymentNotice setCreatedElement(DateTimeType value) {
589    this.created = value;
590    return this;
591  }
592
593  /**
594   * @return The date when this resource was created.
595   */
596  public Date getCreated() {
597    return this.created == null ? null : this.created.getValue();
598  }
599
600  /**
601   * @param value The date when this resource was created.
602   */
603  public PaymentNotice setCreated(Date value) {
604    if (this.created == null)
605      this.created = new DateTimeType();
606    this.created.setValue(value);
607    return this;
608  }
609
610  /**
611   * @return {@link #provider} (The practitioner who is responsible for the
612   *         services rendered to the patient.)
613   */
614  public Reference getProvider() {
615    if (this.provider == null)
616      if (Configuration.errorOnAutoCreate())
617        throw new Error("Attempt to auto-create PaymentNotice.provider");
618      else if (Configuration.doAutoCreate())
619        this.provider = new Reference(); // cc
620    return this.provider;
621  }
622
623  public boolean hasProvider() {
624    return this.provider != null && !this.provider.isEmpty();
625  }
626
627  /**
628   * @param value {@link #provider} (The practitioner who is responsible for the
629   *              services rendered to the patient.)
630   */
631  public PaymentNotice setProvider(Reference value) {
632    this.provider = value;
633    return this;
634  }
635
636  /**
637   * @return {@link #provider} The actual object that is the target of the
638   *         reference. The reference library doesn't populate this, but you can
639   *         use it to hold the resource if you resolve it. (The practitioner who
640   *         is responsible for the services rendered to the patient.)
641   */
642  public Resource getProviderTarget() {
643    return this.providerTarget;
644  }
645
646  /**
647   * @param value {@link #provider} The actual object that is the target of the
648   *              reference. The reference library doesn't use these, but you can
649   *              use it to hold the resource if you resolve it. (The practitioner
650   *              who is responsible for the services rendered to the patient.)
651   */
652  public PaymentNotice setProviderTarget(Resource value) {
653    this.providerTarget = value;
654    return this;
655  }
656
657  /**
658   * @return {@link #payment} (A reference to the payment which is the subject of
659   *         this notice.)
660   */
661  public Reference getPayment() {
662    if (this.payment == null)
663      if (Configuration.errorOnAutoCreate())
664        throw new Error("Attempt to auto-create PaymentNotice.payment");
665      else if (Configuration.doAutoCreate())
666        this.payment = new Reference(); // cc
667    return this.payment;
668  }
669
670  public boolean hasPayment() {
671    return this.payment != null && !this.payment.isEmpty();
672  }
673
674  /**
675   * @param value {@link #payment} (A reference to the payment which is the
676   *              subject of this notice.)
677   */
678  public PaymentNotice setPayment(Reference value) {
679    this.payment = value;
680    return this;
681  }
682
683  /**
684   * @return {@link #payment} The actual object that is the target of the
685   *         reference. The reference library doesn't populate this, but you can
686   *         use it to hold the resource if you resolve it. (A reference to the
687   *         payment which is the subject of this notice.)
688   */
689  public PaymentReconciliation getPaymentTarget() {
690    if (this.paymentTarget == null)
691      if (Configuration.errorOnAutoCreate())
692        throw new Error("Attempt to auto-create PaymentNotice.payment");
693      else if (Configuration.doAutoCreate())
694        this.paymentTarget = new PaymentReconciliation(); // aa
695    return this.paymentTarget;
696  }
697
698  /**
699   * @param value {@link #payment} The actual object that is the target of the
700   *              reference. The reference library doesn't use these, but you can
701   *              use it to hold the resource if you resolve it. (A reference to
702   *              the payment which is the subject of this notice.)
703   */
704  public PaymentNotice setPaymentTarget(PaymentReconciliation value) {
705    this.paymentTarget = value;
706    return this;
707  }
708
709  /**
710   * @return {@link #paymentDate} (The date when the above payment action
711   *         occurred.). This is the underlying object with id, value and
712   *         extensions. The accessor "getPaymentDate" gives direct access to the
713   *         value
714   */
715  public DateType getPaymentDateElement() {
716    if (this.paymentDate == null)
717      if (Configuration.errorOnAutoCreate())
718        throw new Error("Attempt to auto-create PaymentNotice.paymentDate");
719      else if (Configuration.doAutoCreate())
720        this.paymentDate = new DateType(); // bb
721    return this.paymentDate;
722  }
723
724  public boolean hasPaymentDateElement() {
725    return this.paymentDate != null && !this.paymentDate.isEmpty();
726  }
727
728  public boolean hasPaymentDate() {
729    return this.paymentDate != null && !this.paymentDate.isEmpty();
730  }
731
732  /**
733   * @param value {@link #paymentDate} (The date when the above payment action
734   *              occurred.). This is the underlying object with id, value and
735   *              extensions. The accessor "getPaymentDate" gives direct access to
736   *              the value
737   */
738  public PaymentNotice setPaymentDateElement(DateType value) {
739    this.paymentDate = value;
740    return this;
741  }
742
743  /**
744   * @return The date when the above payment action occurred.
745   */
746  public Date getPaymentDate() {
747    return this.paymentDate == null ? null : this.paymentDate.getValue();
748  }
749
750  /**
751   * @param value The date when the above payment action occurred.
752   */
753  public PaymentNotice setPaymentDate(Date value) {
754    if (value == null)
755      this.paymentDate = null;
756    else {
757      if (this.paymentDate == null)
758        this.paymentDate = new DateType();
759      this.paymentDate.setValue(value);
760    }
761    return this;
762  }
763
764  /**
765   * @return {@link #payee} (The party who will receive or has received payment
766   *         that is the subject of this notification.)
767   */
768  public Reference getPayee() {
769    if (this.payee == null)
770      if (Configuration.errorOnAutoCreate())
771        throw new Error("Attempt to auto-create PaymentNotice.payee");
772      else if (Configuration.doAutoCreate())
773        this.payee = new Reference(); // cc
774    return this.payee;
775  }
776
777  public boolean hasPayee() {
778    return this.payee != null && !this.payee.isEmpty();
779  }
780
781  /**
782   * @param value {@link #payee} (The party who will receive or has received
783   *              payment that is the subject of this notification.)
784   */
785  public PaymentNotice setPayee(Reference value) {
786    this.payee = value;
787    return this;
788  }
789
790  /**
791   * @return {@link #payee} The actual object that is the target of the reference.
792   *         The reference library doesn't populate this, but you can use it to
793   *         hold the resource if you resolve it. (The party who will receive or
794   *         has received payment that is the subject of this notification.)
795   */
796  public Resource getPayeeTarget() {
797    return this.payeeTarget;
798  }
799
800  /**
801   * @param value {@link #payee} The actual object that is the target of the
802   *              reference. The reference library doesn't use these, but you can
803   *              use it to hold the resource if you resolve it. (The party who
804   *              will receive or has received payment that is the subject of this
805   *              notification.)
806   */
807  public PaymentNotice setPayeeTarget(Resource value) {
808    this.payeeTarget = value;
809    return this;
810  }
811
812  /**
813   * @return {@link #recipient} (The party who is notified of the payment status.)
814   */
815  public Reference getRecipient() {
816    if (this.recipient == null)
817      if (Configuration.errorOnAutoCreate())
818        throw new Error("Attempt to auto-create PaymentNotice.recipient");
819      else if (Configuration.doAutoCreate())
820        this.recipient = new Reference(); // cc
821    return this.recipient;
822  }
823
824  public boolean hasRecipient() {
825    return this.recipient != null && !this.recipient.isEmpty();
826  }
827
828  /**
829   * @param value {@link #recipient} (The party who is notified of the payment
830   *              status.)
831   */
832  public PaymentNotice setRecipient(Reference value) {
833    this.recipient = value;
834    return this;
835  }
836
837  /**
838   * @return {@link #recipient} The actual object that is the target of the
839   *         reference. The reference library doesn't populate this, but you can
840   *         use it to hold the resource if you resolve it. (The party who is
841   *         notified of the payment status.)
842   */
843  public Organization getRecipientTarget() {
844    if (this.recipientTarget == null)
845      if (Configuration.errorOnAutoCreate())
846        throw new Error("Attempt to auto-create PaymentNotice.recipient");
847      else if (Configuration.doAutoCreate())
848        this.recipientTarget = new Organization(); // aa
849    return this.recipientTarget;
850  }
851
852  /**
853   * @param value {@link #recipient} The actual object that is the target of the
854   *              reference. The reference library doesn't use these, but you can
855   *              use it to hold the resource if you resolve it. (The party who is
856   *              notified of the payment status.)
857   */
858  public PaymentNotice setRecipientTarget(Organization value) {
859    this.recipientTarget = value;
860    return this;
861  }
862
863  /**
864   * @return {@link #amount} (The amount sent to the payee.)
865   */
866  public Money getAmount() {
867    if (this.amount == null)
868      if (Configuration.errorOnAutoCreate())
869        throw new Error("Attempt to auto-create PaymentNotice.amount");
870      else if (Configuration.doAutoCreate())
871        this.amount = new Money(); // cc
872    return this.amount;
873  }
874
875  public boolean hasAmount() {
876    return this.amount != null && !this.amount.isEmpty();
877  }
878
879  /**
880   * @param value {@link #amount} (The amount sent to the payee.)
881   */
882  public PaymentNotice setAmount(Money value) {
883    this.amount = value;
884    return this;
885  }
886
887  /**
888   * @return {@link #paymentStatus} (A code indicating whether payment has been
889   *         sent or cleared.)
890   */
891  public CodeableConcept getPaymentStatus() {
892    if (this.paymentStatus == null)
893      if (Configuration.errorOnAutoCreate())
894        throw new Error("Attempt to auto-create PaymentNotice.paymentStatus");
895      else if (Configuration.doAutoCreate())
896        this.paymentStatus = new CodeableConcept(); // cc
897    return this.paymentStatus;
898  }
899
900  public boolean hasPaymentStatus() {
901    return this.paymentStatus != null && !this.paymentStatus.isEmpty();
902  }
903
904  /**
905   * @param value {@link #paymentStatus} (A code indicating whether payment has
906   *              been sent or cleared.)
907   */
908  public PaymentNotice setPaymentStatus(CodeableConcept value) {
909    this.paymentStatus = value;
910    return this;
911  }
912
913  protected void listChildren(List<Property> children) {
914    super.listChildren(children);
915    children.add(new Property("identifier", "Identifier", "A unique identifier assigned to this payment notice.", 0,
916        java.lang.Integer.MAX_VALUE, identifier));
917    children.add(new Property("status", "code", "The status of the resource instance.", 0, 1, status));
918    children.add(new Property("request", "Reference(Any)", "Reference of resource for which payment is being made.", 0,
919        1, request));
920    children.add(new Property("response", "Reference(Any)",
921        "Reference of response to resource for which payment is being made.", 0, 1, response));
922    children.add(new Property("created", "dateTime", "The date when this resource was created.", 0, 1, created));
923    children.add(new Property("provider", "Reference(Practitioner|PractitionerRole|Organization)",
924        "The practitioner who is responsible for the services rendered to the patient.", 0, 1, provider));
925    children.add(new Property("payment", "Reference(PaymentReconciliation)",
926        "A reference to the payment which is the subject of this notice.", 0, 1, payment));
927    children.add(
928        new Property("paymentDate", "date", "The date when the above payment action occurred.", 0, 1, paymentDate));
929    children.add(new Property("payee", "Reference(Practitioner|PractitionerRole|Organization)",
930        "The party who will receive or has received payment that is the subject of this notification.", 0, 1, payee));
931    children.add(new Property("recipient", "Reference(Organization)",
932        "The party who is notified of the payment status.", 0, 1, recipient));
933    children.add(new Property("amount", "Money", "The amount sent to the payee.", 0, 1, amount));
934    children.add(new Property("paymentStatus", "CodeableConcept",
935        "A code indicating whether payment has been sent or cleared.", 0, 1, paymentStatus));
936  }
937
938  @Override
939  public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
940    switch (_hash) {
941    case -1618432855:
942      /* identifier */ return new Property("identifier", "Identifier",
943          "A unique identifier assigned to this payment notice.", 0, java.lang.Integer.MAX_VALUE, identifier);
944    case -892481550:
945      /* status */ return new Property("status", "code", "The status of the resource instance.", 0, 1, status);
946    case 1095692943:
947      /* request */ return new Property("request", "Reference(Any)",
948          "Reference of resource for which payment is being made.", 0, 1, request);
949    case -340323263:
950      /* response */ return new Property("response", "Reference(Any)",
951          "Reference of response to resource for which payment is being made.", 0, 1, response);
952    case 1028554472:
953      /* created */ return new Property("created", "dateTime", "The date when this resource was created.", 0, 1,
954          created);
955    case -987494927:
956      /* provider */ return new Property("provider", "Reference(Practitioner|PractitionerRole|Organization)",
957          "The practitioner who is responsible for the services rendered to the patient.", 0, 1, provider);
958    case -786681338:
959      /* payment */ return new Property("payment", "Reference(PaymentReconciliation)",
960          "A reference to the payment which is the subject of this notice.", 0, 1, payment);
961    case -1540873516:
962      /* paymentDate */ return new Property("paymentDate", "date", "The date when the above payment action occurred.",
963          0, 1, paymentDate);
964    case 106443592:
965      /* payee */ return new Property("payee", "Reference(Practitioner|PractitionerRole|Organization)",
966          "The party who will receive or has received payment that is the subject of this notification.", 0, 1, payee);
967    case 820081177:
968      /* recipient */ return new Property("recipient", "Reference(Organization)",
969          "The party who is notified of the payment status.", 0, 1, recipient);
970    case -1413853096:
971      /* amount */ return new Property("amount", "Money", "The amount sent to the payee.", 0, 1, amount);
972    case 1430704536:
973      /* paymentStatus */ return new Property("paymentStatus", "CodeableConcept",
974          "A code indicating whether payment has been sent or cleared.", 0, 1, paymentStatus);
975    default:
976      return super.getNamedProperty(_hash, _name, _checkValid);
977    }
978
979  }
980
981  @Override
982  public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
983    switch (hash) {
984    case -1618432855:
985      /* identifier */ return this.identifier == null ? new Base[0]
986          : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
987    case -892481550:
988      /* status */ return this.status == null ? new Base[0] : new Base[] { this.status }; // Enumeration<PaymentNoticeStatus>
989    case 1095692943:
990      /* request */ return this.request == null ? new Base[0] : new Base[] { this.request }; // Reference
991    case -340323263:
992      /* response */ return this.response == null ? new Base[0] : new Base[] { this.response }; // Reference
993    case 1028554472:
994      /* created */ return this.created == null ? new Base[0] : new Base[] { this.created }; // DateTimeType
995    case -987494927:
996      /* provider */ return this.provider == null ? new Base[0] : new Base[] { this.provider }; // Reference
997    case -786681338:
998      /* payment */ return this.payment == null ? new Base[0] : new Base[] { this.payment }; // Reference
999    case -1540873516:
1000      /* paymentDate */ return this.paymentDate == null ? new Base[0] : new Base[] { this.paymentDate }; // DateType
1001    case 106443592:
1002      /* payee */ return this.payee == null ? new Base[0] : new Base[] { this.payee }; // Reference
1003    case 820081177:
1004      /* recipient */ return this.recipient == null ? new Base[0] : new Base[] { this.recipient }; // Reference
1005    case -1413853096:
1006      /* amount */ return this.amount == null ? new Base[0] : new Base[] { this.amount }; // Money
1007    case 1430704536:
1008      /* paymentStatus */ return this.paymentStatus == null ? new Base[0] : new Base[] { this.paymentStatus }; // CodeableConcept
1009    default:
1010      return super.getProperty(hash, name, checkValid);
1011    }
1012
1013  }
1014
1015  @Override
1016  public Base setProperty(int hash, String name, Base value) throws FHIRException {
1017    switch (hash) {
1018    case -1618432855: // identifier
1019      this.getIdentifier().add(castToIdentifier(value)); // Identifier
1020      return value;
1021    case -892481550: // status
1022      value = new PaymentNoticeStatusEnumFactory().fromType(castToCode(value));
1023      this.status = (Enumeration) value; // Enumeration<PaymentNoticeStatus>
1024      return value;
1025    case 1095692943: // request
1026      this.request = castToReference(value); // Reference
1027      return value;
1028    case -340323263: // response
1029      this.response = castToReference(value); // Reference
1030      return value;
1031    case 1028554472: // created
1032      this.created = castToDateTime(value); // DateTimeType
1033      return value;
1034    case -987494927: // provider
1035      this.provider = castToReference(value); // Reference
1036      return value;
1037    case -786681338: // payment
1038      this.payment = castToReference(value); // Reference
1039      return value;
1040    case -1540873516: // paymentDate
1041      this.paymentDate = castToDate(value); // DateType
1042      return value;
1043    case 106443592: // payee
1044      this.payee = castToReference(value); // Reference
1045      return value;
1046    case 820081177: // recipient
1047      this.recipient = castToReference(value); // Reference
1048      return value;
1049    case -1413853096: // amount
1050      this.amount = castToMoney(value); // Money
1051      return value;
1052    case 1430704536: // paymentStatus
1053      this.paymentStatus = castToCodeableConcept(value); // CodeableConcept
1054      return value;
1055    default:
1056      return super.setProperty(hash, name, value);
1057    }
1058
1059  }
1060
1061  @Override
1062  public Base setProperty(String name, Base value) throws FHIRException {
1063    if (name.equals("identifier")) {
1064      this.getIdentifier().add(castToIdentifier(value));
1065    } else if (name.equals("status")) {
1066      value = new PaymentNoticeStatusEnumFactory().fromType(castToCode(value));
1067      this.status = (Enumeration) value; // Enumeration<PaymentNoticeStatus>
1068    } else if (name.equals("request")) {
1069      this.request = castToReference(value); // Reference
1070    } else if (name.equals("response")) {
1071      this.response = castToReference(value); // Reference
1072    } else if (name.equals("created")) {
1073      this.created = castToDateTime(value); // DateTimeType
1074    } else if (name.equals("provider")) {
1075      this.provider = castToReference(value); // Reference
1076    } else if (name.equals("payment")) {
1077      this.payment = castToReference(value); // Reference
1078    } else if (name.equals("paymentDate")) {
1079      this.paymentDate = castToDate(value); // DateType
1080    } else if (name.equals("payee")) {
1081      this.payee = castToReference(value); // Reference
1082    } else if (name.equals("recipient")) {
1083      this.recipient = castToReference(value); // Reference
1084    } else if (name.equals("amount")) {
1085      this.amount = castToMoney(value); // Money
1086    } else if (name.equals("paymentStatus")) {
1087      this.paymentStatus = castToCodeableConcept(value); // CodeableConcept
1088    } else
1089      return super.setProperty(name, value);
1090    return value;
1091  }
1092
1093  @Override
1094  public Base makeProperty(int hash, String name) throws FHIRException {
1095    switch (hash) {
1096    case -1618432855:
1097      return addIdentifier();
1098    case -892481550:
1099      return getStatusElement();
1100    case 1095692943:
1101      return getRequest();
1102    case -340323263:
1103      return getResponse();
1104    case 1028554472:
1105      return getCreatedElement();
1106    case -987494927:
1107      return getProvider();
1108    case -786681338:
1109      return getPayment();
1110    case -1540873516:
1111      return getPaymentDateElement();
1112    case 106443592:
1113      return getPayee();
1114    case 820081177:
1115      return getRecipient();
1116    case -1413853096:
1117      return getAmount();
1118    case 1430704536:
1119      return getPaymentStatus();
1120    default:
1121      return super.makeProperty(hash, name);
1122    }
1123
1124  }
1125
1126  @Override
1127  public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1128    switch (hash) {
1129    case -1618432855:
1130      /* identifier */ return new String[] { "Identifier" };
1131    case -892481550:
1132      /* status */ return new String[] { "code" };
1133    case 1095692943:
1134      /* request */ return new String[] { "Reference" };
1135    case -340323263:
1136      /* response */ return new String[] { "Reference" };
1137    case 1028554472:
1138      /* created */ return new String[] { "dateTime" };
1139    case -987494927:
1140      /* provider */ return new String[] { "Reference" };
1141    case -786681338:
1142      /* payment */ return new String[] { "Reference" };
1143    case -1540873516:
1144      /* paymentDate */ return new String[] { "date" };
1145    case 106443592:
1146      /* payee */ return new String[] { "Reference" };
1147    case 820081177:
1148      /* recipient */ return new String[] { "Reference" };
1149    case -1413853096:
1150      /* amount */ return new String[] { "Money" };
1151    case 1430704536:
1152      /* paymentStatus */ return new String[] { "CodeableConcept" };
1153    default:
1154      return super.getTypesForProperty(hash, name);
1155    }
1156
1157  }
1158
1159  @Override
1160  public Base addChild(String name) throws FHIRException {
1161    if (name.equals("identifier")) {
1162      return addIdentifier();
1163    } else if (name.equals("status")) {
1164      throw new FHIRException("Cannot call addChild on a singleton property PaymentNotice.status");
1165    } else if (name.equals("request")) {
1166      this.request = new Reference();
1167      return this.request;
1168    } else if (name.equals("response")) {
1169      this.response = new Reference();
1170      return this.response;
1171    } else if (name.equals("created")) {
1172      throw new FHIRException("Cannot call addChild on a singleton property PaymentNotice.created");
1173    } else if (name.equals("provider")) {
1174      this.provider = new Reference();
1175      return this.provider;
1176    } else if (name.equals("payment")) {
1177      this.payment = new Reference();
1178      return this.payment;
1179    } else if (name.equals("paymentDate")) {
1180      throw new FHIRException("Cannot call addChild on a singleton property PaymentNotice.paymentDate");
1181    } else if (name.equals("payee")) {
1182      this.payee = new Reference();
1183      return this.payee;
1184    } else if (name.equals("recipient")) {
1185      this.recipient = new Reference();
1186      return this.recipient;
1187    } else if (name.equals("amount")) {
1188      this.amount = new Money();
1189      return this.amount;
1190    } else if (name.equals("paymentStatus")) {
1191      this.paymentStatus = new CodeableConcept();
1192      return this.paymentStatus;
1193    } else
1194      return super.addChild(name);
1195  }
1196
1197  public String fhirType() {
1198    return "PaymentNotice";
1199
1200  }
1201
1202  public PaymentNotice copy() {
1203    PaymentNotice dst = new PaymentNotice();
1204    copyValues(dst);
1205    return dst;
1206  }
1207
1208  public void copyValues(PaymentNotice dst) {
1209    super.copyValues(dst);
1210    if (identifier != null) {
1211      dst.identifier = new ArrayList<Identifier>();
1212      for (Identifier i : identifier)
1213        dst.identifier.add(i.copy());
1214    }
1215    ;
1216    dst.status = status == null ? null : status.copy();
1217    dst.request = request == null ? null : request.copy();
1218    dst.response = response == null ? null : response.copy();
1219    dst.created = created == null ? null : created.copy();
1220    dst.provider = provider == null ? null : provider.copy();
1221    dst.payment = payment == null ? null : payment.copy();
1222    dst.paymentDate = paymentDate == null ? null : paymentDate.copy();
1223    dst.payee = payee == null ? null : payee.copy();
1224    dst.recipient = recipient == null ? null : recipient.copy();
1225    dst.amount = amount == null ? null : amount.copy();
1226    dst.paymentStatus = paymentStatus == null ? null : paymentStatus.copy();
1227  }
1228
1229  protected PaymentNotice typedCopy() {
1230    return copy();
1231  }
1232
1233  @Override
1234  public boolean equalsDeep(Base other_) {
1235    if (!super.equalsDeep(other_))
1236      return false;
1237    if (!(other_ instanceof PaymentNotice))
1238      return false;
1239    PaymentNotice o = (PaymentNotice) other_;
1240    return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true)
1241        && compareDeep(request, o.request, true) && compareDeep(response, o.response, true)
1242        && compareDeep(created, o.created, true) && compareDeep(provider, o.provider, true)
1243        && compareDeep(payment, o.payment, true) && compareDeep(paymentDate, o.paymentDate, true)
1244        && compareDeep(payee, o.payee, true) && compareDeep(recipient, o.recipient, true)
1245        && compareDeep(amount, o.amount, true) && compareDeep(paymentStatus, o.paymentStatus, true);
1246  }
1247
1248  @Override
1249  public boolean equalsShallow(Base other_) {
1250    if (!super.equalsShallow(other_))
1251      return false;
1252    if (!(other_ instanceof PaymentNotice))
1253      return false;
1254    PaymentNotice o = (PaymentNotice) other_;
1255    return compareValues(status, o.status, true) && compareValues(created, o.created, true)
1256        && compareValues(paymentDate, o.paymentDate, true);
1257  }
1258
1259  public boolean isEmpty() {
1260    return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, request, response, created,
1261        provider, payment, paymentDate, payee, recipient, amount, paymentStatus);
1262  }
1263
1264  @Override
1265  public ResourceType getResourceType() {
1266    return ResourceType.PaymentNotice;
1267  }
1268
1269  /**
1270   * Search parameter: <b>identifier</b>
1271   * <p>
1272   * Description: <b>The business identifier of the notice</b><br>
1273   * Type: <b>token</b><br>
1274   * Path: <b>PaymentNotice.identifier</b><br>
1275   * </p>
1276   */
1277  @SearchParamDefinition(name = "identifier", path = "PaymentNotice.identifier", description = "The business identifier of the notice", type = "token")
1278  public static final String SP_IDENTIFIER = "identifier";
1279  /**
1280   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1281   * <p>
1282   * Description: <b>The business identifier of the notice</b><br>
1283   * Type: <b>token</b><br>
1284   * Path: <b>PaymentNotice.identifier</b><br>
1285   * </p>
1286   */
1287  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(
1288      SP_IDENTIFIER);
1289
1290  /**
1291   * Search parameter: <b>request</b>
1292   * <p>
1293   * Description: <b>The Claim</b><br>
1294   * Type: <b>reference</b><br>
1295   * Path: <b>PaymentNotice.request</b><br>
1296   * </p>
1297   */
1298  @SearchParamDefinition(name = "request", path = "PaymentNotice.request", description = "The Claim", type = "reference")
1299  public static final String SP_REQUEST = "request";
1300  /**
1301   * <b>Fluent Client</b> search parameter constant for <b>request</b>
1302   * <p>
1303   * Description: <b>The Claim</b><br>
1304   * Type: <b>reference</b><br>
1305   * Path: <b>PaymentNotice.request</b><br>
1306   * </p>
1307   */
1308  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REQUEST = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
1309      SP_REQUEST);
1310
1311  /**
1312   * Constant for fluent queries to be used to add include statements. Specifies
1313   * the path value of "<b>PaymentNotice:request</b>".
1314   */
1315  public static final ca.uhn.fhir.model.api.Include INCLUDE_REQUEST = new ca.uhn.fhir.model.api.Include(
1316      "PaymentNotice:request").toLocked();
1317
1318  /**
1319   * Search parameter: <b>provider</b>
1320   * <p>
1321   * Description: <b>The reference to the provider</b><br>
1322   * Type: <b>reference</b><br>
1323   * Path: <b>PaymentNotice.provider</b><br>
1324   * </p>
1325   */
1326  @SearchParamDefinition(name = "provider", path = "PaymentNotice.provider", description = "The reference to the provider", type = "reference", providesMembershipIn = {
1327      @ca.uhn.fhir.model.api.annotation.Compartment(name = "Practitioner") }, target = { Organization.class,
1328          Practitioner.class, PractitionerRole.class })
1329  public static final String SP_PROVIDER = "provider";
1330  /**
1331   * <b>Fluent Client</b> search parameter constant for <b>provider</b>
1332   * <p>
1333   * Description: <b>The reference to the provider</b><br>
1334   * Type: <b>reference</b><br>
1335   * Path: <b>PaymentNotice.provider</b><br>
1336   * </p>
1337   */
1338  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PROVIDER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
1339      SP_PROVIDER);
1340
1341  /**
1342   * Constant for fluent queries to be used to add include statements. Specifies
1343   * the path value of "<b>PaymentNotice:provider</b>".
1344   */
1345  public static final ca.uhn.fhir.model.api.Include INCLUDE_PROVIDER = new ca.uhn.fhir.model.api.Include(
1346      "PaymentNotice:provider").toLocked();
1347
1348  /**
1349   * Search parameter: <b>created</b>
1350   * <p>
1351   * Description: <b>Creation date fro the notice</b><br>
1352   * Type: <b>date</b><br>
1353   * Path: <b>PaymentNotice.created</b><br>
1354   * </p>
1355   */
1356  @SearchParamDefinition(name = "created", path = "PaymentNotice.created", description = "Creation date fro the notice", type = "date")
1357  public static final String SP_CREATED = "created";
1358  /**
1359   * <b>Fluent Client</b> search parameter constant for <b>created</b>
1360   * <p>
1361   * Description: <b>Creation date fro the notice</b><br>
1362   * Type: <b>date</b><br>
1363   * Path: <b>PaymentNotice.created</b><br>
1364   * </p>
1365   */
1366  public static final ca.uhn.fhir.rest.gclient.DateClientParam CREATED = new ca.uhn.fhir.rest.gclient.DateClientParam(
1367      SP_CREATED);
1368
1369  /**
1370   * Search parameter: <b>response</b>
1371   * <p>
1372   * Description: <b>The ClaimResponse</b><br>
1373   * Type: <b>reference</b><br>
1374   * Path: <b>PaymentNotice.response</b><br>
1375   * </p>
1376   */
1377  @SearchParamDefinition(name = "response", path = "PaymentNotice.response", description = "The ClaimResponse", type = "reference")
1378  public static final String SP_RESPONSE = "response";
1379  /**
1380   * <b>Fluent Client</b> search parameter constant for <b>response</b>
1381   * <p>
1382   * Description: <b>The ClaimResponse</b><br>
1383   * Type: <b>reference</b><br>
1384   * Path: <b>PaymentNotice.response</b><br>
1385   * </p>
1386   */
1387  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam RESPONSE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
1388      SP_RESPONSE);
1389
1390  /**
1391   * Constant for fluent queries to be used to add include statements. Specifies
1392   * the path value of "<b>PaymentNotice:response</b>".
1393   */
1394  public static final ca.uhn.fhir.model.api.Include INCLUDE_RESPONSE = new ca.uhn.fhir.model.api.Include(
1395      "PaymentNotice:response").toLocked();
1396
1397  /**
1398   * Search parameter: <b>payment-status</b>
1399   * <p>
1400   * Description: <b>The type of payment notice</b><br>
1401   * Type: <b>token</b><br>
1402   * Path: <b>PaymentNotice.paymentStatus</b><br>
1403   * </p>
1404   */
1405  @SearchParamDefinition(name = "payment-status", path = "PaymentNotice.paymentStatus", description = "The type of payment notice", type = "token")
1406  public static final String SP_PAYMENT_STATUS = "payment-status";
1407  /**
1408   * <b>Fluent Client</b> search parameter constant for <b>payment-status</b>
1409   * <p>
1410   * Description: <b>The type of payment notice</b><br>
1411   * Type: <b>token</b><br>
1412   * Path: <b>PaymentNotice.paymentStatus</b><br>
1413   * </p>
1414   */
1415  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PAYMENT_STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(
1416      SP_PAYMENT_STATUS);
1417
1418  /**
1419   * Search parameter: <b>status</b>
1420   * <p>
1421   * Description: <b>The status of the payment notice</b><br>
1422   * Type: <b>token</b><br>
1423   * Path: <b>PaymentNotice.status</b><br>
1424   * </p>
1425   */
1426  @SearchParamDefinition(name = "status", path = "PaymentNotice.status", description = "The status of the payment notice", type = "token")
1427  public static final String SP_STATUS = "status";
1428  /**
1429   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1430   * <p>
1431   * Description: <b>The status of the payment notice</b><br>
1432   * Type: <b>token</b><br>
1433   * Path: <b>PaymentNotice.status</b><br>
1434   * </p>
1435   */
1436  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(
1437      SP_STATUS);
1438
1439}