001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Fri, Jul 15, 2022 11:20+1000 for FHIR v5.0.0-snapshot2
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * A slot of time on a schedule that may be available for booking appointments.
052 */
053@ResourceDef(name="Slot", profile="http://hl7.org/fhir/StructureDefinition/Slot")
054public class Slot extends DomainResource {
055
056    public enum SlotStatus {
057        /**
058         * Indicates that the time interval is busy because one  or more events have been scheduled for that interval.
059         */
060        BUSY, 
061        /**
062         * Indicates that the time interval is free for scheduling.
063         */
064        FREE, 
065        /**
066         * Indicates that the time interval is busy and that the interval cannot be scheduled.
067         */
068        BUSYUNAVAILABLE, 
069        /**
070         * Indicates that the time interval is busy because one or more events have been tentatively scheduled for that interval.
071         */
072        BUSYTENTATIVE, 
073        /**
074         * This instance should not have been part of this patient's medical record.
075         */
076        ENTEREDINERROR, 
077        /**
078         * added to help the parsers with the generic types
079         */
080        NULL;
081        public static SlotStatus fromCode(String codeString) throws FHIRException {
082            if (codeString == null || "".equals(codeString))
083                return null;
084        if ("busy".equals(codeString))
085          return BUSY;
086        if ("free".equals(codeString))
087          return FREE;
088        if ("busy-unavailable".equals(codeString))
089          return BUSYUNAVAILABLE;
090        if ("busy-tentative".equals(codeString))
091          return BUSYTENTATIVE;
092        if ("entered-in-error".equals(codeString))
093          return ENTEREDINERROR;
094        if (Configuration.isAcceptInvalidEnums())
095          return null;
096        else
097          throw new FHIRException("Unknown SlotStatus code '"+codeString+"'");
098        }
099        public String toCode() {
100          switch (this) {
101            case BUSY: return "busy";
102            case FREE: return "free";
103            case BUSYUNAVAILABLE: return "busy-unavailable";
104            case BUSYTENTATIVE: return "busy-tentative";
105            case ENTEREDINERROR: return "entered-in-error";
106            case NULL: return null;
107            default: return "?";
108          }
109        }
110        public String getSystem() {
111          switch (this) {
112            case BUSY: return "http://hl7.org/fhir/slotstatus";
113            case FREE: return "http://hl7.org/fhir/slotstatus";
114            case BUSYUNAVAILABLE: return "http://hl7.org/fhir/slotstatus";
115            case BUSYTENTATIVE: return "http://hl7.org/fhir/slotstatus";
116            case ENTEREDINERROR: return "http://hl7.org/fhir/slotstatus";
117            case NULL: return null;
118            default: return "?";
119          }
120        }
121        public String getDefinition() {
122          switch (this) {
123            case BUSY: return "Indicates that the time interval is busy because one  or more events have been scheduled for that interval.";
124            case FREE: return "Indicates that the time interval is free for scheduling.";
125            case BUSYUNAVAILABLE: return "Indicates that the time interval is busy and that the interval cannot be scheduled.";
126            case BUSYTENTATIVE: return "Indicates that the time interval is busy because one or more events have been tentatively scheduled for that interval.";
127            case ENTEREDINERROR: return "This instance should not have been part of this patient's medical record.";
128            case NULL: return null;
129            default: return "?";
130          }
131        }
132        public String getDisplay() {
133          switch (this) {
134            case BUSY: return "Busy";
135            case FREE: return "Free";
136            case BUSYUNAVAILABLE: return "Busy (Unavailable)";
137            case BUSYTENTATIVE: return "Busy (Tentative)";
138            case ENTEREDINERROR: return "Entered in error";
139            case NULL: return null;
140            default: return "?";
141          }
142        }
143    }
144
145  public static class SlotStatusEnumFactory implements EnumFactory<SlotStatus> {
146    public SlotStatus fromCode(String codeString) throws IllegalArgumentException {
147      if (codeString == null || "".equals(codeString))
148            if (codeString == null || "".equals(codeString))
149                return null;
150        if ("busy".equals(codeString))
151          return SlotStatus.BUSY;
152        if ("free".equals(codeString))
153          return SlotStatus.FREE;
154        if ("busy-unavailable".equals(codeString))
155          return SlotStatus.BUSYUNAVAILABLE;
156        if ("busy-tentative".equals(codeString))
157          return SlotStatus.BUSYTENTATIVE;
158        if ("entered-in-error".equals(codeString))
159          return SlotStatus.ENTEREDINERROR;
160        throw new IllegalArgumentException("Unknown SlotStatus code '"+codeString+"'");
161        }
162        public Enumeration<SlotStatus> fromType(Base code) throws FHIRException {
163          if (code == null)
164            return null;
165          if (code.isEmpty())
166            return new Enumeration<SlotStatus>(this);
167          String codeString = ((PrimitiveType) code).asStringValue();
168          if (codeString == null || "".equals(codeString))
169            return null;
170        if ("busy".equals(codeString))
171          return new Enumeration<SlotStatus>(this, SlotStatus.BUSY);
172        if ("free".equals(codeString))
173          return new Enumeration<SlotStatus>(this, SlotStatus.FREE);
174        if ("busy-unavailable".equals(codeString))
175          return new Enumeration<SlotStatus>(this, SlotStatus.BUSYUNAVAILABLE);
176        if ("busy-tentative".equals(codeString))
177          return new Enumeration<SlotStatus>(this, SlotStatus.BUSYTENTATIVE);
178        if ("entered-in-error".equals(codeString))
179          return new Enumeration<SlotStatus>(this, SlotStatus.ENTEREDINERROR);
180        throw new FHIRException("Unknown SlotStatus code '"+codeString+"'");
181        }
182    public String toCode(SlotStatus code) {
183      if (code == SlotStatus.BUSY)
184        return "busy";
185      if (code == SlotStatus.FREE)
186        return "free";
187      if (code == SlotStatus.BUSYUNAVAILABLE)
188        return "busy-unavailable";
189      if (code == SlotStatus.BUSYTENTATIVE)
190        return "busy-tentative";
191      if (code == SlotStatus.ENTEREDINERROR)
192        return "entered-in-error";
193      return "?";
194      }
195    public String toSystem(SlotStatus code) {
196      return code.getSystem();
197      }
198    }
199
200    /**
201     * External Ids for this item.
202     */
203    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
204    @Description(shortDefinition="External Ids for this item", formalDefinition="External Ids for this item." )
205    protected List<Identifier> identifier;
206
207    /**
208     * A broad categorization of the service that is to be performed during this appointment.
209     */
210    @Child(name = "serviceCategory", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
211    @Description(shortDefinition="A broad categorization of the service that is to be performed during this appointment", formalDefinition="A broad categorization of the service that is to be performed during this appointment." )
212    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/service-category")
213    protected List<CodeableConcept> serviceCategory;
214
215    /**
216     * The type of appointments that can be booked into this slot (ideally this would be an identifiable service - which is at a location, rather than the location itself). If provided then this overrides the value provided on the Schedule resource.
217     */
218    @Child(name = "serviceType", type = {CodeableReference.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
219    @Description(shortDefinition="The type of appointments that can be booked into this slot (ideally this would be an identifiable service - which is at a location, rather than the location itself). If provided then this overrides the value provided on the Schedule resource", formalDefinition="The type of appointments that can be booked into this slot (ideally this would be an identifiable service - which is at a location, rather than the location itself). If provided then this overrides the value provided on the Schedule resource." )
220    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/service-type")
221    protected List<CodeableReference> serviceType;
222
223    /**
224     * The specialty of a practitioner that would be required to perform the service requested in this appointment.
225     */
226    @Child(name = "specialty", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
227    @Description(shortDefinition="The specialty of a practitioner that would be required to perform the service requested in this appointment", formalDefinition="The specialty of a practitioner that would be required to perform the service requested in this appointment." )
228    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/c80-practice-codes")
229    protected List<CodeableConcept> specialty;
230
231    /**
232     * The style of appointment or patient that may be booked in the slot (not service type).
233     */
234    @Child(name = "appointmentType", type = {CodeableConcept.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
235    @Description(shortDefinition="The style of appointment or patient that may be booked in the slot (not service type)", formalDefinition="The style of appointment or patient that may be booked in the slot (not service type)." )
236    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/v2-0276")
237    protected List<CodeableConcept> appointmentType;
238
239    /**
240     * The schedule resource that this slot defines an interval of status information.
241     */
242    @Child(name = "schedule", type = {Schedule.class}, order=5, min=1, max=1, modifier=false, summary=true)
243    @Description(shortDefinition="The schedule resource that this slot defines an interval of status information", formalDefinition="The schedule resource that this slot defines an interval of status information." )
244    protected Reference schedule;
245
246    /**
247     * busy | free | busy-unavailable | busy-tentative | entered-in-error.
248     */
249    @Child(name = "status", type = {CodeType.class}, order=6, min=1, max=1, modifier=false, summary=true)
250    @Description(shortDefinition="busy | free | busy-unavailable | busy-tentative | entered-in-error", formalDefinition="busy | free | busy-unavailable | busy-tentative | entered-in-error." )
251    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/slotstatus")
252    protected Enumeration<SlotStatus> status;
253
254    /**
255     * Date/Time that the slot is to begin.
256     */
257    @Child(name = "start", type = {InstantType.class}, order=7, min=1, max=1, modifier=false, summary=true)
258    @Description(shortDefinition="Date/Time that the slot is to begin", formalDefinition="Date/Time that the slot is to begin." )
259    protected InstantType start;
260
261    /**
262     * Date/Time that the slot is to conclude.
263     */
264    @Child(name = "end", type = {InstantType.class}, order=8, min=1, max=1, modifier=false, summary=true)
265    @Description(shortDefinition="Date/Time that the slot is to conclude", formalDefinition="Date/Time that the slot is to conclude." )
266    protected InstantType end;
267
268    /**
269     * This slot has already been overbooked, appointments are unlikely to be accepted for this time.
270     */
271    @Child(name = "overbooked", type = {BooleanType.class}, order=9, min=0, max=1, modifier=false, summary=false)
272    @Description(shortDefinition="This slot has already been overbooked, appointments are unlikely to be accepted for this time", formalDefinition="This slot has already been overbooked, appointments are unlikely to be accepted for this time." )
273    protected BooleanType overbooked;
274
275    /**
276     * Comments on the slot to describe any extended information. Such as custom constraints on the slot.
277     */
278    @Child(name = "comment", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=false)
279    @Description(shortDefinition="Comments on the slot to describe any extended information. Such as custom constraints on the slot", formalDefinition="Comments on the slot to describe any extended information. Such as custom constraints on the slot." )
280    protected StringType comment;
281
282    private static final long serialVersionUID = 2060370370L;
283
284  /**
285   * Constructor
286   */
287    public Slot() {
288      super();
289    }
290
291  /**
292   * Constructor
293   */
294    public Slot(Reference schedule, SlotStatus status, Date start, Date end) {
295      super();
296      this.setSchedule(schedule);
297      this.setStatus(status);
298      this.setStart(start);
299      this.setEnd(end);
300    }
301
302    /**
303     * @return {@link #identifier} (External Ids for this item.)
304     */
305    public List<Identifier> getIdentifier() { 
306      if (this.identifier == null)
307        this.identifier = new ArrayList<Identifier>();
308      return this.identifier;
309    }
310
311    /**
312     * @return Returns a reference to <code>this</code> for easy method chaining
313     */
314    public Slot setIdentifier(List<Identifier> theIdentifier) { 
315      this.identifier = theIdentifier;
316      return this;
317    }
318
319    public boolean hasIdentifier() { 
320      if (this.identifier == null)
321        return false;
322      for (Identifier item : this.identifier)
323        if (!item.isEmpty())
324          return true;
325      return false;
326    }
327
328    public Identifier addIdentifier() { //3
329      Identifier t = new Identifier();
330      if (this.identifier == null)
331        this.identifier = new ArrayList<Identifier>();
332      this.identifier.add(t);
333      return t;
334    }
335
336    public Slot addIdentifier(Identifier t) { //3
337      if (t == null)
338        return this;
339      if (this.identifier == null)
340        this.identifier = new ArrayList<Identifier>();
341      this.identifier.add(t);
342      return this;
343    }
344
345    /**
346     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
347     */
348    public Identifier getIdentifierFirstRep() { 
349      if (getIdentifier().isEmpty()) {
350        addIdentifier();
351      }
352      return getIdentifier().get(0);
353    }
354
355    /**
356     * @return {@link #serviceCategory} (A broad categorization of the service that is to be performed during this appointment.)
357     */
358    public List<CodeableConcept> getServiceCategory() { 
359      if (this.serviceCategory == null)
360        this.serviceCategory = new ArrayList<CodeableConcept>();
361      return this.serviceCategory;
362    }
363
364    /**
365     * @return Returns a reference to <code>this</code> for easy method chaining
366     */
367    public Slot setServiceCategory(List<CodeableConcept> theServiceCategory) { 
368      this.serviceCategory = theServiceCategory;
369      return this;
370    }
371
372    public boolean hasServiceCategory() { 
373      if (this.serviceCategory == null)
374        return false;
375      for (CodeableConcept item : this.serviceCategory)
376        if (!item.isEmpty())
377          return true;
378      return false;
379    }
380
381    public CodeableConcept addServiceCategory() { //3
382      CodeableConcept t = new CodeableConcept();
383      if (this.serviceCategory == null)
384        this.serviceCategory = new ArrayList<CodeableConcept>();
385      this.serviceCategory.add(t);
386      return t;
387    }
388
389    public Slot addServiceCategory(CodeableConcept t) { //3
390      if (t == null)
391        return this;
392      if (this.serviceCategory == null)
393        this.serviceCategory = new ArrayList<CodeableConcept>();
394      this.serviceCategory.add(t);
395      return this;
396    }
397
398    /**
399     * @return The first repetition of repeating field {@link #serviceCategory}, creating it if it does not already exist {3}
400     */
401    public CodeableConcept getServiceCategoryFirstRep() { 
402      if (getServiceCategory().isEmpty()) {
403        addServiceCategory();
404      }
405      return getServiceCategory().get(0);
406    }
407
408    /**
409     * @return {@link #serviceType} (The type of appointments that can be booked into this slot (ideally this would be an identifiable service - which is at a location, rather than the location itself). If provided then this overrides the value provided on the Schedule resource.)
410     */
411    public List<CodeableReference> getServiceType() { 
412      if (this.serviceType == null)
413        this.serviceType = new ArrayList<CodeableReference>();
414      return this.serviceType;
415    }
416
417    /**
418     * @return Returns a reference to <code>this</code> for easy method chaining
419     */
420    public Slot setServiceType(List<CodeableReference> theServiceType) { 
421      this.serviceType = theServiceType;
422      return this;
423    }
424
425    public boolean hasServiceType() { 
426      if (this.serviceType == null)
427        return false;
428      for (CodeableReference item : this.serviceType)
429        if (!item.isEmpty())
430          return true;
431      return false;
432    }
433
434    public CodeableReference addServiceType() { //3
435      CodeableReference t = new CodeableReference();
436      if (this.serviceType == null)
437        this.serviceType = new ArrayList<CodeableReference>();
438      this.serviceType.add(t);
439      return t;
440    }
441
442    public Slot addServiceType(CodeableReference t) { //3
443      if (t == null)
444        return this;
445      if (this.serviceType == null)
446        this.serviceType = new ArrayList<CodeableReference>();
447      this.serviceType.add(t);
448      return this;
449    }
450
451    /**
452     * @return The first repetition of repeating field {@link #serviceType}, creating it if it does not already exist {3}
453     */
454    public CodeableReference getServiceTypeFirstRep() { 
455      if (getServiceType().isEmpty()) {
456        addServiceType();
457      }
458      return getServiceType().get(0);
459    }
460
461    /**
462     * @return {@link #specialty} (The specialty of a practitioner that would be required to perform the service requested in this appointment.)
463     */
464    public List<CodeableConcept> getSpecialty() { 
465      if (this.specialty == null)
466        this.specialty = new ArrayList<CodeableConcept>();
467      return this.specialty;
468    }
469
470    /**
471     * @return Returns a reference to <code>this</code> for easy method chaining
472     */
473    public Slot setSpecialty(List<CodeableConcept> theSpecialty) { 
474      this.specialty = theSpecialty;
475      return this;
476    }
477
478    public boolean hasSpecialty() { 
479      if (this.specialty == null)
480        return false;
481      for (CodeableConcept item : this.specialty)
482        if (!item.isEmpty())
483          return true;
484      return false;
485    }
486
487    public CodeableConcept addSpecialty() { //3
488      CodeableConcept t = new CodeableConcept();
489      if (this.specialty == null)
490        this.specialty = new ArrayList<CodeableConcept>();
491      this.specialty.add(t);
492      return t;
493    }
494
495    public Slot addSpecialty(CodeableConcept t) { //3
496      if (t == null)
497        return this;
498      if (this.specialty == null)
499        this.specialty = new ArrayList<CodeableConcept>();
500      this.specialty.add(t);
501      return this;
502    }
503
504    /**
505     * @return The first repetition of repeating field {@link #specialty}, creating it if it does not already exist {3}
506     */
507    public CodeableConcept getSpecialtyFirstRep() { 
508      if (getSpecialty().isEmpty()) {
509        addSpecialty();
510      }
511      return getSpecialty().get(0);
512    }
513
514    /**
515     * @return {@link #appointmentType} (The style of appointment or patient that may be booked in the slot (not service type).)
516     */
517    public List<CodeableConcept> getAppointmentType() { 
518      if (this.appointmentType == null)
519        this.appointmentType = new ArrayList<CodeableConcept>();
520      return this.appointmentType;
521    }
522
523    /**
524     * @return Returns a reference to <code>this</code> for easy method chaining
525     */
526    public Slot setAppointmentType(List<CodeableConcept> theAppointmentType) { 
527      this.appointmentType = theAppointmentType;
528      return this;
529    }
530
531    public boolean hasAppointmentType() { 
532      if (this.appointmentType == null)
533        return false;
534      for (CodeableConcept item : this.appointmentType)
535        if (!item.isEmpty())
536          return true;
537      return false;
538    }
539
540    public CodeableConcept addAppointmentType() { //3
541      CodeableConcept t = new CodeableConcept();
542      if (this.appointmentType == null)
543        this.appointmentType = new ArrayList<CodeableConcept>();
544      this.appointmentType.add(t);
545      return t;
546    }
547
548    public Slot addAppointmentType(CodeableConcept t) { //3
549      if (t == null)
550        return this;
551      if (this.appointmentType == null)
552        this.appointmentType = new ArrayList<CodeableConcept>();
553      this.appointmentType.add(t);
554      return this;
555    }
556
557    /**
558     * @return The first repetition of repeating field {@link #appointmentType}, creating it if it does not already exist {3}
559     */
560    public CodeableConcept getAppointmentTypeFirstRep() { 
561      if (getAppointmentType().isEmpty()) {
562        addAppointmentType();
563      }
564      return getAppointmentType().get(0);
565    }
566
567    /**
568     * @return {@link #schedule} (The schedule resource that this slot defines an interval of status information.)
569     */
570    public Reference getSchedule() { 
571      if (this.schedule == null)
572        if (Configuration.errorOnAutoCreate())
573          throw new Error("Attempt to auto-create Slot.schedule");
574        else if (Configuration.doAutoCreate())
575          this.schedule = new Reference(); // cc
576      return this.schedule;
577    }
578
579    public boolean hasSchedule() { 
580      return this.schedule != null && !this.schedule.isEmpty();
581    }
582
583    /**
584     * @param value {@link #schedule} (The schedule resource that this slot defines an interval of status information.)
585     */
586    public Slot setSchedule(Reference value) { 
587      this.schedule = value;
588      return this;
589    }
590
591    /**
592     * @return {@link #status} (busy | free | busy-unavailable | busy-tentative | entered-in-error.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
593     */
594    public Enumeration<SlotStatus> getStatusElement() { 
595      if (this.status == null)
596        if (Configuration.errorOnAutoCreate())
597          throw new Error("Attempt to auto-create Slot.status");
598        else if (Configuration.doAutoCreate())
599          this.status = new Enumeration<SlotStatus>(new SlotStatusEnumFactory()); // bb
600      return this.status;
601    }
602
603    public boolean hasStatusElement() { 
604      return this.status != null && !this.status.isEmpty();
605    }
606
607    public boolean hasStatus() { 
608      return this.status != null && !this.status.isEmpty();
609    }
610
611    /**
612     * @param value {@link #status} (busy | free | busy-unavailable | busy-tentative | entered-in-error.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
613     */
614    public Slot setStatusElement(Enumeration<SlotStatus> value) { 
615      this.status = value;
616      return this;
617    }
618
619    /**
620     * @return busy | free | busy-unavailable | busy-tentative | entered-in-error.
621     */
622    public SlotStatus getStatus() { 
623      return this.status == null ? null : this.status.getValue();
624    }
625
626    /**
627     * @param value busy | free | busy-unavailable | busy-tentative | entered-in-error.
628     */
629    public Slot setStatus(SlotStatus value) { 
630        if (this.status == null)
631          this.status = new Enumeration<SlotStatus>(new SlotStatusEnumFactory());
632        this.status.setValue(value);
633      return this;
634    }
635
636    /**
637     * @return {@link #start} (Date/Time that the slot is to begin.). This is the underlying object with id, value and extensions. The accessor "getStart" gives direct access to the value
638     */
639    public InstantType getStartElement() { 
640      if (this.start == null)
641        if (Configuration.errorOnAutoCreate())
642          throw new Error("Attempt to auto-create Slot.start");
643        else if (Configuration.doAutoCreate())
644          this.start = new InstantType(); // bb
645      return this.start;
646    }
647
648    public boolean hasStartElement() { 
649      return this.start != null && !this.start.isEmpty();
650    }
651
652    public boolean hasStart() { 
653      return this.start != null && !this.start.isEmpty();
654    }
655
656    /**
657     * @param value {@link #start} (Date/Time that the slot is to begin.). This is the underlying object with id, value and extensions. The accessor "getStart" gives direct access to the value
658     */
659    public Slot setStartElement(InstantType value) { 
660      this.start = value;
661      return this;
662    }
663
664    /**
665     * @return Date/Time that the slot is to begin.
666     */
667    public Date getStart() { 
668      return this.start == null ? null : this.start.getValue();
669    }
670
671    /**
672     * @param value Date/Time that the slot is to begin.
673     */
674    public Slot setStart(Date value) { 
675        if (this.start == null)
676          this.start = new InstantType();
677        this.start.setValue(value);
678      return this;
679    }
680
681    /**
682     * @return {@link #end} (Date/Time that the slot is to conclude.). This is the underlying object with id, value and extensions. The accessor "getEnd" gives direct access to the value
683     */
684    public InstantType getEndElement() { 
685      if (this.end == null)
686        if (Configuration.errorOnAutoCreate())
687          throw new Error("Attempt to auto-create Slot.end");
688        else if (Configuration.doAutoCreate())
689          this.end = new InstantType(); // bb
690      return this.end;
691    }
692
693    public boolean hasEndElement() { 
694      return this.end != null && !this.end.isEmpty();
695    }
696
697    public boolean hasEnd() { 
698      return this.end != null && !this.end.isEmpty();
699    }
700
701    /**
702     * @param value {@link #end} (Date/Time that the slot is to conclude.). This is the underlying object with id, value and extensions. The accessor "getEnd" gives direct access to the value
703     */
704    public Slot setEndElement(InstantType value) { 
705      this.end = value;
706      return this;
707    }
708
709    /**
710     * @return Date/Time that the slot is to conclude.
711     */
712    public Date getEnd() { 
713      return this.end == null ? null : this.end.getValue();
714    }
715
716    /**
717     * @param value Date/Time that the slot is to conclude.
718     */
719    public Slot setEnd(Date value) { 
720        if (this.end == null)
721          this.end = new InstantType();
722        this.end.setValue(value);
723      return this;
724    }
725
726    /**
727     * @return {@link #overbooked} (This slot has already been overbooked, appointments are unlikely to be accepted for this time.). This is the underlying object with id, value and extensions. The accessor "getOverbooked" gives direct access to the value
728     */
729    public BooleanType getOverbookedElement() { 
730      if (this.overbooked == null)
731        if (Configuration.errorOnAutoCreate())
732          throw new Error("Attempt to auto-create Slot.overbooked");
733        else if (Configuration.doAutoCreate())
734          this.overbooked = new BooleanType(); // bb
735      return this.overbooked;
736    }
737
738    public boolean hasOverbookedElement() { 
739      return this.overbooked != null && !this.overbooked.isEmpty();
740    }
741
742    public boolean hasOverbooked() { 
743      return this.overbooked != null && !this.overbooked.isEmpty();
744    }
745
746    /**
747     * @param value {@link #overbooked} (This slot has already been overbooked, appointments are unlikely to be accepted for this time.). This is the underlying object with id, value and extensions. The accessor "getOverbooked" gives direct access to the value
748     */
749    public Slot setOverbookedElement(BooleanType value) { 
750      this.overbooked = value;
751      return this;
752    }
753
754    /**
755     * @return This slot has already been overbooked, appointments are unlikely to be accepted for this time.
756     */
757    public boolean getOverbooked() { 
758      return this.overbooked == null || this.overbooked.isEmpty() ? false : this.overbooked.getValue();
759    }
760
761    /**
762     * @param value This slot has already been overbooked, appointments are unlikely to be accepted for this time.
763     */
764    public Slot setOverbooked(boolean value) { 
765        if (this.overbooked == null)
766          this.overbooked = new BooleanType();
767        this.overbooked.setValue(value);
768      return this;
769    }
770
771    /**
772     * @return {@link #comment} (Comments on the slot to describe any extended information. Such as custom constraints on the slot.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
773     */
774    public StringType getCommentElement() { 
775      if (this.comment == null)
776        if (Configuration.errorOnAutoCreate())
777          throw new Error("Attempt to auto-create Slot.comment");
778        else if (Configuration.doAutoCreate())
779          this.comment = new StringType(); // bb
780      return this.comment;
781    }
782
783    public boolean hasCommentElement() { 
784      return this.comment != null && !this.comment.isEmpty();
785    }
786
787    public boolean hasComment() { 
788      return this.comment != null && !this.comment.isEmpty();
789    }
790
791    /**
792     * @param value {@link #comment} (Comments on the slot to describe any extended information. Such as custom constraints on the slot.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
793     */
794    public Slot setCommentElement(StringType value) { 
795      this.comment = value;
796      return this;
797    }
798
799    /**
800     * @return Comments on the slot to describe any extended information. Such as custom constraints on the slot.
801     */
802    public String getComment() { 
803      return this.comment == null ? null : this.comment.getValue();
804    }
805
806    /**
807     * @param value Comments on the slot to describe any extended information. Such as custom constraints on the slot.
808     */
809    public Slot setComment(String value) { 
810      if (Utilities.noString(value))
811        this.comment = null;
812      else {
813        if (this.comment == null)
814          this.comment = new StringType();
815        this.comment.setValue(value);
816      }
817      return this;
818    }
819
820      protected void listChildren(List<Property> children) {
821        super.listChildren(children);
822        children.add(new Property("identifier", "Identifier", "External Ids for this item.", 0, java.lang.Integer.MAX_VALUE, identifier));
823        children.add(new Property("serviceCategory", "CodeableConcept", "A broad categorization of the service that is to be performed during this appointment.", 0, java.lang.Integer.MAX_VALUE, serviceCategory));
824        children.add(new Property("serviceType", "CodeableReference(HealthcareService)", "The type of appointments that can be booked into this slot (ideally this would be an identifiable service - which is at a location, rather than the location itself). If provided then this overrides the value provided on the Schedule resource.", 0, java.lang.Integer.MAX_VALUE, serviceType));
825        children.add(new Property("specialty", "CodeableConcept", "The specialty of a practitioner that would be required to perform the service requested in this appointment.", 0, java.lang.Integer.MAX_VALUE, specialty));
826        children.add(new Property("appointmentType", "CodeableConcept", "The style of appointment or patient that may be booked in the slot (not service type).", 0, java.lang.Integer.MAX_VALUE, appointmentType));
827        children.add(new Property("schedule", "Reference(Schedule)", "The schedule resource that this slot defines an interval of status information.", 0, 1, schedule));
828        children.add(new Property("status", "code", "busy | free | busy-unavailable | busy-tentative | entered-in-error.", 0, 1, status));
829        children.add(new Property("start", "instant", "Date/Time that the slot is to begin.", 0, 1, start));
830        children.add(new Property("end", "instant", "Date/Time that the slot is to conclude.", 0, 1, end));
831        children.add(new Property("overbooked", "boolean", "This slot has already been overbooked, appointments are unlikely to be accepted for this time.", 0, 1, overbooked));
832        children.add(new Property("comment", "string", "Comments on the slot to describe any extended information. Such as custom constraints on the slot.", 0, 1, comment));
833      }
834
835      @Override
836      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
837        switch (_hash) {
838        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "External Ids for this item.", 0, java.lang.Integer.MAX_VALUE, identifier);
839        case 1281188563: /*serviceCategory*/  return new Property("serviceCategory", "CodeableConcept", "A broad categorization of the service that is to be performed during this appointment.", 0, java.lang.Integer.MAX_VALUE, serviceCategory);
840        case -1928370289: /*serviceType*/  return new Property("serviceType", "CodeableReference(HealthcareService)", "The type of appointments that can be booked into this slot (ideally this would be an identifiable service - which is at a location, rather than the location itself). If provided then this overrides the value provided on the Schedule resource.", 0, java.lang.Integer.MAX_VALUE, serviceType);
841        case -1694759682: /*specialty*/  return new Property("specialty", "CodeableConcept", "The specialty of a practitioner that would be required to perform the service requested in this appointment.", 0, java.lang.Integer.MAX_VALUE, specialty);
842        case -1596426375: /*appointmentType*/  return new Property("appointmentType", "CodeableConcept", "The style of appointment or patient that may be booked in the slot (not service type).", 0, java.lang.Integer.MAX_VALUE, appointmentType);
843        case -697920873: /*schedule*/  return new Property("schedule", "Reference(Schedule)", "The schedule resource that this slot defines an interval of status information.", 0, 1, schedule);
844        case -892481550: /*status*/  return new Property("status", "code", "busy | free | busy-unavailable | busy-tentative | entered-in-error.", 0, 1, status);
845        case 109757538: /*start*/  return new Property("start", "instant", "Date/Time that the slot is to begin.", 0, 1, start);
846        case 100571: /*end*/  return new Property("end", "instant", "Date/Time that the slot is to conclude.", 0, 1, end);
847        case 2068545308: /*overbooked*/  return new Property("overbooked", "boolean", "This slot has already been overbooked, appointments are unlikely to be accepted for this time.", 0, 1, overbooked);
848        case 950398559: /*comment*/  return new Property("comment", "string", "Comments on the slot to describe any extended information. Such as custom constraints on the slot.", 0, 1, comment);
849        default: return super.getNamedProperty(_hash, _name, _checkValid);
850        }
851
852      }
853
854      @Override
855      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
856        switch (hash) {
857        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
858        case 1281188563: /*serviceCategory*/ return this.serviceCategory == null ? new Base[0] : this.serviceCategory.toArray(new Base[this.serviceCategory.size()]); // CodeableConcept
859        case -1928370289: /*serviceType*/ return this.serviceType == null ? new Base[0] : this.serviceType.toArray(new Base[this.serviceType.size()]); // CodeableReference
860        case -1694759682: /*specialty*/ return this.specialty == null ? new Base[0] : this.specialty.toArray(new Base[this.specialty.size()]); // CodeableConcept
861        case -1596426375: /*appointmentType*/ return this.appointmentType == null ? new Base[0] : this.appointmentType.toArray(new Base[this.appointmentType.size()]); // CodeableConcept
862        case -697920873: /*schedule*/ return this.schedule == null ? new Base[0] : new Base[] {this.schedule}; // Reference
863        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<SlotStatus>
864        case 109757538: /*start*/ return this.start == null ? new Base[0] : new Base[] {this.start}; // InstantType
865        case 100571: /*end*/ return this.end == null ? new Base[0] : new Base[] {this.end}; // InstantType
866        case 2068545308: /*overbooked*/ return this.overbooked == null ? new Base[0] : new Base[] {this.overbooked}; // BooleanType
867        case 950398559: /*comment*/ return this.comment == null ? new Base[0] : new Base[] {this.comment}; // StringType
868        default: return super.getProperty(hash, name, checkValid);
869        }
870
871      }
872
873      @Override
874      public Base setProperty(int hash, String name, Base value) throws FHIRException {
875        switch (hash) {
876        case -1618432855: // identifier
877          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
878          return value;
879        case 1281188563: // serviceCategory
880          this.getServiceCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
881          return value;
882        case -1928370289: // serviceType
883          this.getServiceType().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
884          return value;
885        case -1694759682: // specialty
886          this.getSpecialty().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
887          return value;
888        case -1596426375: // appointmentType
889          this.getAppointmentType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
890          return value;
891        case -697920873: // schedule
892          this.schedule = TypeConvertor.castToReference(value); // Reference
893          return value;
894        case -892481550: // status
895          value = new SlotStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
896          this.status = (Enumeration) value; // Enumeration<SlotStatus>
897          return value;
898        case 109757538: // start
899          this.start = TypeConvertor.castToInstant(value); // InstantType
900          return value;
901        case 100571: // end
902          this.end = TypeConvertor.castToInstant(value); // InstantType
903          return value;
904        case 2068545308: // overbooked
905          this.overbooked = TypeConvertor.castToBoolean(value); // BooleanType
906          return value;
907        case 950398559: // comment
908          this.comment = TypeConvertor.castToString(value); // StringType
909          return value;
910        default: return super.setProperty(hash, name, value);
911        }
912
913      }
914
915      @Override
916      public Base setProperty(String name, Base value) throws FHIRException {
917        if (name.equals("identifier")) {
918          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
919        } else if (name.equals("serviceCategory")) {
920          this.getServiceCategory().add(TypeConvertor.castToCodeableConcept(value));
921        } else if (name.equals("serviceType")) {
922          this.getServiceType().add(TypeConvertor.castToCodeableReference(value));
923        } else if (name.equals("specialty")) {
924          this.getSpecialty().add(TypeConvertor.castToCodeableConcept(value));
925        } else if (name.equals("appointmentType")) {
926          this.getAppointmentType().add(TypeConvertor.castToCodeableConcept(value));
927        } else if (name.equals("schedule")) {
928          this.schedule = TypeConvertor.castToReference(value); // Reference
929        } else if (name.equals("status")) {
930          value = new SlotStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
931          this.status = (Enumeration) value; // Enumeration<SlotStatus>
932        } else if (name.equals("start")) {
933          this.start = TypeConvertor.castToInstant(value); // InstantType
934        } else if (name.equals("end")) {
935          this.end = TypeConvertor.castToInstant(value); // InstantType
936        } else if (name.equals("overbooked")) {
937          this.overbooked = TypeConvertor.castToBoolean(value); // BooleanType
938        } else if (name.equals("comment")) {
939          this.comment = TypeConvertor.castToString(value); // StringType
940        } else
941          return super.setProperty(name, value);
942        return value;
943      }
944
945      @Override
946      public Base makeProperty(int hash, String name) throws FHIRException {
947        switch (hash) {
948        case -1618432855:  return addIdentifier(); 
949        case 1281188563:  return addServiceCategory(); 
950        case -1928370289:  return addServiceType(); 
951        case -1694759682:  return addSpecialty(); 
952        case -1596426375:  return addAppointmentType(); 
953        case -697920873:  return getSchedule();
954        case -892481550:  return getStatusElement();
955        case 109757538:  return getStartElement();
956        case 100571:  return getEndElement();
957        case 2068545308:  return getOverbookedElement();
958        case 950398559:  return getCommentElement();
959        default: return super.makeProperty(hash, name);
960        }
961
962      }
963
964      @Override
965      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
966        switch (hash) {
967        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
968        case 1281188563: /*serviceCategory*/ return new String[] {"CodeableConcept"};
969        case -1928370289: /*serviceType*/ return new String[] {"CodeableReference"};
970        case -1694759682: /*specialty*/ return new String[] {"CodeableConcept"};
971        case -1596426375: /*appointmentType*/ return new String[] {"CodeableConcept"};
972        case -697920873: /*schedule*/ return new String[] {"Reference"};
973        case -892481550: /*status*/ return new String[] {"code"};
974        case 109757538: /*start*/ return new String[] {"instant"};
975        case 100571: /*end*/ return new String[] {"instant"};
976        case 2068545308: /*overbooked*/ return new String[] {"boolean"};
977        case 950398559: /*comment*/ return new String[] {"string"};
978        default: return super.getTypesForProperty(hash, name);
979        }
980
981      }
982
983      @Override
984      public Base addChild(String name) throws FHIRException {
985        if (name.equals("identifier")) {
986          return addIdentifier();
987        }
988        else if (name.equals("serviceCategory")) {
989          return addServiceCategory();
990        }
991        else if (name.equals("serviceType")) {
992          return addServiceType();
993        }
994        else if (name.equals("specialty")) {
995          return addSpecialty();
996        }
997        else if (name.equals("appointmentType")) {
998          return addAppointmentType();
999        }
1000        else if (name.equals("schedule")) {
1001          this.schedule = new Reference();
1002          return this.schedule;
1003        }
1004        else if (name.equals("status")) {
1005          throw new FHIRException("Cannot call addChild on a primitive type Slot.status");
1006        }
1007        else if (name.equals("start")) {
1008          throw new FHIRException("Cannot call addChild on a primitive type Slot.start");
1009        }
1010        else if (name.equals("end")) {
1011          throw new FHIRException("Cannot call addChild on a primitive type Slot.end");
1012        }
1013        else if (name.equals("overbooked")) {
1014          throw new FHIRException("Cannot call addChild on a primitive type Slot.overbooked");
1015        }
1016        else if (name.equals("comment")) {
1017          throw new FHIRException("Cannot call addChild on a primitive type Slot.comment");
1018        }
1019        else
1020          return super.addChild(name);
1021      }
1022
1023  public String fhirType() {
1024    return "Slot";
1025
1026  }
1027
1028      public Slot copy() {
1029        Slot dst = new Slot();
1030        copyValues(dst);
1031        return dst;
1032      }
1033
1034      public void copyValues(Slot dst) {
1035        super.copyValues(dst);
1036        if (identifier != null) {
1037          dst.identifier = new ArrayList<Identifier>();
1038          for (Identifier i : identifier)
1039            dst.identifier.add(i.copy());
1040        };
1041        if (serviceCategory != null) {
1042          dst.serviceCategory = new ArrayList<CodeableConcept>();
1043          for (CodeableConcept i : serviceCategory)
1044            dst.serviceCategory.add(i.copy());
1045        };
1046        if (serviceType != null) {
1047          dst.serviceType = new ArrayList<CodeableReference>();
1048          for (CodeableReference i : serviceType)
1049            dst.serviceType.add(i.copy());
1050        };
1051        if (specialty != null) {
1052          dst.specialty = new ArrayList<CodeableConcept>();
1053          for (CodeableConcept i : specialty)
1054            dst.specialty.add(i.copy());
1055        };
1056        if (appointmentType != null) {
1057          dst.appointmentType = new ArrayList<CodeableConcept>();
1058          for (CodeableConcept i : appointmentType)
1059            dst.appointmentType.add(i.copy());
1060        };
1061        dst.schedule = schedule == null ? null : schedule.copy();
1062        dst.status = status == null ? null : status.copy();
1063        dst.start = start == null ? null : start.copy();
1064        dst.end = end == null ? null : end.copy();
1065        dst.overbooked = overbooked == null ? null : overbooked.copy();
1066        dst.comment = comment == null ? null : comment.copy();
1067      }
1068
1069      protected Slot typedCopy() {
1070        return copy();
1071      }
1072
1073      @Override
1074      public boolean equalsDeep(Base other_) {
1075        if (!super.equalsDeep(other_))
1076          return false;
1077        if (!(other_ instanceof Slot))
1078          return false;
1079        Slot o = (Slot) other_;
1080        return compareDeep(identifier, o.identifier, true) && compareDeep(serviceCategory, o.serviceCategory, true)
1081           && compareDeep(serviceType, o.serviceType, true) && compareDeep(specialty, o.specialty, true) && compareDeep(appointmentType, o.appointmentType, true)
1082           && compareDeep(schedule, o.schedule, true) && compareDeep(status, o.status, true) && compareDeep(start, o.start, true)
1083           && compareDeep(end, o.end, true) && compareDeep(overbooked, o.overbooked, true) && compareDeep(comment, o.comment, true)
1084          ;
1085      }
1086
1087      @Override
1088      public boolean equalsShallow(Base other_) {
1089        if (!super.equalsShallow(other_))
1090          return false;
1091        if (!(other_ instanceof Slot))
1092          return false;
1093        Slot o = (Slot) other_;
1094        return compareValues(status, o.status, true) && compareValues(start, o.start, true) && compareValues(end, o.end, true)
1095           && compareValues(overbooked, o.overbooked, true) && compareValues(comment, o.comment, true);
1096      }
1097
1098      public boolean isEmpty() {
1099        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, serviceCategory
1100          , serviceType, specialty, appointmentType, schedule, status, start, end, overbooked
1101          , comment);
1102      }
1103
1104  @Override
1105  public ResourceType getResourceType() {
1106    return ResourceType.Slot;
1107   }
1108
1109 /**
1110   * Search parameter: <b>appointment-type</b>
1111   * <p>
1112   * Description: <b>The style of appointment or patient that may be booked in the slot (not service type)</b><br>
1113   * Type: <b>token</b><br>
1114   * Path: <b>Slot.appointmentType</b><br>
1115   * </p>
1116   */
1117  @SearchParamDefinition(name="appointment-type", path="Slot.appointmentType", description="The style of appointment or patient that may be booked in the slot (not service type)", type="token" )
1118  public static final String SP_APPOINTMENT_TYPE = "appointment-type";
1119 /**
1120   * <b>Fluent Client</b> search parameter constant for <b>appointment-type</b>
1121   * <p>
1122   * Description: <b>The style of appointment or patient that may be booked in the slot (not service type)</b><br>
1123   * Type: <b>token</b><br>
1124   * Path: <b>Slot.appointmentType</b><br>
1125   * </p>
1126   */
1127  public static final ca.uhn.fhir.rest.gclient.TokenClientParam APPOINTMENT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_APPOINTMENT_TYPE);
1128
1129 /**
1130   * Search parameter: <b>identifier</b>
1131   * <p>
1132   * Description: <b>A Slot Identifier</b><br>
1133   * Type: <b>token</b><br>
1134   * Path: <b>Slot.identifier</b><br>
1135   * </p>
1136   */
1137  @SearchParamDefinition(name="identifier", path="Slot.identifier", description="A Slot Identifier", type="token" )
1138  public static final String SP_IDENTIFIER = "identifier";
1139 /**
1140   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1141   * <p>
1142   * Description: <b>A Slot Identifier</b><br>
1143   * Type: <b>token</b><br>
1144   * Path: <b>Slot.identifier</b><br>
1145   * </p>
1146   */
1147  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1148
1149 /**
1150   * Search parameter: <b>schedule</b>
1151   * <p>
1152   * Description: <b>The Schedule Resource that we are seeking a slot within</b><br>
1153   * Type: <b>reference</b><br>
1154   * Path: <b>Slot.schedule</b><br>
1155   * </p>
1156   */
1157  @SearchParamDefinition(name="schedule", path="Slot.schedule", description="The Schedule Resource that we are seeking a slot within", type="reference", target={Schedule.class } )
1158  public static final String SP_SCHEDULE = "schedule";
1159 /**
1160   * <b>Fluent Client</b> search parameter constant for <b>schedule</b>
1161   * <p>
1162   * Description: <b>The Schedule Resource that we are seeking a slot within</b><br>
1163   * Type: <b>reference</b><br>
1164   * Path: <b>Slot.schedule</b><br>
1165   * </p>
1166   */
1167  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SCHEDULE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SCHEDULE);
1168
1169/**
1170   * Constant for fluent queries to be used to add include statements. Specifies
1171   * the path value of "<b>Slot:schedule</b>".
1172   */
1173  public static final ca.uhn.fhir.model.api.Include INCLUDE_SCHEDULE = new ca.uhn.fhir.model.api.Include("Slot:schedule").toLocked();
1174
1175 /**
1176   * Search parameter: <b>service-category</b>
1177   * <p>
1178   * Description: <b>A broad categorization of the service that is to be performed during this appointment</b><br>
1179   * Type: <b>token</b><br>
1180   * Path: <b>Slot.serviceCategory</b><br>
1181   * </p>
1182   */
1183  @SearchParamDefinition(name="service-category", path="Slot.serviceCategory", description="A broad categorization of the service that is to be performed during this appointment", type="token" )
1184  public static final String SP_SERVICE_CATEGORY = "service-category";
1185 /**
1186   * <b>Fluent Client</b> search parameter constant for <b>service-category</b>
1187   * <p>
1188   * Description: <b>A broad categorization of the service that is to be performed during this appointment</b><br>
1189   * Type: <b>token</b><br>
1190   * Path: <b>Slot.serviceCategory</b><br>
1191   * </p>
1192   */
1193  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SERVICE_CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SERVICE_CATEGORY);
1194
1195 /**
1196   * Search parameter: <b>service-type-reference</b>
1197   * <p>
1198   * Description: <b>The type (by HealthcareService) of appointments that can be booked into the slot</b><br>
1199   * Type: <b>reference</b><br>
1200   * Path: <b>Slot.serviceType.reference</b><br>
1201   * </p>
1202   */
1203  @SearchParamDefinition(name="service-type-reference", path="Slot.serviceType.reference", description="The type (by HealthcareService) of appointments that can be booked into the slot", type="reference" )
1204  public static final String SP_SERVICE_TYPE_REFERENCE = "service-type-reference";
1205 /**
1206   * <b>Fluent Client</b> search parameter constant for <b>service-type-reference</b>
1207   * <p>
1208   * Description: <b>The type (by HealthcareService) of appointments that can be booked into the slot</b><br>
1209   * Type: <b>reference</b><br>
1210   * Path: <b>Slot.serviceType.reference</b><br>
1211   * </p>
1212   */
1213  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SERVICE_TYPE_REFERENCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SERVICE_TYPE_REFERENCE);
1214
1215/**
1216   * Constant for fluent queries to be used to add include statements. Specifies
1217   * the path value of "<b>Slot:service-type-reference</b>".
1218   */
1219  public static final ca.uhn.fhir.model.api.Include INCLUDE_SERVICE_TYPE_REFERENCE = new ca.uhn.fhir.model.api.Include("Slot:service-type-reference").toLocked();
1220
1221 /**
1222   * Search parameter: <b>service-type</b>
1223   * <p>
1224   * Description: <b>The type (by coding) of appointments that can be booked into the slot</b><br>
1225   * Type: <b>token</b><br>
1226   * Path: <b>Slot.serviceType.concept</b><br>
1227   * </p>
1228   */
1229  @SearchParamDefinition(name="service-type", path="Slot.serviceType.concept", description="The type (by coding) of appointments that can be booked into the slot", type="token" )
1230  public static final String SP_SERVICE_TYPE = "service-type";
1231 /**
1232   * <b>Fluent Client</b> search parameter constant for <b>service-type</b>
1233   * <p>
1234   * Description: <b>The type (by coding) of appointments that can be booked into the slot</b><br>
1235   * Type: <b>token</b><br>
1236   * Path: <b>Slot.serviceType.concept</b><br>
1237   * </p>
1238   */
1239  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SERVICE_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SERVICE_TYPE);
1240
1241 /**
1242   * Search parameter: <b>specialty</b>
1243   * <p>
1244   * Description: <b>The specialty of a practitioner that would be required to perform the service requested in this appointment</b><br>
1245   * Type: <b>token</b><br>
1246   * Path: <b>Slot.specialty</b><br>
1247   * </p>
1248   */
1249  @SearchParamDefinition(name="specialty", path="Slot.specialty", description="The specialty of a practitioner that would be required to perform the service requested in this appointment", type="token" )
1250  public static final String SP_SPECIALTY = "specialty";
1251 /**
1252   * <b>Fluent Client</b> search parameter constant for <b>specialty</b>
1253   * <p>
1254   * Description: <b>The specialty of a practitioner that would be required to perform the service requested in this appointment</b><br>
1255   * Type: <b>token</b><br>
1256   * Path: <b>Slot.specialty</b><br>
1257   * </p>
1258   */
1259  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SPECIALTY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SPECIALTY);
1260
1261 /**
1262   * Search parameter: <b>start</b>
1263   * <p>
1264   * Description: <b>Appointment date/time.</b><br>
1265   * Type: <b>date</b><br>
1266   * Path: <b>Slot.start</b><br>
1267   * </p>
1268   */
1269  @SearchParamDefinition(name="start", path="Slot.start", description="Appointment date/time.", type="date" )
1270  public static final String SP_START = "start";
1271 /**
1272   * <b>Fluent Client</b> search parameter constant for <b>start</b>
1273   * <p>
1274   * Description: <b>Appointment date/time.</b><br>
1275   * Type: <b>date</b><br>
1276   * Path: <b>Slot.start</b><br>
1277   * </p>
1278   */
1279  public static final ca.uhn.fhir.rest.gclient.DateClientParam START = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_START);
1280
1281 /**
1282   * Search parameter: <b>status</b>
1283   * <p>
1284   * Description: <b>The free/busy status of the appointment</b><br>
1285   * Type: <b>token</b><br>
1286   * Path: <b>Slot.status</b><br>
1287   * </p>
1288   */
1289  @SearchParamDefinition(name="status", path="Slot.status", description="The free/busy status of the appointment", type="token" )
1290  public static final String SP_STATUS = "status";
1291 /**
1292   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1293   * <p>
1294   * Description: <b>The free/busy status of the appointment</b><br>
1295   * Type: <b>token</b><br>
1296   * Path: <b>Slot.status</b><br>
1297   * </p>
1298   */
1299  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1300
1301
1302}
1303