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 Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
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(PrimitiveType<?> code) throws FHIRException {
163          if (code == null)
164            return null;
165          if (code.isEmpty())
166            return new Enumeration<SlotStatus>(this, SlotStatus.NULL, code);
167          String codeString = ((PrimitiveType) code).asStringValue();
168          if (codeString == null || "".equals(codeString))
169            return new Enumeration<SlotStatus>(this, SlotStatus.NULL, code);
170        if ("busy".equals(codeString))
171          return new Enumeration<SlotStatus>(this, SlotStatus.BUSY, code);
172        if ("free".equals(codeString))
173          return new Enumeration<SlotStatus>(this, SlotStatus.FREE, code);
174        if ("busy-unavailable".equals(codeString))
175          return new Enumeration<SlotStatus>(this, SlotStatus.BUSYUNAVAILABLE, code);
176        if ("busy-tentative".equals(codeString))
177          return new Enumeration<SlotStatus>(this, SlotStatus.BUSYTENTATIVE, code);
178        if ("entered-in-error".equals(codeString))
179          return new Enumeration<SlotStatus>(this, SlotStatus.ENTEREDINERROR, code);
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 void removeChild(String name, Base value) throws FHIRException {
947        if (name.equals("identifier")) {
948          this.getIdentifier().remove(value);
949        } else if (name.equals("serviceCategory")) {
950          this.getServiceCategory().remove(value);
951        } else if (name.equals("serviceType")) {
952          this.getServiceType().remove(value);
953        } else if (name.equals("specialty")) {
954          this.getSpecialty().remove(value);
955        } else if (name.equals("appointmentType")) {
956          this.getAppointmentType().remove(value);
957        } else if (name.equals("schedule")) {
958          this.schedule = null;
959        } else if (name.equals("status")) {
960          value = new SlotStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
961          this.status = (Enumeration) value; // Enumeration<SlotStatus>
962        } else if (name.equals("start")) {
963          this.start = null;
964        } else if (name.equals("end")) {
965          this.end = null;
966        } else if (name.equals("overbooked")) {
967          this.overbooked = null;
968        } else if (name.equals("comment")) {
969          this.comment = null;
970        } else
971          super.removeChild(name, value);
972        
973      }
974
975      @Override
976      public Base makeProperty(int hash, String name) throws FHIRException {
977        switch (hash) {
978        case -1618432855:  return addIdentifier(); 
979        case 1281188563:  return addServiceCategory(); 
980        case -1928370289:  return addServiceType(); 
981        case -1694759682:  return addSpecialty(); 
982        case -1596426375:  return addAppointmentType(); 
983        case -697920873:  return getSchedule();
984        case -892481550:  return getStatusElement();
985        case 109757538:  return getStartElement();
986        case 100571:  return getEndElement();
987        case 2068545308:  return getOverbookedElement();
988        case 950398559:  return getCommentElement();
989        default: return super.makeProperty(hash, name);
990        }
991
992      }
993
994      @Override
995      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
996        switch (hash) {
997        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
998        case 1281188563: /*serviceCategory*/ return new String[] {"CodeableConcept"};
999        case -1928370289: /*serviceType*/ return new String[] {"CodeableReference"};
1000        case -1694759682: /*specialty*/ return new String[] {"CodeableConcept"};
1001        case -1596426375: /*appointmentType*/ return new String[] {"CodeableConcept"};
1002        case -697920873: /*schedule*/ return new String[] {"Reference"};
1003        case -892481550: /*status*/ return new String[] {"code"};
1004        case 109757538: /*start*/ return new String[] {"instant"};
1005        case 100571: /*end*/ return new String[] {"instant"};
1006        case 2068545308: /*overbooked*/ return new String[] {"boolean"};
1007        case 950398559: /*comment*/ return new String[] {"string"};
1008        default: return super.getTypesForProperty(hash, name);
1009        }
1010
1011      }
1012
1013      @Override
1014      public Base addChild(String name) throws FHIRException {
1015        if (name.equals("identifier")) {
1016          return addIdentifier();
1017        }
1018        else if (name.equals("serviceCategory")) {
1019          return addServiceCategory();
1020        }
1021        else if (name.equals("serviceType")) {
1022          return addServiceType();
1023        }
1024        else if (name.equals("specialty")) {
1025          return addSpecialty();
1026        }
1027        else if (name.equals("appointmentType")) {
1028          return addAppointmentType();
1029        }
1030        else if (name.equals("schedule")) {
1031          this.schedule = new Reference();
1032          return this.schedule;
1033        }
1034        else if (name.equals("status")) {
1035          throw new FHIRException("Cannot call addChild on a singleton property Slot.status");
1036        }
1037        else if (name.equals("start")) {
1038          throw new FHIRException("Cannot call addChild on a singleton property Slot.start");
1039        }
1040        else if (name.equals("end")) {
1041          throw new FHIRException("Cannot call addChild on a singleton property Slot.end");
1042        }
1043        else if (name.equals("overbooked")) {
1044          throw new FHIRException("Cannot call addChild on a singleton property Slot.overbooked");
1045        }
1046        else if (name.equals("comment")) {
1047          throw new FHIRException("Cannot call addChild on a singleton property Slot.comment");
1048        }
1049        else
1050          return super.addChild(name);
1051      }
1052
1053  public String fhirType() {
1054    return "Slot";
1055
1056  }
1057
1058      public Slot copy() {
1059        Slot dst = new Slot();
1060        copyValues(dst);
1061        return dst;
1062      }
1063
1064      public void copyValues(Slot dst) {
1065        super.copyValues(dst);
1066        if (identifier != null) {
1067          dst.identifier = new ArrayList<Identifier>();
1068          for (Identifier i : identifier)
1069            dst.identifier.add(i.copy());
1070        };
1071        if (serviceCategory != null) {
1072          dst.serviceCategory = new ArrayList<CodeableConcept>();
1073          for (CodeableConcept i : serviceCategory)
1074            dst.serviceCategory.add(i.copy());
1075        };
1076        if (serviceType != null) {
1077          dst.serviceType = new ArrayList<CodeableReference>();
1078          for (CodeableReference i : serviceType)
1079            dst.serviceType.add(i.copy());
1080        };
1081        if (specialty != null) {
1082          dst.specialty = new ArrayList<CodeableConcept>();
1083          for (CodeableConcept i : specialty)
1084            dst.specialty.add(i.copy());
1085        };
1086        if (appointmentType != null) {
1087          dst.appointmentType = new ArrayList<CodeableConcept>();
1088          for (CodeableConcept i : appointmentType)
1089            dst.appointmentType.add(i.copy());
1090        };
1091        dst.schedule = schedule == null ? null : schedule.copy();
1092        dst.status = status == null ? null : status.copy();
1093        dst.start = start == null ? null : start.copy();
1094        dst.end = end == null ? null : end.copy();
1095        dst.overbooked = overbooked == null ? null : overbooked.copy();
1096        dst.comment = comment == null ? null : comment.copy();
1097      }
1098
1099      protected Slot typedCopy() {
1100        return copy();
1101      }
1102
1103      @Override
1104      public boolean equalsDeep(Base other_) {
1105        if (!super.equalsDeep(other_))
1106          return false;
1107        if (!(other_ instanceof Slot))
1108          return false;
1109        Slot o = (Slot) other_;
1110        return compareDeep(identifier, o.identifier, true) && compareDeep(serviceCategory, o.serviceCategory, true)
1111           && compareDeep(serviceType, o.serviceType, true) && compareDeep(specialty, o.specialty, true) && compareDeep(appointmentType, o.appointmentType, true)
1112           && compareDeep(schedule, o.schedule, true) && compareDeep(status, o.status, true) && compareDeep(start, o.start, true)
1113           && compareDeep(end, o.end, true) && compareDeep(overbooked, o.overbooked, true) && compareDeep(comment, o.comment, true)
1114          ;
1115      }
1116
1117      @Override
1118      public boolean equalsShallow(Base other_) {
1119        if (!super.equalsShallow(other_))
1120          return false;
1121        if (!(other_ instanceof Slot))
1122          return false;
1123        Slot o = (Slot) other_;
1124        return compareValues(status, o.status, true) && compareValues(start, o.start, true) && compareValues(end, o.end, true)
1125           && compareValues(overbooked, o.overbooked, true) && compareValues(comment, o.comment, true);
1126      }
1127
1128      public boolean isEmpty() {
1129        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, serviceCategory
1130          , serviceType, specialty, appointmentType, schedule, status, start, end, overbooked
1131          , comment);
1132      }
1133
1134  @Override
1135  public ResourceType getResourceType() {
1136    return ResourceType.Slot;
1137   }
1138
1139 /**
1140   * Search parameter: <b>appointment-type</b>
1141   * <p>
1142   * Description: <b>The style of appointment or patient that may be booked in the slot (not service type)</b><br>
1143   * Type: <b>token</b><br>
1144   * Path: <b>Slot.appointmentType</b><br>
1145   * </p>
1146   */
1147  @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" )
1148  public static final String SP_APPOINTMENT_TYPE = "appointment-type";
1149 /**
1150   * <b>Fluent Client</b> search parameter constant for <b>appointment-type</b>
1151   * <p>
1152   * Description: <b>The style of appointment or patient that may be booked in the slot (not service type)</b><br>
1153   * Type: <b>token</b><br>
1154   * Path: <b>Slot.appointmentType</b><br>
1155   * </p>
1156   */
1157  public static final ca.uhn.fhir.rest.gclient.TokenClientParam APPOINTMENT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_APPOINTMENT_TYPE);
1158
1159 /**
1160   * Search parameter: <b>identifier</b>
1161   * <p>
1162   * Description: <b>A Slot Identifier</b><br>
1163   * Type: <b>token</b><br>
1164   * Path: <b>Slot.identifier</b><br>
1165   * </p>
1166   */
1167  @SearchParamDefinition(name="identifier", path="Slot.identifier", description="A Slot Identifier", type="token" )
1168  public static final String SP_IDENTIFIER = "identifier";
1169 /**
1170   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1171   * <p>
1172   * Description: <b>A Slot Identifier</b><br>
1173   * Type: <b>token</b><br>
1174   * Path: <b>Slot.identifier</b><br>
1175   * </p>
1176   */
1177  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1178
1179 /**
1180   * Search parameter: <b>schedule</b>
1181   * <p>
1182   * Description: <b>The Schedule Resource that we are seeking a slot within</b><br>
1183   * Type: <b>reference</b><br>
1184   * Path: <b>Slot.schedule</b><br>
1185   * </p>
1186   */
1187  @SearchParamDefinition(name="schedule", path="Slot.schedule", description="The Schedule Resource that we are seeking a slot within", type="reference", target={Schedule.class } )
1188  public static final String SP_SCHEDULE = "schedule";
1189 /**
1190   * <b>Fluent Client</b> search parameter constant for <b>schedule</b>
1191   * <p>
1192   * Description: <b>The Schedule Resource that we are seeking a slot within</b><br>
1193   * Type: <b>reference</b><br>
1194   * Path: <b>Slot.schedule</b><br>
1195   * </p>
1196   */
1197  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SCHEDULE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SCHEDULE);
1198
1199/**
1200   * Constant for fluent queries to be used to add include statements. Specifies
1201   * the path value of "<b>Slot:schedule</b>".
1202   */
1203  public static final ca.uhn.fhir.model.api.Include INCLUDE_SCHEDULE = new ca.uhn.fhir.model.api.Include("Slot:schedule").toLocked();
1204
1205 /**
1206   * Search parameter: <b>service-category</b>
1207   * <p>
1208   * Description: <b>A broad categorization of the service that is to be performed during this appointment</b><br>
1209   * Type: <b>token</b><br>
1210   * Path: <b>Slot.serviceCategory</b><br>
1211   * </p>
1212   */
1213  @SearchParamDefinition(name="service-category", path="Slot.serviceCategory", description="A broad categorization of the service that is to be performed during this appointment", type="token" )
1214  public static final String SP_SERVICE_CATEGORY = "service-category";
1215 /**
1216   * <b>Fluent Client</b> search parameter constant for <b>service-category</b>
1217   * <p>
1218   * Description: <b>A broad categorization of the service that is to be performed during this appointment</b><br>
1219   * Type: <b>token</b><br>
1220   * Path: <b>Slot.serviceCategory</b><br>
1221   * </p>
1222   */
1223  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SERVICE_CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SERVICE_CATEGORY);
1224
1225 /**
1226   * Search parameter: <b>service-type-reference</b>
1227   * <p>
1228   * Description: <b>The type (by HealthcareService) of appointments that can be booked into the slot</b><br>
1229   * Type: <b>reference</b><br>
1230   * Path: <b>Slot.serviceType.reference</b><br>
1231   * </p>
1232   */
1233  @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", target={HealthcareService.class } )
1234  public static final String SP_SERVICE_TYPE_REFERENCE = "service-type-reference";
1235 /**
1236   * <b>Fluent Client</b> search parameter constant for <b>service-type-reference</b>
1237   * <p>
1238   * Description: <b>The type (by HealthcareService) of appointments that can be booked into the slot</b><br>
1239   * Type: <b>reference</b><br>
1240   * Path: <b>Slot.serviceType.reference</b><br>
1241   * </p>
1242   */
1243  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SERVICE_TYPE_REFERENCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SERVICE_TYPE_REFERENCE);
1244
1245/**
1246   * Constant for fluent queries to be used to add include statements. Specifies
1247   * the path value of "<b>Slot:service-type-reference</b>".
1248   */
1249  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();
1250
1251 /**
1252   * Search parameter: <b>service-type</b>
1253   * <p>
1254   * Description: <b>The type (by coding) of appointments that can be booked into the slot</b><br>
1255   * Type: <b>token</b><br>
1256   * Path: <b>Slot.serviceType.concept</b><br>
1257   * </p>
1258   */
1259  @SearchParamDefinition(name="service-type", path="Slot.serviceType.concept", description="The type (by coding) of appointments that can be booked into the slot", type="token" )
1260  public static final String SP_SERVICE_TYPE = "service-type";
1261 /**
1262   * <b>Fluent Client</b> search parameter constant for <b>service-type</b>
1263   * <p>
1264   * Description: <b>The type (by coding) of appointments that can be booked into the slot</b><br>
1265   * Type: <b>token</b><br>
1266   * Path: <b>Slot.serviceType.concept</b><br>
1267   * </p>
1268   */
1269  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SERVICE_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SERVICE_TYPE);
1270
1271 /**
1272   * Search parameter: <b>specialty</b>
1273   * <p>
1274   * Description: <b>The specialty of a practitioner that would be required to perform the service requested in this appointment</b><br>
1275   * Type: <b>token</b><br>
1276   * Path: <b>Slot.specialty</b><br>
1277   * </p>
1278   */
1279  @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" )
1280  public static final String SP_SPECIALTY = "specialty";
1281 /**
1282   * <b>Fluent Client</b> search parameter constant for <b>specialty</b>
1283   * <p>
1284   * Description: <b>The specialty of a practitioner that would be required to perform the service requested in this appointment</b><br>
1285   * Type: <b>token</b><br>
1286   * Path: <b>Slot.specialty</b><br>
1287   * </p>
1288   */
1289  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SPECIALTY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SPECIALTY);
1290
1291 /**
1292   * Search parameter: <b>start</b>
1293   * <p>
1294   * Description: <b>Appointment date/time.</b><br>
1295   * Type: <b>date</b><br>
1296   * Path: <b>Slot.start</b><br>
1297   * </p>
1298   */
1299  @SearchParamDefinition(name="start", path="Slot.start", description="Appointment date/time.", type="date" )
1300  public static final String SP_START = "start";
1301 /**
1302   * <b>Fluent Client</b> search parameter constant for <b>start</b>
1303   * <p>
1304   * Description: <b>Appointment date/time.</b><br>
1305   * Type: <b>date</b><br>
1306   * Path: <b>Slot.start</b><br>
1307   * </p>
1308   */
1309  public static final ca.uhn.fhir.rest.gclient.DateClientParam START = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_START);
1310
1311 /**
1312   * Search parameter: <b>status</b>
1313   * <p>
1314   * Description: <b>The free/busy status of the appointment</b><br>
1315   * Type: <b>token</b><br>
1316   * Path: <b>Slot.status</b><br>
1317   * </p>
1318   */
1319  @SearchParamDefinition(name="status", path="Slot.status", description="The free/busy status of the appointment", type="token" )
1320  public static final String SP_STATUS = "status";
1321 /**
1322   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1323   * <p>
1324   * Description: <b>The free/busy status of the appointment</b><br>
1325   * Type: <b>token</b><br>
1326   * Path: <b>Slot.status</b><br>
1327   * </p>
1328   */
1329  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1330
1331
1332}
1333