001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Sat, Nov 5, 2022 10:47+1100 for FHIR v5.0.0-ballot
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection.
052 */
053@ResourceDef(name="AppointmentResponse", profile="http://hl7.org/fhir/StructureDefinition/AppointmentResponse")
054public class AppointmentResponse extends DomainResource {
055
056    /**
057     * This records identifiers associated with this appointment response concern that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate.
058     */
059    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
060    @Description(shortDefinition="External Ids for this item", formalDefinition="This records identifiers associated with this appointment response concern that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate." )
061    protected List<Identifier> identifier;
062
063    /**
064     * Appointment that this response is replying to.
065     */
066    @Child(name = "appointment", type = {Appointment.class}, order=1, min=1, max=1, modifier=false, summary=true)
067    @Description(shortDefinition="Appointment this response relates to", formalDefinition="Appointment that this response is replying to." )
068    protected Reference appointment;
069
070    /**
071     * Indicates that the response is proposing a different time that was initially requested.  The new proposed time will be indicated in the start and end properties.
072     */
073    @Child(name = "proposedNewTime", type = {BooleanType.class}, order=2, min=0, max=1, modifier=false, summary=true)
074    @Description(shortDefinition="Indicator for a counter proposal", formalDefinition="Indicates that the response is proposing a different time that was initially requested.  The new proposed time will be indicated in the start and end properties." )
075    protected BooleanType proposedNewTime;
076
077    /**
078     * Date/Time that the appointment is to take place, or requested new start time.
079     */
080    @Child(name = "start", type = {InstantType.class}, order=3, min=0, max=1, modifier=false, summary=false)
081    @Description(shortDefinition="Time from appointment, or requested new start time", formalDefinition="Date/Time that the appointment is to take place, or requested new start time." )
082    protected InstantType start;
083
084    /**
085     * This may be either the same as the appointment request to confirm the details of the appointment, or alternately a new time to request a re-negotiation of the end time.
086     */
087    @Child(name = "end", type = {InstantType.class}, order=4, min=0, max=1, modifier=false, summary=false)
088    @Description(shortDefinition="Time from appointment, or requested new end time", formalDefinition="This may be either the same as the appointment request to confirm the details of the appointment, or alternately a new time to request a re-negotiation of the end time." )
089    protected InstantType end;
090
091    /**
092     * Role of participant in the appointment.
093     */
094    @Child(name = "participantType", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
095    @Description(shortDefinition="Role of participant in the appointment", formalDefinition="Role of participant in the appointment." )
096    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/encounter-participant-type")
097    protected List<CodeableConcept> participantType;
098
099    /**
100     * A Person, Location, HealthcareService, or Device that is participating in the appointment.
101     */
102    @Child(name = "actor", type = {Patient.class, Group.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class, Device.class, HealthcareService.class, Location.class}, order=6, min=0, max=1, modifier=false, summary=true)
103    @Description(shortDefinition="Person(s), Location, HealthcareService, or Device", formalDefinition="A Person, Location, HealthcareService, or Device that is participating in the appointment." )
104    protected Reference actor;
105
106    /**
107     * Participation status of the participant. When the status is declined or tentative if the start/end times are different to the appointment, then these times should be interpreted as a requested time change. When the status is accepted, the times can either be the time of the appointment (as a confirmation of the time) or can be empty.
108     */
109    @Child(name = "participantStatus", type = {CodeType.class}, order=7, min=1, max=1, modifier=true, summary=true)
110    @Description(shortDefinition="accepted | declined | tentative | needs-action", formalDefinition="Participation status of the participant. When the status is declined or tentative if the start/end times are different to the appointment, then these times should be interpreted as a requested time change. When the status is accepted, the times can either be the time of the appointment (as a confirmation of the time) or can be empty." )
111    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/participationstatus")
112    protected Enumeration<ParticipationStatus> participantStatus;
113
114    /**
115     * Additional comments about the appointment.
116     */
117    @Child(name = "comment", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=false)
118    @Description(shortDefinition="Additional comments", formalDefinition="Additional comments about the appointment." )
119    protected StringType comment;
120
121    /**
122     * Indicates that this AppointmentResponse applies to all occurrences in a recurring request.
123     */
124    @Child(name = "recurring", type = {BooleanType.class}, order=9, min=0, max=1, modifier=false, summary=false)
125    @Description(shortDefinition="This response is for all occurrences in a recurring request", formalDefinition="Indicates that this AppointmentResponse applies to all occurrences in a recurring request." )
126    protected BooleanType recurring;
127
128    /**
129     * The original date within a recurring request. This could be used in place of the recurrenceId to be more direct (or where the template is provided through the simple list of dates in `Appointment.occurrenceDate`).
130     */
131    @Child(name = "occurrenceDate", type = {DateType.class}, order=10, min=0, max=1, modifier=false, summary=false)
132    @Description(shortDefinition="Original date within a recurring request", formalDefinition="The original date within a recurring request. This could be used in place of the recurrenceId to be more direct (or where the template is provided through the simple list of dates in `Appointment.occurrenceDate`)." )
133    protected DateType occurrenceDate;
134
135    /**
136     * The recurrence ID (sequence number) of the specific appointment when responding to a recurring request.
137     */
138    @Child(name = "recurrenceId", type = {PositiveIntType.class}, order=11, min=0, max=1, modifier=false, summary=false)
139    @Description(shortDefinition="The recurrence ID of the specific recurring request", formalDefinition="The recurrence ID (sequence number) of the specific appointment when responding to a recurring request." )
140    protected PositiveIntType recurrenceId;
141
142    private static final long serialVersionUID = 1970686636L;
143
144  /**
145   * Constructor
146   */
147    public AppointmentResponse() {
148      super();
149    }
150
151  /**
152   * Constructor
153   */
154    public AppointmentResponse(Reference appointment, ParticipationStatus participantStatus) {
155      super();
156      this.setAppointment(appointment);
157      this.setParticipantStatus(participantStatus);
158    }
159
160    /**
161     * @return {@link #identifier} (This records identifiers associated with this appointment response concern that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate.)
162     */
163    public List<Identifier> getIdentifier() { 
164      if (this.identifier == null)
165        this.identifier = new ArrayList<Identifier>();
166      return this.identifier;
167    }
168
169    /**
170     * @return Returns a reference to <code>this</code> for easy method chaining
171     */
172    public AppointmentResponse setIdentifier(List<Identifier> theIdentifier) { 
173      this.identifier = theIdentifier;
174      return this;
175    }
176
177    public boolean hasIdentifier() { 
178      if (this.identifier == null)
179        return false;
180      for (Identifier item : this.identifier)
181        if (!item.isEmpty())
182          return true;
183      return false;
184    }
185
186    public Identifier addIdentifier() { //3
187      Identifier t = new Identifier();
188      if (this.identifier == null)
189        this.identifier = new ArrayList<Identifier>();
190      this.identifier.add(t);
191      return t;
192    }
193
194    public AppointmentResponse addIdentifier(Identifier t) { //3
195      if (t == null)
196        return this;
197      if (this.identifier == null)
198        this.identifier = new ArrayList<Identifier>();
199      this.identifier.add(t);
200      return this;
201    }
202
203    /**
204     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
205     */
206    public Identifier getIdentifierFirstRep() { 
207      if (getIdentifier().isEmpty()) {
208        addIdentifier();
209      }
210      return getIdentifier().get(0);
211    }
212
213    /**
214     * @return {@link #appointment} (Appointment that this response is replying to.)
215     */
216    public Reference getAppointment() { 
217      if (this.appointment == null)
218        if (Configuration.errorOnAutoCreate())
219          throw new Error("Attempt to auto-create AppointmentResponse.appointment");
220        else if (Configuration.doAutoCreate())
221          this.appointment = new Reference(); // cc
222      return this.appointment;
223    }
224
225    public boolean hasAppointment() { 
226      return this.appointment != null && !this.appointment.isEmpty();
227    }
228
229    /**
230     * @param value {@link #appointment} (Appointment that this response is replying to.)
231     */
232    public AppointmentResponse setAppointment(Reference value) { 
233      this.appointment = value;
234      return this;
235    }
236
237    /**
238     * @return {@link #proposedNewTime} (Indicates that the response is proposing a different time that was initially requested.  The new proposed time will be indicated in the start and end properties.). This is the underlying object with id, value and extensions. The accessor "getProposedNewTime" gives direct access to the value
239     */
240    public BooleanType getProposedNewTimeElement() { 
241      if (this.proposedNewTime == null)
242        if (Configuration.errorOnAutoCreate())
243          throw new Error("Attempt to auto-create AppointmentResponse.proposedNewTime");
244        else if (Configuration.doAutoCreate())
245          this.proposedNewTime = new BooleanType(); // bb
246      return this.proposedNewTime;
247    }
248
249    public boolean hasProposedNewTimeElement() { 
250      return this.proposedNewTime != null && !this.proposedNewTime.isEmpty();
251    }
252
253    public boolean hasProposedNewTime() { 
254      return this.proposedNewTime != null && !this.proposedNewTime.isEmpty();
255    }
256
257    /**
258     * @param value {@link #proposedNewTime} (Indicates that the response is proposing a different time that was initially requested.  The new proposed time will be indicated in the start and end properties.). This is the underlying object with id, value and extensions. The accessor "getProposedNewTime" gives direct access to the value
259     */
260    public AppointmentResponse setProposedNewTimeElement(BooleanType value) { 
261      this.proposedNewTime = value;
262      return this;
263    }
264
265    /**
266     * @return Indicates that the response is proposing a different time that was initially requested.  The new proposed time will be indicated in the start and end properties.
267     */
268    public boolean getProposedNewTime() { 
269      return this.proposedNewTime == null || this.proposedNewTime.isEmpty() ? false : this.proposedNewTime.getValue();
270    }
271
272    /**
273     * @param value Indicates that the response is proposing a different time that was initially requested.  The new proposed time will be indicated in the start and end properties.
274     */
275    public AppointmentResponse setProposedNewTime(boolean value) { 
276        if (this.proposedNewTime == null)
277          this.proposedNewTime = new BooleanType();
278        this.proposedNewTime.setValue(value);
279      return this;
280    }
281
282    /**
283     * @return {@link #start} (Date/Time that the appointment is to take place, or requested new start time.). This is the underlying object with id, value and extensions. The accessor "getStart" gives direct access to the value
284     */
285    public InstantType getStartElement() { 
286      if (this.start == null)
287        if (Configuration.errorOnAutoCreate())
288          throw new Error("Attempt to auto-create AppointmentResponse.start");
289        else if (Configuration.doAutoCreate())
290          this.start = new InstantType(); // bb
291      return this.start;
292    }
293
294    public boolean hasStartElement() { 
295      return this.start != null && !this.start.isEmpty();
296    }
297
298    public boolean hasStart() { 
299      return this.start != null && !this.start.isEmpty();
300    }
301
302    /**
303     * @param value {@link #start} (Date/Time that the appointment is to take place, or requested new start time.). This is the underlying object with id, value and extensions. The accessor "getStart" gives direct access to the value
304     */
305    public AppointmentResponse setStartElement(InstantType value) { 
306      this.start = value;
307      return this;
308    }
309
310    /**
311     * @return Date/Time that the appointment is to take place, or requested new start time.
312     */
313    public Date getStart() { 
314      return this.start == null ? null : this.start.getValue();
315    }
316
317    /**
318     * @param value Date/Time that the appointment is to take place, or requested new start time.
319     */
320    public AppointmentResponse setStart(Date value) { 
321      if (value == null)
322        this.start = null;
323      else {
324        if (this.start == null)
325          this.start = new InstantType();
326        this.start.setValue(value);
327      }
328      return this;
329    }
330
331    /**
332     * @return {@link #end} (This may be either the same as the appointment request to confirm the details of the appointment, or alternately a new time to request a re-negotiation of the end time.). This is the underlying object with id, value and extensions. The accessor "getEnd" gives direct access to the value
333     */
334    public InstantType getEndElement() { 
335      if (this.end == null)
336        if (Configuration.errorOnAutoCreate())
337          throw new Error("Attempt to auto-create AppointmentResponse.end");
338        else if (Configuration.doAutoCreate())
339          this.end = new InstantType(); // bb
340      return this.end;
341    }
342
343    public boolean hasEndElement() { 
344      return this.end != null && !this.end.isEmpty();
345    }
346
347    public boolean hasEnd() { 
348      return this.end != null && !this.end.isEmpty();
349    }
350
351    /**
352     * @param value {@link #end} (This may be either the same as the appointment request to confirm the details of the appointment, or alternately a new time to request a re-negotiation of the end time.). This is the underlying object with id, value and extensions. The accessor "getEnd" gives direct access to the value
353     */
354    public AppointmentResponse setEndElement(InstantType value) { 
355      this.end = value;
356      return this;
357    }
358
359    /**
360     * @return This may be either the same as the appointment request to confirm the details of the appointment, or alternately a new time to request a re-negotiation of the end time.
361     */
362    public Date getEnd() { 
363      return this.end == null ? null : this.end.getValue();
364    }
365
366    /**
367     * @param value This may be either the same as the appointment request to confirm the details of the appointment, or alternately a new time to request a re-negotiation of the end time.
368     */
369    public AppointmentResponse setEnd(Date value) { 
370      if (value == null)
371        this.end = null;
372      else {
373        if (this.end == null)
374          this.end = new InstantType();
375        this.end.setValue(value);
376      }
377      return this;
378    }
379
380    /**
381     * @return {@link #participantType} (Role of participant in the appointment.)
382     */
383    public List<CodeableConcept> getParticipantType() { 
384      if (this.participantType == null)
385        this.participantType = new ArrayList<CodeableConcept>();
386      return this.participantType;
387    }
388
389    /**
390     * @return Returns a reference to <code>this</code> for easy method chaining
391     */
392    public AppointmentResponse setParticipantType(List<CodeableConcept> theParticipantType) { 
393      this.participantType = theParticipantType;
394      return this;
395    }
396
397    public boolean hasParticipantType() { 
398      if (this.participantType == null)
399        return false;
400      for (CodeableConcept item : this.participantType)
401        if (!item.isEmpty())
402          return true;
403      return false;
404    }
405
406    public CodeableConcept addParticipantType() { //3
407      CodeableConcept t = new CodeableConcept();
408      if (this.participantType == null)
409        this.participantType = new ArrayList<CodeableConcept>();
410      this.participantType.add(t);
411      return t;
412    }
413
414    public AppointmentResponse addParticipantType(CodeableConcept t) { //3
415      if (t == null)
416        return this;
417      if (this.participantType == null)
418        this.participantType = new ArrayList<CodeableConcept>();
419      this.participantType.add(t);
420      return this;
421    }
422
423    /**
424     * @return The first repetition of repeating field {@link #participantType}, creating it if it does not already exist {3}
425     */
426    public CodeableConcept getParticipantTypeFirstRep() { 
427      if (getParticipantType().isEmpty()) {
428        addParticipantType();
429      }
430      return getParticipantType().get(0);
431    }
432
433    /**
434     * @return {@link #actor} (A Person, Location, HealthcareService, or Device that is participating in the appointment.)
435     */
436    public Reference getActor() { 
437      if (this.actor == null)
438        if (Configuration.errorOnAutoCreate())
439          throw new Error("Attempt to auto-create AppointmentResponse.actor");
440        else if (Configuration.doAutoCreate())
441          this.actor = new Reference(); // cc
442      return this.actor;
443    }
444
445    public boolean hasActor() { 
446      return this.actor != null && !this.actor.isEmpty();
447    }
448
449    /**
450     * @param value {@link #actor} (A Person, Location, HealthcareService, or Device that is participating in the appointment.)
451     */
452    public AppointmentResponse setActor(Reference value) { 
453      this.actor = value;
454      return this;
455    }
456
457    /**
458     * @return {@link #participantStatus} (Participation status of the participant. When the status is declined or tentative if the start/end times are different to the appointment, then these times should be interpreted as a requested time change. When the status is accepted, the times can either be the time of the appointment (as a confirmation of the time) or can be empty.). This is the underlying object with id, value and extensions. The accessor "getParticipantStatus" gives direct access to the value
459     */
460    public Enumeration<ParticipationStatus> getParticipantStatusElement() { 
461      if (this.participantStatus == null)
462        if (Configuration.errorOnAutoCreate())
463          throw new Error("Attempt to auto-create AppointmentResponse.participantStatus");
464        else if (Configuration.doAutoCreate())
465          this.participantStatus = new Enumeration<ParticipationStatus>(new ParticipationStatusEnumFactory()); // bb
466      return this.participantStatus;
467    }
468
469    public boolean hasParticipantStatusElement() { 
470      return this.participantStatus != null && !this.participantStatus.isEmpty();
471    }
472
473    public boolean hasParticipantStatus() { 
474      return this.participantStatus != null && !this.participantStatus.isEmpty();
475    }
476
477    /**
478     * @param value {@link #participantStatus} (Participation status of the participant. When the status is declined or tentative if the start/end times are different to the appointment, then these times should be interpreted as a requested time change. When the status is accepted, the times can either be the time of the appointment (as a confirmation of the time) or can be empty.). This is the underlying object with id, value and extensions. The accessor "getParticipantStatus" gives direct access to the value
479     */
480    public AppointmentResponse setParticipantStatusElement(Enumeration<ParticipationStatus> value) { 
481      this.participantStatus = value;
482      return this;
483    }
484
485    /**
486     * @return Participation status of the participant. When the status is declined or tentative if the start/end times are different to the appointment, then these times should be interpreted as a requested time change. When the status is accepted, the times can either be the time of the appointment (as a confirmation of the time) or can be empty.
487     */
488    public ParticipationStatus getParticipantStatus() { 
489      return this.participantStatus == null ? null : this.participantStatus.getValue();
490    }
491
492    /**
493     * @param value Participation status of the participant. When the status is declined or tentative if the start/end times are different to the appointment, then these times should be interpreted as a requested time change. When the status is accepted, the times can either be the time of the appointment (as a confirmation of the time) or can be empty.
494     */
495    public AppointmentResponse setParticipantStatus(ParticipationStatus value) { 
496        if (this.participantStatus == null)
497          this.participantStatus = new Enumeration<ParticipationStatus>(new ParticipationStatusEnumFactory());
498        this.participantStatus.setValue(value);
499      return this;
500    }
501
502    /**
503     * @return {@link #comment} (Additional comments about the appointment.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
504     */
505    public StringType getCommentElement() { 
506      if (this.comment == null)
507        if (Configuration.errorOnAutoCreate())
508          throw new Error("Attempt to auto-create AppointmentResponse.comment");
509        else if (Configuration.doAutoCreate())
510          this.comment = new StringType(); // bb
511      return this.comment;
512    }
513
514    public boolean hasCommentElement() { 
515      return this.comment != null && !this.comment.isEmpty();
516    }
517
518    public boolean hasComment() { 
519      return this.comment != null && !this.comment.isEmpty();
520    }
521
522    /**
523     * @param value {@link #comment} (Additional comments about the appointment.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
524     */
525    public AppointmentResponse setCommentElement(StringType value) { 
526      this.comment = value;
527      return this;
528    }
529
530    /**
531     * @return Additional comments about the appointment.
532     */
533    public String getComment() { 
534      return this.comment == null ? null : this.comment.getValue();
535    }
536
537    /**
538     * @param value Additional comments about the appointment.
539     */
540    public AppointmentResponse setComment(String value) { 
541      if (Utilities.noString(value))
542        this.comment = null;
543      else {
544        if (this.comment == null)
545          this.comment = new StringType();
546        this.comment.setValue(value);
547      }
548      return this;
549    }
550
551    /**
552     * @return {@link #recurring} (Indicates that this AppointmentResponse applies to all occurrences in a recurring request.). This is the underlying object with id, value and extensions. The accessor "getRecurring" gives direct access to the value
553     */
554    public BooleanType getRecurringElement() { 
555      if (this.recurring == null)
556        if (Configuration.errorOnAutoCreate())
557          throw new Error("Attempt to auto-create AppointmentResponse.recurring");
558        else if (Configuration.doAutoCreate())
559          this.recurring = new BooleanType(); // bb
560      return this.recurring;
561    }
562
563    public boolean hasRecurringElement() { 
564      return this.recurring != null && !this.recurring.isEmpty();
565    }
566
567    public boolean hasRecurring() { 
568      return this.recurring != null && !this.recurring.isEmpty();
569    }
570
571    /**
572     * @param value {@link #recurring} (Indicates that this AppointmentResponse applies to all occurrences in a recurring request.). This is the underlying object with id, value and extensions. The accessor "getRecurring" gives direct access to the value
573     */
574    public AppointmentResponse setRecurringElement(BooleanType value) { 
575      this.recurring = value;
576      return this;
577    }
578
579    /**
580     * @return Indicates that this AppointmentResponse applies to all occurrences in a recurring request.
581     */
582    public boolean getRecurring() { 
583      return this.recurring == null || this.recurring.isEmpty() ? false : this.recurring.getValue();
584    }
585
586    /**
587     * @param value Indicates that this AppointmentResponse applies to all occurrences in a recurring request.
588     */
589    public AppointmentResponse setRecurring(boolean value) { 
590        if (this.recurring == null)
591          this.recurring = new BooleanType();
592        this.recurring.setValue(value);
593      return this;
594    }
595
596    /**
597     * @return {@link #occurrenceDate} (The original date within a recurring request. This could be used in place of the recurrenceId to be more direct (or where the template is provided through the simple list of dates in `Appointment.occurrenceDate`).). This is the underlying object with id, value and extensions. The accessor "getOccurrenceDate" gives direct access to the value
598     */
599    public DateType getOccurrenceDateElement() { 
600      if (this.occurrenceDate == null)
601        if (Configuration.errorOnAutoCreate())
602          throw new Error("Attempt to auto-create AppointmentResponse.occurrenceDate");
603        else if (Configuration.doAutoCreate())
604          this.occurrenceDate = new DateType(); // bb
605      return this.occurrenceDate;
606    }
607
608    public boolean hasOccurrenceDateElement() { 
609      return this.occurrenceDate != null && !this.occurrenceDate.isEmpty();
610    }
611
612    public boolean hasOccurrenceDate() { 
613      return this.occurrenceDate != null && !this.occurrenceDate.isEmpty();
614    }
615
616    /**
617     * @param value {@link #occurrenceDate} (The original date within a recurring request. This could be used in place of the recurrenceId to be more direct (or where the template is provided through the simple list of dates in `Appointment.occurrenceDate`).). This is the underlying object with id, value and extensions. The accessor "getOccurrenceDate" gives direct access to the value
618     */
619    public AppointmentResponse setOccurrenceDateElement(DateType value) { 
620      this.occurrenceDate = value;
621      return this;
622    }
623
624    /**
625     * @return The original date within a recurring request. This could be used in place of the recurrenceId to be more direct (or where the template is provided through the simple list of dates in `Appointment.occurrenceDate`).
626     */
627    public Date getOccurrenceDate() { 
628      return this.occurrenceDate == null ? null : this.occurrenceDate.getValue();
629    }
630
631    /**
632     * @param value The original date within a recurring request. This could be used in place of the recurrenceId to be more direct (or where the template is provided through the simple list of dates in `Appointment.occurrenceDate`).
633     */
634    public AppointmentResponse setOccurrenceDate(Date value) { 
635      if (value == null)
636        this.occurrenceDate = null;
637      else {
638        if (this.occurrenceDate == null)
639          this.occurrenceDate = new DateType();
640        this.occurrenceDate.setValue(value);
641      }
642      return this;
643    }
644
645    /**
646     * @return {@link #recurrenceId} (The recurrence ID (sequence number) of the specific appointment when responding to a recurring request.). This is the underlying object with id, value and extensions. The accessor "getRecurrenceId" gives direct access to the value
647     */
648    public PositiveIntType getRecurrenceIdElement() { 
649      if (this.recurrenceId == null)
650        if (Configuration.errorOnAutoCreate())
651          throw new Error("Attempt to auto-create AppointmentResponse.recurrenceId");
652        else if (Configuration.doAutoCreate())
653          this.recurrenceId = new PositiveIntType(); // bb
654      return this.recurrenceId;
655    }
656
657    public boolean hasRecurrenceIdElement() { 
658      return this.recurrenceId != null && !this.recurrenceId.isEmpty();
659    }
660
661    public boolean hasRecurrenceId() { 
662      return this.recurrenceId != null && !this.recurrenceId.isEmpty();
663    }
664
665    /**
666     * @param value {@link #recurrenceId} (The recurrence ID (sequence number) of the specific appointment when responding to a recurring request.). This is the underlying object with id, value and extensions. The accessor "getRecurrenceId" gives direct access to the value
667     */
668    public AppointmentResponse setRecurrenceIdElement(PositiveIntType value) { 
669      this.recurrenceId = value;
670      return this;
671    }
672
673    /**
674     * @return The recurrence ID (sequence number) of the specific appointment when responding to a recurring request.
675     */
676    public int getRecurrenceId() { 
677      return this.recurrenceId == null || this.recurrenceId.isEmpty() ? 0 : this.recurrenceId.getValue();
678    }
679
680    /**
681     * @param value The recurrence ID (sequence number) of the specific appointment when responding to a recurring request.
682     */
683    public AppointmentResponse setRecurrenceId(int value) { 
684        if (this.recurrenceId == null)
685          this.recurrenceId = new PositiveIntType();
686        this.recurrenceId.setValue(value);
687      return this;
688    }
689
690      protected void listChildren(List<Property> children) {
691        super.listChildren(children);
692        children.add(new Property("identifier", "Identifier", "This records identifiers associated with this appointment response concern that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate.", 0, java.lang.Integer.MAX_VALUE, identifier));
693        children.add(new Property("appointment", "Reference(Appointment)", "Appointment that this response is replying to.", 0, 1, appointment));
694        children.add(new Property("proposedNewTime", "boolean", "Indicates that the response is proposing a different time that was initially requested.  The new proposed time will be indicated in the start and end properties.", 0, 1, proposedNewTime));
695        children.add(new Property("start", "instant", "Date/Time that the appointment is to take place, or requested new start time.", 0, 1, start));
696        children.add(new Property("end", "instant", "This may be either the same as the appointment request to confirm the details of the appointment, or alternately a new time to request a re-negotiation of the end time.", 0, 1, end));
697        children.add(new Property("participantType", "CodeableConcept", "Role of participant in the appointment.", 0, java.lang.Integer.MAX_VALUE, participantType));
698        children.add(new Property("actor", "Reference(Patient|Group|Practitioner|PractitionerRole|RelatedPerson|Device|HealthcareService|Location)", "A Person, Location, HealthcareService, or Device that is participating in the appointment.", 0, 1, actor));
699        children.add(new Property("participantStatus", "code", "Participation status of the participant. When the status is declined or tentative if the start/end times are different to the appointment, then these times should be interpreted as a requested time change. When the status is accepted, the times can either be the time of the appointment (as a confirmation of the time) or can be empty.", 0, 1, participantStatus));
700        children.add(new Property("comment", "string", "Additional comments about the appointment.", 0, 1, comment));
701        children.add(new Property("recurring", "boolean", "Indicates that this AppointmentResponse applies to all occurrences in a recurring request.", 0, 1, recurring));
702        children.add(new Property("occurrenceDate", "date", "The original date within a recurring request. This could be used in place of the recurrenceId to be more direct (or where the template is provided through the simple list of dates in `Appointment.occurrenceDate`).", 0, 1, occurrenceDate));
703        children.add(new Property("recurrenceId", "positiveInt", "The recurrence ID (sequence number) of the specific appointment when responding to a recurring request.", 0, 1, recurrenceId));
704      }
705
706      @Override
707      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
708        switch (_hash) {
709        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "This records identifiers associated with this appointment response concern that are defined by business processes and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate.", 0, java.lang.Integer.MAX_VALUE, identifier);
710        case -1474995297: /*appointment*/  return new Property("appointment", "Reference(Appointment)", "Appointment that this response is replying to.", 0, 1, appointment);
711        case -577024441: /*proposedNewTime*/  return new Property("proposedNewTime", "boolean", "Indicates that the response is proposing a different time that was initially requested.  The new proposed time will be indicated in the start and end properties.", 0, 1, proposedNewTime);
712        case 109757538: /*start*/  return new Property("start", "instant", "Date/Time that the appointment is to take place, or requested new start time.", 0, 1, start);
713        case 100571: /*end*/  return new Property("end", "instant", "This may be either the same as the appointment request to confirm the details of the appointment, or alternately a new time to request a re-negotiation of the end time.", 0, 1, end);
714        case 841294093: /*participantType*/  return new Property("participantType", "CodeableConcept", "Role of participant in the appointment.", 0, java.lang.Integer.MAX_VALUE, participantType);
715        case 92645877: /*actor*/  return new Property("actor", "Reference(Patient|Group|Practitioner|PractitionerRole|RelatedPerson|Device|HealthcareService|Location)", "A Person, Location, HealthcareService, or Device that is participating in the appointment.", 0, 1, actor);
716        case 996096261: /*participantStatus*/  return new Property("participantStatus", "code", "Participation status of the participant. When the status is declined or tentative if the start/end times are different to the appointment, then these times should be interpreted as a requested time change. When the status is accepted, the times can either be the time of the appointment (as a confirmation of the time) or can be empty.", 0, 1, participantStatus);
717        case 950398559: /*comment*/  return new Property("comment", "string", "Additional comments about the appointment.", 0, 1, comment);
718        case 1165749981: /*recurring*/  return new Property("recurring", "boolean", "Indicates that this AppointmentResponse applies to all occurrences in a recurring request.", 0, 1, recurring);
719        case 1721761055: /*occurrenceDate*/  return new Property("occurrenceDate", "date", "The original date within a recurring request. This could be used in place of the recurrenceId to be more direct (or where the template is provided through the simple list of dates in `Appointment.occurrenceDate`).", 0, 1, occurrenceDate);
720        case -362407829: /*recurrenceId*/  return new Property("recurrenceId", "positiveInt", "The recurrence ID (sequence number) of the specific appointment when responding to a recurring request.", 0, 1, recurrenceId);
721        default: return super.getNamedProperty(_hash, _name, _checkValid);
722        }
723
724      }
725
726      @Override
727      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
728        switch (hash) {
729        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
730        case -1474995297: /*appointment*/ return this.appointment == null ? new Base[0] : new Base[] {this.appointment}; // Reference
731        case -577024441: /*proposedNewTime*/ return this.proposedNewTime == null ? new Base[0] : new Base[] {this.proposedNewTime}; // BooleanType
732        case 109757538: /*start*/ return this.start == null ? new Base[0] : new Base[] {this.start}; // InstantType
733        case 100571: /*end*/ return this.end == null ? new Base[0] : new Base[] {this.end}; // InstantType
734        case 841294093: /*participantType*/ return this.participantType == null ? new Base[0] : this.participantType.toArray(new Base[this.participantType.size()]); // CodeableConcept
735        case 92645877: /*actor*/ return this.actor == null ? new Base[0] : new Base[] {this.actor}; // Reference
736        case 996096261: /*participantStatus*/ return this.participantStatus == null ? new Base[0] : new Base[] {this.participantStatus}; // Enumeration<ParticipationStatus>
737        case 950398559: /*comment*/ return this.comment == null ? new Base[0] : new Base[] {this.comment}; // StringType
738        case 1165749981: /*recurring*/ return this.recurring == null ? new Base[0] : new Base[] {this.recurring}; // BooleanType
739        case 1721761055: /*occurrenceDate*/ return this.occurrenceDate == null ? new Base[0] : new Base[] {this.occurrenceDate}; // DateType
740        case -362407829: /*recurrenceId*/ return this.recurrenceId == null ? new Base[0] : new Base[] {this.recurrenceId}; // PositiveIntType
741        default: return super.getProperty(hash, name, checkValid);
742        }
743
744      }
745
746      @Override
747      public Base setProperty(int hash, String name, Base value) throws FHIRException {
748        switch (hash) {
749        case -1618432855: // identifier
750          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
751          return value;
752        case -1474995297: // appointment
753          this.appointment = TypeConvertor.castToReference(value); // Reference
754          return value;
755        case -577024441: // proposedNewTime
756          this.proposedNewTime = TypeConvertor.castToBoolean(value); // BooleanType
757          return value;
758        case 109757538: // start
759          this.start = TypeConvertor.castToInstant(value); // InstantType
760          return value;
761        case 100571: // end
762          this.end = TypeConvertor.castToInstant(value); // InstantType
763          return value;
764        case 841294093: // participantType
765          this.getParticipantType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
766          return value;
767        case 92645877: // actor
768          this.actor = TypeConvertor.castToReference(value); // Reference
769          return value;
770        case 996096261: // participantStatus
771          value = new ParticipationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
772          this.participantStatus = (Enumeration) value; // Enumeration<ParticipationStatus>
773          return value;
774        case 950398559: // comment
775          this.comment = TypeConvertor.castToString(value); // StringType
776          return value;
777        case 1165749981: // recurring
778          this.recurring = TypeConvertor.castToBoolean(value); // BooleanType
779          return value;
780        case 1721761055: // occurrenceDate
781          this.occurrenceDate = TypeConvertor.castToDate(value); // DateType
782          return value;
783        case -362407829: // recurrenceId
784          this.recurrenceId = TypeConvertor.castToPositiveInt(value); // PositiveIntType
785          return value;
786        default: return super.setProperty(hash, name, value);
787        }
788
789      }
790
791      @Override
792      public Base setProperty(String name, Base value) throws FHIRException {
793        if (name.equals("identifier")) {
794          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
795        } else if (name.equals("appointment")) {
796          this.appointment = TypeConvertor.castToReference(value); // Reference
797        } else if (name.equals("proposedNewTime")) {
798          this.proposedNewTime = TypeConvertor.castToBoolean(value); // BooleanType
799        } else if (name.equals("start")) {
800          this.start = TypeConvertor.castToInstant(value); // InstantType
801        } else if (name.equals("end")) {
802          this.end = TypeConvertor.castToInstant(value); // InstantType
803        } else if (name.equals("participantType")) {
804          this.getParticipantType().add(TypeConvertor.castToCodeableConcept(value));
805        } else if (name.equals("actor")) {
806          this.actor = TypeConvertor.castToReference(value); // Reference
807        } else if (name.equals("participantStatus")) {
808          value = new ParticipationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
809          this.participantStatus = (Enumeration) value; // Enumeration<ParticipationStatus>
810        } else if (name.equals("comment")) {
811          this.comment = TypeConvertor.castToString(value); // StringType
812        } else if (name.equals("recurring")) {
813          this.recurring = TypeConvertor.castToBoolean(value); // BooleanType
814        } else if (name.equals("occurrenceDate")) {
815          this.occurrenceDate = TypeConvertor.castToDate(value); // DateType
816        } else if (name.equals("recurrenceId")) {
817          this.recurrenceId = TypeConvertor.castToPositiveInt(value); // PositiveIntType
818        } else
819          return super.setProperty(name, value);
820        return value;
821      }
822
823      @Override
824      public Base makeProperty(int hash, String name) throws FHIRException {
825        switch (hash) {
826        case -1618432855:  return addIdentifier(); 
827        case -1474995297:  return getAppointment();
828        case -577024441:  return getProposedNewTimeElement();
829        case 109757538:  return getStartElement();
830        case 100571:  return getEndElement();
831        case 841294093:  return addParticipantType(); 
832        case 92645877:  return getActor();
833        case 996096261:  return getParticipantStatusElement();
834        case 950398559:  return getCommentElement();
835        case 1165749981:  return getRecurringElement();
836        case 1721761055:  return getOccurrenceDateElement();
837        case -362407829:  return getRecurrenceIdElement();
838        default: return super.makeProperty(hash, name);
839        }
840
841      }
842
843      @Override
844      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
845        switch (hash) {
846        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
847        case -1474995297: /*appointment*/ return new String[] {"Reference"};
848        case -577024441: /*proposedNewTime*/ return new String[] {"boolean"};
849        case 109757538: /*start*/ return new String[] {"instant"};
850        case 100571: /*end*/ return new String[] {"instant"};
851        case 841294093: /*participantType*/ return new String[] {"CodeableConcept"};
852        case 92645877: /*actor*/ return new String[] {"Reference"};
853        case 996096261: /*participantStatus*/ return new String[] {"code"};
854        case 950398559: /*comment*/ return new String[] {"string"};
855        case 1165749981: /*recurring*/ return new String[] {"boolean"};
856        case 1721761055: /*occurrenceDate*/ return new String[] {"date"};
857        case -362407829: /*recurrenceId*/ return new String[] {"positiveInt"};
858        default: return super.getTypesForProperty(hash, name);
859        }
860
861      }
862
863      @Override
864      public Base addChild(String name) throws FHIRException {
865        if (name.equals("identifier")) {
866          return addIdentifier();
867        }
868        else if (name.equals("appointment")) {
869          this.appointment = new Reference();
870          return this.appointment;
871        }
872        else if (name.equals("proposedNewTime")) {
873          throw new FHIRException("Cannot call addChild on a primitive type AppointmentResponse.proposedNewTime");
874        }
875        else if (name.equals("start")) {
876          throw new FHIRException("Cannot call addChild on a primitive type AppointmentResponse.start");
877        }
878        else if (name.equals("end")) {
879          throw new FHIRException("Cannot call addChild on a primitive type AppointmentResponse.end");
880        }
881        else if (name.equals("participantType")) {
882          return addParticipantType();
883        }
884        else if (name.equals("actor")) {
885          this.actor = new Reference();
886          return this.actor;
887        }
888        else if (name.equals("participantStatus")) {
889          throw new FHIRException("Cannot call addChild on a primitive type AppointmentResponse.participantStatus");
890        }
891        else if (name.equals("comment")) {
892          throw new FHIRException("Cannot call addChild on a primitive type AppointmentResponse.comment");
893        }
894        else if (name.equals("recurring")) {
895          throw new FHIRException("Cannot call addChild on a primitive type AppointmentResponse.recurring");
896        }
897        else if (name.equals("occurrenceDate")) {
898          throw new FHIRException("Cannot call addChild on a primitive type AppointmentResponse.occurrenceDate");
899        }
900        else if (name.equals("recurrenceId")) {
901          throw new FHIRException("Cannot call addChild on a primitive type AppointmentResponse.recurrenceId");
902        }
903        else
904          return super.addChild(name);
905      }
906
907  public String fhirType() {
908    return "AppointmentResponse";
909
910  }
911
912      public AppointmentResponse copy() {
913        AppointmentResponse dst = new AppointmentResponse();
914        copyValues(dst);
915        return dst;
916      }
917
918      public void copyValues(AppointmentResponse dst) {
919        super.copyValues(dst);
920        if (identifier != null) {
921          dst.identifier = new ArrayList<Identifier>();
922          for (Identifier i : identifier)
923            dst.identifier.add(i.copy());
924        };
925        dst.appointment = appointment == null ? null : appointment.copy();
926        dst.proposedNewTime = proposedNewTime == null ? null : proposedNewTime.copy();
927        dst.start = start == null ? null : start.copy();
928        dst.end = end == null ? null : end.copy();
929        if (participantType != null) {
930          dst.participantType = new ArrayList<CodeableConcept>();
931          for (CodeableConcept i : participantType)
932            dst.participantType.add(i.copy());
933        };
934        dst.actor = actor == null ? null : actor.copy();
935        dst.participantStatus = participantStatus == null ? null : participantStatus.copy();
936        dst.comment = comment == null ? null : comment.copy();
937        dst.recurring = recurring == null ? null : recurring.copy();
938        dst.occurrenceDate = occurrenceDate == null ? null : occurrenceDate.copy();
939        dst.recurrenceId = recurrenceId == null ? null : recurrenceId.copy();
940      }
941
942      protected AppointmentResponse typedCopy() {
943        return copy();
944      }
945
946      @Override
947      public boolean equalsDeep(Base other_) {
948        if (!super.equalsDeep(other_))
949          return false;
950        if (!(other_ instanceof AppointmentResponse))
951          return false;
952        AppointmentResponse o = (AppointmentResponse) other_;
953        return compareDeep(identifier, o.identifier, true) && compareDeep(appointment, o.appointment, true)
954           && compareDeep(proposedNewTime, o.proposedNewTime, true) && compareDeep(start, o.start, true) && compareDeep(end, o.end, true)
955           && compareDeep(participantType, o.participantType, true) && compareDeep(actor, o.actor, true) && compareDeep(participantStatus, o.participantStatus, true)
956           && compareDeep(comment, o.comment, true) && compareDeep(recurring, o.recurring, true) && compareDeep(occurrenceDate, o.occurrenceDate, true)
957           && compareDeep(recurrenceId, o.recurrenceId, true);
958      }
959
960      @Override
961      public boolean equalsShallow(Base other_) {
962        if (!super.equalsShallow(other_))
963          return false;
964        if (!(other_ instanceof AppointmentResponse))
965          return false;
966        AppointmentResponse o = (AppointmentResponse) other_;
967        return compareValues(proposedNewTime, o.proposedNewTime, true) && compareValues(start, o.start, true)
968           && compareValues(end, o.end, true) && compareValues(participantStatus, o.participantStatus, true) && compareValues(comment, o.comment, true)
969           && compareValues(recurring, o.recurring, true) && compareValues(occurrenceDate, o.occurrenceDate, true)
970           && compareValues(recurrenceId, o.recurrenceId, true);
971      }
972
973      public boolean isEmpty() {
974        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, appointment, proposedNewTime
975          , start, end, participantType, actor, participantStatus, comment, recurring, occurrenceDate
976          , recurrenceId);
977      }
978
979  @Override
980  public ResourceType getResourceType() {
981    return ResourceType.AppointmentResponse;
982   }
983
984 /**
985   * Search parameter: <b>actor</b>
986   * <p>
987   * Description: <b>The Person, Location/HealthcareService or Device that this appointment response replies for</b><br>
988   * Type: <b>reference</b><br>
989   * Path: <b>AppointmentResponse.actor</b><br>
990   * </p>
991   */
992  @SearchParamDefinition(name="actor", path="AppointmentResponse.actor", description="The Person, Location/HealthcareService or Device that this appointment response replies for", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for RelatedPerson") }, target={Device.class, Group.class, HealthcareService.class, Location.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
993  public static final String SP_ACTOR = "actor";
994 /**
995   * <b>Fluent Client</b> search parameter constant for <b>actor</b>
996   * <p>
997   * Description: <b>The Person, Location/HealthcareService or Device that this appointment response replies for</b><br>
998   * Type: <b>reference</b><br>
999   * Path: <b>AppointmentResponse.actor</b><br>
1000   * </p>
1001   */
1002  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ACTOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ACTOR);
1003
1004/**
1005   * Constant for fluent queries to be used to add include statements. Specifies
1006   * the path value of "<b>AppointmentResponse:actor</b>".
1007   */
1008  public static final ca.uhn.fhir.model.api.Include INCLUDE_ACTOR = new ca.uhn.fhir.model.api.Include("AppointmentResponse:actor").toLocked();
1009
1010 /**
1011   * Search parameter: <b>appointment</b>
1012   * <p>
1013   * Description: <b>The appointment that the response is attached to</b><br>
1014   * Type: <b>reference</b><br>
1015   * Path: <b>AppointmentResponse.appointment</b><br>
1016   * </p>
1017   */
1018  @SearchParamDefinition(name="appointment", path="AppointmentResponse.appointment", description="The appointment that the response is attached to", type="reference", target={Appointment.class } )
1019  public static final String SP_APPOINTMENT = "appointment";
1020 /**
1021   * <b>Fluent Client</b> search parameter constant for <b>appointment</b>
1022   * <p>
1023   * Description: <b>The appointment that the response is attached to</b><br>
1024   * Type: <b>reference</b><br>
1025   * Path: <b>AppointmentResponse.appointment</b><br>
1026   * </p>
1027   */
1028  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam APPOINTMENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_APPOINTMENT);
1029
1030/**
1031   * Constant for fluent queries to be used to add include statements. Specifies
1032   * the path value of "<b>AppointmentResponse:appointment</b>".
1033   */
1034  public static final ca.uhn.fhir.model.api.Include INCLUDE_APPOINTMENT = new ca.uhn.fhir.model.api.Include("AppointmentResponse:appointment").toLocked();
1035
1036 /**
1037   * Search parameter: <b>group</b>
1038   * <p>
1039   * Description: <b>This Response is for this Group</b><br>
1040   * Type: <b>reference</b><br>
1041   * Path: <b>AppointmentResponse.actor.where(resolve() is Group)</b><br>
1042   * </p>
1043   */
1044  @SearchParamDefinition(name="group", path="AppointmentResponse.actor.where(resolve() is Group)", description="This Response is for this Group", type="reference", target={Group.class } )
1045  public static final String SP_GROUP = "group";
1046 /**
1047   * <b>Fluent Client</b> search parameter constant for <b>group</b>
1048   * <p>
1049   * Description: <b>This Response is for this Group</b><br>
1050   * Type: <b>reference</b><br>
1051   * Path: <b>AppointmentResponse.actor.where(resolve() is Group)</b><br>
1052   * </p>
1053   */
1054  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam GROUP = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_GROUP);
1055
1056/**
1057   * Constant for fluent queries to be used to add include statements. Specifies
1058   * the path value of "<b>AppointmentResponse:group</b>".
1059   */
1060  public static final ca.uhn.fhir.model.api.Include INCLUDE_GROUP = new ca.uhn.fhir.model.api.Include("AppointmentResponse:group").toLocked();
1061
1062 /**
1063   * Search parameter: <b>identifier</b>
1064   * <p>
1065   * Description: <b>An Identifier in this appointment response</b><br>
1066   * Type: <b>token</b><br>
1067   * Path: <b>AppointmentResponse.identifier</b><br>
1068   * </p>
1069   */
1070  @SearchParamDefinition(name="identifier", path="AppointmentResponse.identifier", description="An Identifier in this appointment response", type="token" )
1071  public static final String SP_IDENTIFIER = "identifier";
1072 /**
1073   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1074   * <p>
1075   * Description: <b>An Identifier in this appointment response</b><br>
1076   * Type: <b>token</b><br>
1077   * Path: <b>AppointmentResponse.identifier</b><br>
1078   * </p>
1079   */
1080  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1081
1082 /**
1083   * Search parameter: <b>location</b>
1084   * <p>
1085   * Description: <b>This Response is for this Location</b><br>
1086   * Type: <b>reference</b><br>
1087   * Path: <b>AppointmentResponse.actor.where(resolve() is Location)</b><br>
1088   * </p>
1089   */
1090  @SearchParamDefinition(name="location", path="AppointmentResponse.actor.where(resolve() is Location)", description="This Response is for this Location", type="reference", target={Location.class } )
1091  public static final String SP_LOCATION = "location";
1092 /**
1093   * <b>Fluent Client</b> search parameter constant for <b>location</b>
1094   * <p>
1095   * Description: <b>This Response is for this Location</b><br>
1096   * Type: <b>reference</b><br>
1097   * Path: <b>AppointmentResponse.actor.where(resolve() is Location)</b><br>
1098   * </p>
1099   */
1100  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam LOCATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_LOCATION);
1101
1102/**
1103   * Constant for fluent queries to be used to add include statements. Specifies
1104   * the path value of "<b>AppointmentResponse:location</b>".
1105   */
1106  public static final ca.uhn.fhir.model.api.Include INCLUDE_LOCATION = new ca.uhn.fhir.model.api.Include("AppointmentResponse:location").toLocked();
1107
1108 /**
1109   * Search parameter: <b>part-status</b>
1110   * <p>
1111   * Description: <b>The participants acceptance status for this appointment</b><br>
1112   * Type: <b>token</b><br>
1113   * Path: <b>AppointmentResponse.participantStatus</b><br>
1114   * </p>
1115   */
1116  @SearchParamDefinition(name="part-status", path="AppointmentResponse.participantStatus", description="The participants acceptance status for this appointment", type="token" )
1117  public static final String SP_PART_STATUS = "part-status";
1118 /**
1119   * <b>Fluent Client</b> search parameter constant for <b>part-status</b>
1120   * <p>
1121   * Description: <b>The participants acceptance status for this appointment</b><br>
1122   * Type: <b>token</b><br>
1123   * Path: <b>AppointmentResponse.participantStatus</b><br>
1124   * </p>
1125   */
1126  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PART_STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PART_STATUS);
1127
1128 /**
1129   * Search parameter: <b>patient</b>
1130   * <p>
1131   * Description: <b>This Response is for this Patient</b><br>
1132   * Type: <b>reference</b><br>
1133   * Path: <b>AppointmentResponse.actor.where(resolve() is Patient)</b><br>
1134   * </p>
1135   */
1136  @SearchParamDefinition(name="patient", path="AppointmentResponse.actor.where(resolve() is Patient)", description="This Response is for this Patient", type="reference", target={Patient.class } )
1137  public static final String SP_PATIENT = "patient";
1138 /**
1139   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1140   * <p>
1141   * Description: <b>This Response is for this Patient</b><br>
1142   * Type: <b>reference</b><br>
1143   * Path: <b>AppointmentResponse.actor.where(resolve() is Patient)</b><br>
1144   * </p>
1145   */
1146  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1147
1148/**
1149   * Constant for fluent queries to be used to add include statements. Specifies
1150   * the path value of "<b>AppointmentResponse:patient</b>".
1151   */
1152  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("AppointmentResponse:patient").toLocked();
1153
1154 /**
1155   * Search parameter: <b>practitioner</b>
1156   * <p>
1157   * Description: <b>This Response is for this Practitioner</b><br>
1158   * Type: <b>reference</b><br>
1159   * Path: <b>AppointmentResponse.actor.where(resolve() is Practitioner)</b><br>
1160   * </p>
1161   */
1162  @SearchParamDefinition(name="practitioner", path="AppointmentResponse.actor.where(resolve() is Practitioner)", description="This Response is for this Practitioner", type="reference", target={Practitioner.class } )
1163  public static final String SP_PRACTITIONER = "practitioner";
1164 /**
1165   * <b>Fluent Client</b> search parameter constant for <b>practitioner</b>
1166   * <p>
1167   * Description: <b>This Response is for this Practitioner</b><br>
1168   * Type: <b>reference</b><br>
1169   * Path: <b>AppointmentResponse.actor.where(resolve() is Practitioner)</b><br>
1170   * </p>
1171   */
1172  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PRACTITIONER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PRACTITIONER);
1173
1174/**
1175   * Constant for fluent queries to be used to add include statements. Specifies
1176   * the path value of "<b>AppointmentResponse:practitioner</b>".
1177   */
1178  public static final ca.uhn.fhir.model.api.Include INCLUDE_PRACTITIONER = new ca.uhn.fhir.model.api.Include("AppointmentResponse:practitioner").toLocked();
1179
1180
1181}
1182