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.NULL)
184           return null;
185       if (code == SlotStatus.BUSY)
186        return "busy";
187      if (code == SlotStatus.FREE)
188        return "free";
189      if (code == SlotStatus.BUSYUNAVAILABLE)
190        return "busy-unavailable";
191      if (code == SlotStatus.BUSYTENTATIVE)
192        return "busy-tentative";
193      if (code == SlotStatus.ENTEREDINERROR)
194        return "entered-in-error";
195      return "?";
196   }
197    public String toSystem(SlotStatus code) {
198      return code.getSystem();
199      }
200    }
201
202    /**
203     * External Ids for this item.
204     */
205    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
206    @Description(shortDefinition="External Ids for this item", formalDefinition="External Ids for this item." )
207    protected List<Identifier> identifier;
208
209    /**
210     * A broad categorization of the service that is to be performed during this appointment.
211     */
212    @Child(name = "serviceCategory", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
213    @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." )
214    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/service-category")
215    protected List<CodeableConcept> serviceCategory;
216
217    /**
218     * 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.
219     */
220    @Child(name = "serviceType", type = {CodeableReference.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
221    @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." )
222    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/service-type")
223    protected List<CodeableReference> serviceType;
224
225    /**
226     * The specialty of a practitioner that would be required to perform the service requested in this appointment.
227     */
228    @Child(name = "specialty", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
229    @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." )
230    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/c80-practice-codes")
231    protected List<CodeableConcept> specialty;
232
233    /**
234     * The style of appointment or patient that may be booked in the slot (not service type).
235     */
236    @Child(name = "appointmentType", type = {CodeableConcept.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
237    @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)." )
238    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/v2-0276")
239    protected List<CodeableConcept> appointmentType;
240
241    /**
242     * The schedule resource that this slot defines an interval of status information.
243     */
244    @Child(name = "schedule", type = {Schedule.class}, order=5, min=1, max=1, modifier=false, summary=true)
245    @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." )
246    protected Reference schedule;
247
248    /**
249     * busy | free | busy-unavailable | busy-tentative | entered-in-error.
250     */
251    @Child(name = "status", type = {CodeType.class}, order=6, min=1, max=1, modifier=false, summary=true)
252    @Description(shortDefinition="busy | free | busy-unavailable | busy-tentative | entered-in-error", formalDefinition="busy | free | busy-unavailable | busy-tentative | entered-in-error." )
253    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/slotstatus")
254    protected Enumeration<SlotStatus> status;
255
256    /**
257     * Date/Time that the slot is to begin.
258     */
259    @Child(name = "start", type = {InstantType.class}, order=7, min=1, max=1, modifier=false, summary=true)
260    @Description(shortDefinition="Date/Time that the slot is to begin", formalDefinition="Date/Time that the slot is to begin." )
261    protected InstantType start;
262
263    /**
264     * Date/Time that the slot is to conclude.
265     */
266    @Child(name = "end", type = {InstantType.class}, order=8, min=1, max=1, modifier=false, summary=true)
267    @Description(shortDefinition="Date/Time that the slot is to conclude", formalDefinition="Date/Time that the slot is to conclude." )
268    protected InstantType end;
269
270    /**
271     * This slot has already been overbooked, appointments are unlikely to be accepted for this time.
272     */
273    @Child(name = "overbooked", type = {BooleanType.class}, order=9, min=0, max=1, modifier=false, summary=false)
274    @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." )
275    protected BooleanType overbooked;
276
277    /**
278     * Comments on the slot to describe any extended information. Such as custom constraints on the slot.
279     */
280    @Child(name = "comment", type = {StringType.class}, order=10, min=0, max=1, modifier=false, summary=false)
281    @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." )
282    protected StringType comment;
283
284    private static final long serialVersionUID = 2060370370L;
285
286  /**
287   * Constructor
288   */
289    public Slot() {
290      super();
291    }
292
293  /**
294   * Constructor
295   */
296    public Slot(Reference schedule, SlotStatus status, Date start, Date end) {
297      super();
298      this.setSchedule(schedule);
299      this.setStatus(status);
300      this.setStart(start);
301      this.setEnd(end);
302    }
303
304    /**
305     * @return {@link #identifier} (External Ids for this item.)
306     */
307    public List<Identifier> getIdentifier() { 
308      if (this.identifier == null)
309        this.identifier = new ArrayList<Identifier>();
310      return this.identifier;
311    }
312
313    /**
314     * @return Returns a reference to <code>this</code> for easy method chaining
315     */
316    public Slot setIdentifier(List<Identifier> theIdentifier) { 
317      this.identifier = theIdentifier;
318      return this;
319    }
320
321    public boolean hasIdentifier() { 
322      if (this.identifier == null)
323        return false;
324      for (Identifier item : this.identifier)
325        if (!item.isEmpty())
326          return true;
327      return false;
328    }
329
330    public Identifier addIdentifier() { //3
331      Identifier t = new Identifier();
332      if (this.identifier == null)
333        this.identifier = new ArrayList<Identifier>();
334      this.identifier.add(t);
335      return t;
336    }
337
338    public Slot addIdentifier(Identifier t) { //3
339      if (t == null)
340        return this;
341      if (this.identifier == null)
342        this.identifier = new ArrayList<Identifier>();
343      this.identifier.add(t);
344      return this;
345    }
346
347    /**
348     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
349     */
350    public Identifier getIdentifierFirstRep() { 
351      if (getIdentifier().isEmpty()) {
352        addIdentifier();
353      }
354      return getIdentifier().get(0);
355    }
356
357    /**
358     * @return {@link #serviceCategory} (A broad categorization of the service that is to be performed during this appointment.)
359     */
360    public List<CodeableConcept> getServiceCategory() { 
361      if (this.serviceCategory == null)
362        this.serviceCategory = new ArrayList<CodeableConcept>();
363      return this.serviceCategory;
364    }
365
366    /**
367     * @return Returns a reference to <code>this</code> for easy method chaining
368     */
369    public Slot setServiceCategory(List<CodeableConcept> theServiceCategory) { 
370      this.serviceCategory = theServiceCategory;
371      return this;
372    }
373
374    public boolean hasServiceCategory() { 
375      if (this.serviceCategory == null)
376        return false;
377      for (CodeableConcept item : this.serviceCategory)
378        if (!item.isEmpty())
379          return true;
380      return false;
381    }
382
383    public CodeableConcept addServiceCategory() { //3
384      CodeableConcept t = new CodeableConcept();
385      if (this.serviceCategory == null)
386        this.serviceCategory = new ArrayList<CodeableConcept>();
387      this.serviceCategory.add(t);
388      return t;
389    }
390
391    public Slot addServiceCategory(CodeableConcept t) { //3
392      if (t == null)
393        return this;
394      if (this.serviceCategory == null)
395        this.serviceCategory = new ArrayList<CodeableConcept>();
396      this.serviceCategory.add(t);
397      return this;
398    }
399
400    /**
401     * @return The first repetition of repeating field {@link #serviceCategory}, creating it if it does not already exist {3}
402     */
403    public CodeableConcept getServiceCategoryFirstRep() { 
404      if (getServiceCategory().isEmpty()) {
405        addServiceCategory();
406      }
407      return getServiceCategory().get(0);
408    }
409
410    /**
411     * @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.)
412     */
413    public List<CodeableReference> getServiceType() { 
414      if (this.serviceType == null)
415        this.serviceType = new ArrayList<CodeableReference>();
416      return this.serviceType;
417    }
418
419    /**
420     * @return Returns a reference to <code>this</code> for easy method chaining
421     */
422    public Slot setServiceType(List<CodeableReference> theServiceType) { 
423      this.serviceType = theServiceType;
424      return this;
425    }
426
427    public boolean hasServiceType() { 
428      if (this.serviceType == null)
429        return false;
430      for (CodeableReference item : this.serviceType)
431        if (!item.isEmpty())
432          return true;
433      return false;
434    }
435
436    public CodeableReference addServiceType() { //3
437      CodeableReference t = new CodeableReference();
438      if (this.serviceType == null)
439        this.serviceType = new ArrayList<CodeableReference>();
440      this.serviceType.add(t);
441      return t;
442    }
443
444    public Slot addServiceType(CodeableReference t) { //3
445      if (t == null)
446        return this;
447      if (this.serviceType == null)
448        this.serviceType = new ArrayList<CodeableReference>();
449      this.serviceType.add(t);
450      return this;
451    }
452
453    /**
454     * @return The first repetition of repeating field {@link #serviceType}, creating it if it does not already exist {3}
455     */
456    public CodeableReference getServiceTypeFirstRep() { 
457      if (getServiceType().isEmpty()) {
458        addServiceType();
459      }
460      return getServiceType().get(0);
461    }
462
463    /**
464     * @return {@link #specialty} (The specialty of a practitioner that would be required to perform the service requested in this appointment.)
465     */
466    public List<CodeableConcept> getSpecialty() { 
467      if (this.specialty == null)
468        this.specialty = new ArrayList<CodeableConcept>();
469      return this.specialty;
470    }
471
472    /**
473     * @return Returns a reference to <code>this</code> for easy method chaining
474     */
475    public Slot setSpecialty(List<CodeableConcept> theSpecialty) { 
476      this.specialty = theSpecialty;
477      return this;
478    }
479
480    public boolean hasSpecialty() { 
481      if (this.specialty == null)
482        return false;
483      for (CodeableConcept item : this.specialty)
484        if (!item.isEmpty())
485          return true;
486      return false;
487    }
488
489    public CodeableConcept addSpecialty() { //3
490      CodeableConcept t = new CodeableConcept();
491      if (this.specialty == null)
492        this.specialty = new ArrayList<CodeableConcept>();
493      this.specialty.add(t);
494      return t;
495    }
496
497    public Slot addSpecialty(CodeableConcept t) { //3
498      if (t == null)
499        return this;
500      if (this.specialty == null)
501        this.specialty = new ArrayList<CodeableConcept>();
502      this.specialty.add(t);
503      return this;
504    }
505
506    /**
507     * @return The first repetition of repeating field {@link #specialty}, creating it if it does not already exist {3}
508     */
509    public CodeableConcept getSpecialtyFirstRep() { 
510      if (getSpecialty().isEmpty()) {
511        addSpecialty();
512      }
513      return getSpecialty().get(0);
514    }
515
516    /**
517     * @return {@link #appointmentType} (The style of appointment or patient that may be booked in the slot (not service type).)
518     */
519    public List<CodeableConcept> getAppointmentType() { 
520      if (this.appointmentType == null)
521        this.appointmentType = new ArrayList<CodeableConcept>();
522      return this.appointmentType;
523    }
524
525    /**
526     * @return Returns a reference to <code>this</code> for easy method chaining
527     */
528    public Slot setAppointmentType(List<CodeableConcept> theAppointmentType) { 
529      this.appointmentType = theAppointmentType;
530      return this;
531    }
532
533    public boolean hasAppointmentType() { 
534      if (this.appointmentType == null)
535        return false;
536      for (CodeableConcept item : this.appointmentType)
537        if (!item.isEmpty())
538          return true;
539      return false;
540    }
541
542    public CodeableConcept addAppointmentType() { //3
543      CodeableConcept t = new CodeableConcept();
544      if (this.appointmentType == null)
545        this.appointmentType = new ArrayList<CodeableConcept>();
546      this.appointmentType.add(t);
547      return t;
548    }
549
550    public Slot addAppointmentType(CodeableConcept t) { //3
551      if (t == null)
552        return this;
553      if (this.appointmentType == null)
554        this.appointmentType = new ArrayList<CodeableConcept>();
555      this.appointmentType.add(t);
556      return this;
557    }
558
559    /**
560     * @return The first repetition of repeating field {@link #appointmentType}, creating it if it does not already exist {3}
561     */
562    public CodeableConcept getAppointmentTypeFirstRep() { 
563      if (getAppointmentType().isEmpty()) {
564        addAppointmentType();
565      }
566      return getAppointmentType().get(0);
567    }
568
569    /**
570     * @return {@link #schedule} (The schedule resource that this slot defines an interval of status information.)
571     */
572    public Reference getSchedule() { 
573      if (this.schedule == null)
574        if (Configuration.errorOnAutoCreate())
575          throw new Error("Attempt to auto-create Slot.schedule");
576        else if (Configuration.doAutoCreate())
577          this.schedule = new Reference(); // cc
578      return this.schedule;
579    }
580
581    public boolean hasSchedule() { 
582      return this.schedule != null && !this.schedule.isEmpty();
583    }
584
585    /**
586     * @param value {@link #schedule} (The schedule resource that this slot defines an interval of status information.)
587     */
588    public Slot setSchedule(Reference value) { 
589      this.schedule = value;
590      return this;
591    }
592
593    /**
594     * @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
595     */
596    public Enumeration<SlotStatus> getStatusElement() { 
597      if (this.status == null)
598        if (Configuration.errorOnAutoCreate())
599          throw new Error("Attempt to auto-create Slot.status");
600        else if (Configuration.doAutoCreate())
601          this.status = new Enumeration<SlotStatus>(new SlotStatusEnumFactory()); // bb
602      return this.status;
603    }
604
605    public boolean hasStatusElement() { 
606      return this.status != null && !this.status.isEmpty();
607    }
608
609    public boolean hasStatus() { 
610      return this.status != null && !this.status.isEmpty();
611    }
612
613    /**
614     * @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
615     */
616    public Slot setStatusElement(Enumeration<SlotStatus> value) { 
617      this.status = value;
618      return this;
619    }
620
621    /**
622     * @return busy | free | busy-unavailable | busy-tentative | entered-in-error.
623     */
624    public SlotStatus getStatus() { 
625      return this.status == null ? null : this.status.getValue();
626    }
627
628    /**
629     * @param value busy | free | busy-unavailable | busy-tentative | entered-in-error.
630     */
631    public Slot setStatus(SlotStatus value) { 
632        if (this.status == null)
633          this.status = new Enumeration<SlotStatus>(new SlotStatusEnumFactory());
634        this.status.setValue(value);
635      return this;
636    }
637
638    /**
639     * @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
640     */
641    public InstantType getStartElement() { 
642      if (this.start == null)
643        if (Configuration.errorOnAutoCreate())
644          throw new Error("Attempt to auto-create Slot.start");
645        else if (Configuration.doAutoCreate())
646          this.start = new InstantType(); // bb
647      return this.start;
648    }
649
650    public boolean hasStartElement() { 
651      return this.start != null && !this.start.isEmpty();
652    }
653
654    public boolean hasStart() { 
655      return this.start != null && !this.start.isEmpty();
656    }
657
658    /**
659     * @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
660     */
661    public Slot setStartElement(InstantType value) { 
662      this.start = value;
663      return this;
664    }
665
666    /**
667     * @return Date/Time that the slot is to begin.
668     */
669    public Date getStart() { 
670      return this.start == null ? null : this.start.getValue();
671    }
672
673    /**
674     * @param value Date/Time that the slot is to begin.
675     */
676    public Slot setStart(Date value) { 
677        if (this.start == null)
678          this.start = new InstantType();
679        this.start.setValue(value);
680      return this;
681    }
682
683    /**
684     * @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
685     */
686    public InstantType getEndElement() { 
687      if (this.end == null)
688        if (Configuration.errorOnAutoCreate())
689          throw new Error("Attempt to auto-create Slot.end");
690        else if (Configuration.doAutoCreate())
691          this.end = new InstantType(); // bb
692      return this.end;
693    }
694
695    public boolean hasEndElement() { 
696      return this.end != null && !this.end.isEmpty();
697    }
698
699    public boolean hasEnd() { 
700      return this.end != null && !this.end.isEmpty();
701    }
702
703    /**
704     * @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
705     */
706    public Slot setEndElement(InstantType value) { 
707      this.end = value;
708      return this;
709    }
710
711    /**
712     * @return Date/Time that the slot is to conclude.
713     */
714    public Date getEnd() { 
715      return this.end == null ? null : this.end.getValue();
716    }
717
718    /**
719     * @param value Date/Time that the slot is to conclude.
720     */
721    public Slot setEnd(Date value) { 
722        if (this.end == null)
723          this.end = new InstantType();
724        this.end.setValue(value);
725      return this;
726    }
727
728    /**
729     * @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
730     */
731    public BooleanType getOverbookedElement() { 
732      if (this.overbooked == null)
733        if (Configuration.errorOnAutoCreate())
734          throw new Error("Attempt to auto-create Slot.overbooked");
735        else if (Configuration.doAutoCreate())
736          this.overbooked = new BooleanType(); // bb
737      return this.overbooked;
738    }
739
740    public boolean hasOverbookedElement() { 
741      return this.overbooked != null && !this.overbooked.isEmpty();
742    }
743
744    public boolean hasOverbooked() { 
745      return this.overbooked != null && !this.overbooked.isEmpty();
746    }
747
748    /**
749     * @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
750     */
751    public Slot setOverbookedElement(BooleanType value) { 
752      this.overbooked = value;
753      return this;
754    }
755
756    /**
757     * @return This slot has already been overbooked, appointments are unlikely to be accepted for this time.
758     */
759    public boolean getOverbooked() { 
760      return this.overbooked == null || this.overbooked.isEmpty() ? false : this.overbooked.getValue();
761    }
762
763    /**
764     * @param value This slot has already been overbooked, appointments are unlikely to be accepted for this time.
765     */
766    public Slot setOverbooked(boolean value) { 
767        if (this.overbooked == null)
768          this.overbooked = new BooleanType();
769        this.overbooked.setValue(value);
770      return this;
771    }
772
773    /**
774     * @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
775     */
776    public StringType getCommentElement() { 
777      if (this.comment == null)
778        if (Configuration.errorOnAutoCreate())
779          throw new Error("Attempt to auto-create Slot.comment");
780        else if (Configuration.doAutoCreate())
781          this.comment = new StringType(); // bb
782      return this.comment;
783    }
784
785    public boolean hasCommentElement() { 
786      return this.comment != null && !this.comment.isEmpty();
787    }
788
789    public boolean hasComment() { 
790      return this.comment != null && !this.comment.isEmpty();
791    }
792
793    /**
794     * @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
795     */
796    public Slot setCommentElement(StringType value) { 
797      this.comment = value;
798      return this;
799    }
800
801    /**
802     * @return Comments on the slot to describe any extended information. Such as custom constraints on the slot.
803     */
804    public String getComment() { 
805      return this.comment == null ? null : this.comment.getValue();
806    }
807
808    /**
809     * @param value Comments on the slot to describe any extended information. Such as custom constraints on the slot.
810     */
811    public Slot setComment(String value) { 
812      if (Utilities.noString(value))
813        this.comment = null;
814      else {
815        if (this.comment == null)
816          this.comment = new StringType();
817        this.comment.setValue(value);
818      }
819      return this;
820    }
821
822      protected void listChildren(List<Property> children) {
823        super.listChildren(children);
824        children.add(new Property("identifier", "Identifier", "External Ids for this item.", 0, java.lang.Integer.MAX_VALUE, identifier));
825        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));
826        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));
827        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));
828        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));
829        children.add(new Property("schedule", "Reference(Schedule)", "The schedule resource that this slot defines an interval of status information.", 0, 1, schedule));
830        children.add(new Property("status", "code", "busy | free | busy-unavailable | busy-tentative | entered-in-error.", 0, 1, status));
831        children.add(new Property("start", "instant", "Date/Time that the slot is to begin.", 0, 1, start));
832        children.add(new Property("end", "instant", "Date/Time that the slot is to conclude.", 0, 1, end));
833        children.add(new Property("overbooked", "boolean", "This slot has already been overbooked, appointments are unlikely to be accepted for this time.", 0, 1, overbooked));
834        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));
835      }
836
837      @Override
838      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
839        switch (_hash) {
840        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "External Ids for this item.", 0, java.lang.Integer.MAX_VALUE, identifier);
841        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);
842        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);
843        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);
844        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);
845        case -697920873: /*schedule*/  return new Property("schedule", "Reference(Schedule)", "The schedule resource that this slot defines an interval of status information.", 0, 1, schedule);
846        case -892481550: /*status*/  return new Property("status", "code", "busy | free | busy-unavailable | busy-tentative | entered-in-error.", 0, 1, status);
847        case 109757538: /*start*/  return new Property("start", "instant", "Date/Time that the slot is to begin.", 0, 1, start);
848        case 100571: /*end*/  return new Property("end", "instant", "Date/Time that the slot is to conclude.", 0, 1, end);
849        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);
850        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);
851        default: return super.getNamedProperty(_hash, _name, _checkValid);
852        }
853
854      }
855
856      @Override
857      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
858        switch (hash) {
859        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
860        case 1281188563: /*serviceCategory*/ return this.serviceCategory == null ? new Base[0] : this.serviceCategory.toArray(new Base[this.serviceCategory.size()]); // CodeableConcept
861        case -1928370289: /*serviceType*/ return this.serviceType == null ? new Base[0] : this.serviceType.toArray(new Base[this.serviceType.size()]); // CodeableReference
862        case -1694759682: /*specialty*/ return this.specialty == null ? new Base[0] : this.specialty.toArray(new Base[this.specialty.size()]); // CodeableConcept
863        case -1596426375: /*appointmentType*/ return this.appointmentType == null ? new Base[0] : this.appointmentType.toArray(new Base[this.appointmentType.size()]); // CodeableConcept
864        case -697920873: /*schedule*/ return this.schedule == null ? new Base[0] : new Base[] {this.schedule}; // Reference
865        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<SlotStatus>
866        case 109757538: /*start*/ return this.start == null ? new Base[0] : new Base[] {this.start}; // InstantType
867        case 100571: /*end*/ return this.end == null ? new Base[0] : new Base[] {this.end}; // InstantType
868        case 2068545308: /*overbooked*/ return this.overbooked == null ? new Base[0] : new Base[] {this.overbooked}; // BooleanType
869        case 950398559: /*comment*/ return this.comment == null ? new Base[0] : new Base[] {this.comment}; // StringType
870        default: return super.getProperty(hash, name, checkValid);
871        }
872
873      }
874
875      @Override
876      public Base setProperty(int hash, String name, Base value) throws FHIRException {
877        switch (hash) {
878        case -1618432855: // identifier
879          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
880          return value;
881        case 1281188563: // serviceCategory
882          this.getServiceCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
883          return value;
884        case -1928370289: // serviceType
885          this.getServiceType().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
886          return value;
887        case -1694759682: // specialty
888          this.getSpecialty().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
889          return value;
890        case -1596426375: // appointmentType
891          this.getAppointmentType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
892          return value;
893        case -697920873: // schedule
894          this.schedule = TypeConvertor.castToReference(value); // Reference
895          return value;
896        case -892481550: // status
897          value = new SlotStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
898          this.status = (Enumeration) value; // Enumeration<SlotStatus>
899          return value;
900        case 109757538: // start
901          this.start = TypeConvertor.castToInstant(value); // InstantType
902          return value;
903        case 100571: // end
904          this.end = TypeConvertor.castToInstant(value); // InstantType
905          return value;
906        case 2068545308: // overbooked
907          this.overbooked = TypeConvertor.castToBoolean(value); // BooleanType
908          return value;
909        case 950398559: // comment
910          this.comment = TypeConvertor.castToString(value); // StringType
911          return value;
912        default: return super.setProperty(hash, name, value);
913        }
914
915      }
916
917      @Override
918      public Base setProperty(String name, Base value) throws FHIRException {
919        if (name.equals("identifier")) {
920          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
921        } else if (name.equals("serviceCategory")) {
922          this.getServiceCategory().add(TypeConvertor.castToCodeableConcept(value));
923        } else if (name.equals("serviceType")) {
924          this.getServiceType().add(TypeConvertor.castToCodeableReference(value));
925        } else if (name.equals("specialty")) {
926          this.getSpecialty().add(TypeConvertor.castToCodeableConcept(value));
927        } else if (name.equals("appointmentType")) {
928          this.getAppointmentType().add(TypeConvertor.castToCodeableConcept(value));
929        } else if (name.equals("schedule")) {
930          this.schedule = TypeConvertor.castToReference(value); // Reference
931        } else if (name.equals("status")) {
932          value = new SlotStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
933          this.status = (Enumeration) value; // Enumeration<SlotStatus>
934        } else if (name.equals("start")) {
935          this.start = TypeConvertor.castToInstant(value); // InstantType
936        } else if (name.equals("end")) {
937          this.end = TypeConvertor.castToInstant(value); // InstantType
938        } else if (name.equals("overbooked")) {
939          this.overbooked = TypeConvertor.castToBoolean(value); // BooleanType
940        } else if (name.equals("comment")) {
941          this.comment = TypeConvertor.castToString(value); // StringType
942        } else
943          return super.setProperty(name, value);
944        return value;
945      }
946
947  @Override
948  public void removeChild(String name, Base value) throws FHIRException {
949        if (name.equals("identifier")) {
950          this.getIdentifier().remove(value);
951        } else if (name.equals("serviceCategory")) {
952          this.getServiceCategory().remove(value);
953        } else if (name.equals("serviceType")) {
954          this.getServiceType().remove(value);
955        } else if (name.equals("specialty")) {
956          this.getSpecialty().remove(value);
957        } else if (name.equals("appointmentType")) {
958          this.getAppointmentType().remove(value);
959        } else if (name.equals("schedule")) {
960          this.schedule = null;
961        } else if (name.equals("status")) {
962          value = new SlotStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
963          this.status = (Enumeration) value; // Enumeration<SlotStatus>
964        } else if (name.equals("start")) {
965          this.start = null;
966        } else if (name.equals("end")) {
967          this.end = null;
968        } else if (name.equals("overbooked")) {
969          this.overbooked = null;
970        } else if (name.equals("comment")) {
971          this.comment = null;
972        } else
973          super.removeChild(name, value);
974        
975      }
976
977      @Override
978      public Base makeProperty(int hash, String name) throws FHIRException {
979        switch (hash) {
980        case -1618432855:  return addIdentifier(); 
981        case 1281188563:  return addServiceCategory(); 
982        case -1928370289:  return addServiceType(); 
983        case -1694759682:  return addSpecialty(); 
984        case -1596426375:  return addAppointmentType(); 
985        case -697920873:  return getSchedule();
986        case -892481550:  return getStatusElement();
987        case 109757538:  return getStartElement();
988        case 100571:  return getEndElement();
989        case 2068545308:  return getOverbookedElement();
990        case 950398559:  return getCommentElement();
991        default: return super.makeProperty(hash, name);
992        }
993
994      }
995
996      @Override
997      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
998        switch (hash) {
999        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1000        case 1281188563: /*serviceCategory*/ return new String[] {"CodeableConcept"};
1001        case -1928370289: /*serviceType*/ return new String[] {"CodeableReference"};
1002        case -1694759682: /*specialty*/ return new String[] {"CodeableConcept"};
1003        case -1596426375: /*appointmentType*/ return new String[] {"CodeableConcept"};
1004        case -697920873: /*schedule*/ return new String[] {"Reference"};
1005        case -892481550: /*status*/ return new String[] {"code"};
1006        case 109757538: /*start*/ return new String[] {"instant"};
1007        case 100571: /*end*/ return new String[] {"instant"};
1008        case 2068545308: /*overbooked*/ return new String[] {"boolean"};
1009        case 950398559: /*comment*/ return new String[] {"string"};
1010        default: return super.getTypesForProperty(hash, name);
1011        }
1012
1013      }
1014
1015      @Override
1016      public Base addChild(String name) throws FHIRException {
1017        if (name.equals("identifier")) {
1018          return addIdentifier();
1019        }
1020        else if (name.equals("serviceCategory")) {
1021          return addServiceCategory();
1022        }
1023        else if (name.equals("serviceType")) {
1024          return addServiceType();
1025        }
1026        else if (name.equals("specialty")) {
1027          return addSpecialty();
1028        }
1029        else if (name.equals("appointmentType")) {
1030          return addAppointmentType();
1031        }
1032        else if (name.equals("schedule")) {
1033          this.schedule = new Reference();
1034          return this.schedule;
1035        }
1036        else if (name.equals("status")) {
1037          throw new FHIRException("Cannot call addChild on a singleton property Slot.status");
1038        }
1039        else if (name.equals("start")) {
1040          throw new FHIRException("Cannot call addChild on a singleton property Slot.start");
1041        }
1042        else if (name.equals("end")) {
1043          throw new FHIRException("Cannot call addChild on a singleton property Slot.end");
1044        }
1045        else if (name.equals("overbooked")) {
1046          throw new FHIRException("Cannot call addChild on a singleton property Slot.overbooked");
1047        }
1048        else if (name.equals("comment")) {
1049          throw new FHIRException("Cannot call addChild on a singleton property Slot.comment");
1050        }
1051        else
1052          return super.addChild(name);
1053      }
1054
1055  public String fhirType() {
1056    return "Slot";
1057
1058  }
1059
1060      public Slot copy() {
1061        Slot dst = new Slot();
1062        copyValues(dst);
1063        return dst;
1064      }
1065
1066      public void copyValues(Slot dst) {
1067        super.copyValues(dst);
1068        if (identifier != null) {
1069          dst.identifier = new ArrayList<Identifier>();
1070          for (Identifier i : identifier)
1071            dst.identifier.add(i.copy());
1072        };
1073        if (serviceCategory != null) {
1074          dst.serviceCategory = new ArrayList<CodeableConcept>();
1075          for (CodeableConcept i : serviceCategory)
1076            dst.serviceCategory.add(i.copy());
1077        };
1078        if (serviceType != null) {
1079          dst.serviceType = new ArrayList<CodeableReference>();
1080          for (CodeableReference i : serviceType)
1081            dst.serviceType.add(i.copy());
1082        };
1083        if (specialty != null) {
1084          dst.specialty = new ArrayList<CodeableConcept>();
1085          for (CodeableConcept i : specialty)
1086            dst.specialty.add(i.copy());
1087        };
1088        if (appointmentType != null) {
1089          dst.appointmentType = new ArrayList<CodeableConcept>();
1090          for (CodeableConcept i : appointmentType)
1091            dst.appointmentType.add(i.copy());
1092        };
1093        dst.schedule = schedule == null ? null : schedule.copy();
1094        dst.status = status == null ? null : status.copy();
1095        dst.start = start == null ? null : start.copy();
1096        dst.end = end == null ? null : end.copy();
1097        dst.overbooked = overbooked == null ? null : overbooked.copy();
1098        dst.comment = comment == null ? null : comment.copy();
1099      }
1100
1101      protected Slot typedCopy() {
1102        return copy();
1103      }
1104
1105      @Override
1106      public boolean equalsDeep(Base other_) {
1107        if (!super.equalsDeep(other_))
1108          return false;
1109        if (!(other_ instanceof Slot))
1110          return false;
1111        Slot o = (Slot) other_;
1112        return compareDeep(identifier, o.identifier, true) && compareDeep(serviceCategory, o.serviceCategory, true)
1113           && compareDeep(serviceType, o.serviceType, true) && compareDeep(specialty, o.specialty, true) && compareDeep(appointmentType, o.appointmentType, true)
1114           && compareDeep(schedule, o.schedule, true) && compareDeep(status, o.status, true) && compareDeep(start, o.start, true)
1115           && compareDeep(end, o.end, true) && compareDeep(overbooked, o.overbooked, true) && compareDeep(comment, o.comment, true)
1116          ;
1117      }
1118
1119      @Override
1120      public boolean equalsShallow(Base other_) {
1121        if (!super.equalsShallow(other_))
1122          return false;
1123        if (!(other_ instanceof Slot))
1124          return false;
1125        Slot o = (Slot) other_;
1126        return compareValues(status, o.status, true) && compareValues(start, o.start, true) && compareValues(end, o.end, true)
1127           && compareValues(overbooked, o.overbooked, true) && compareValues(comment, o.comment, true);
1128      }
1129
1130      public boolean isEmpty() {
1131        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, serviceCategory
1132          , serviceType, specialty, appointmentType, schedule, status, start, end, overbooked
1133          , comment);
1134      }
1135
1136  @Override
1137  public ResourceType getResourceType() {
1138    return ResourceType.Slot;
1139   }
1140
1141 /**
1142   * Search parameter: <b>appointment-type</b>
1143   * <p>
1144   * Description: <b>The style of appointment or patient that may be booked in the slot (not service type)</b><br>
1145   * Type: <b>token</b><br>
1146   * Path: <b>Slot.appointmentType</b><br>
1147   * </p>
1148   */
1149  @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" )
1150  public static final String SP_APPOINTMENT_TYPE = "appointment-type";
1151 /**
1152   * <b>Fluent Client</b> search parameter constant for <b>appointment-type</b>
1153   * <p>
1154   * Description: <b>The style of appointment or patient that may be booked in the slot (not service type)</b><br>
1155   * Type: <b>token</b><br>
1156   * Path: <b>Slot.appointmentType</b><br>
1157   * </p>
1158   */
1159  public static final ca.uhn.fhir.rest.gclient.TokenClientParam APPOINTMENT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_APPOINTMENT_TYPE);
1160
1161 /**
1162   * Search parameter: <b>identifier</b>
1163   * <p>
1164   * Description: <b>A Slot Identifier</b><br>
1165   * Type: <b>token</b><br>
1166   * Path: <b>Slot.identifier</b><br>
1167   * </p>
1168   */
1169  @SearchParamDefinition(name="identifier", path="Slot.identifier", description="A Slot Identifier", type="token" )
1170  public static final String SP_IDENTIFIER = "identifier";
1171 /**
1172   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1173   * <p>
1174   * Description: <b>A Slot Identifier</b><br>
1175   * Type: <b>token</b><br>
1176   * Path: <b>Slot.identifier</b><br>
1177   * </p>
1178   */
1179  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1180
1181 /**
1182   * Search parameter: <b>schedule</b>
1183   * <p>
1184   * Description: <b>The Schedule Resource that we are seeking a slot within</b><br>
1185   * Type: <b>reference</b><br>
1186   * Path: <b>Slot.schedule</b><br>
1187   * </p>
1188   */
1189  @SearchParamDefinition(name="schedule", path="Slot.schedule", description="The Schedule Resource that we are seeking a slot within", type="reference", target={Schedule.class } )
1190  public static final String SP_SCHEDULE = "schedule";
1191 /**
1192   * <b>Fluent Client</b> search parameter constant for <b>schedule</b>
1193   * <p>
1194   * Description: <b>The Schedule Resource that we are seeking a slot within</b><br>
1195   * Type: <b>reference</b><br>
1196   * Path: <b>Slot.schedule</b><br>
1197   * </p>
1198   */
1199  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SCHEDULE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SCHEDULE);
1200
1201/**
1202   * Constant for fluent queries to be used to add include statements. Specifies
1203   * the path value of "<b>Slot:schedule</b>".
1204   */
1205  public static final ca.uhn.fhir.model.api.Include INCLUDE_SCHEDULE = new ca.uhn.fhir.model.api.Include("Slot:schedule").toLocked();
1206
1207 /**
1208   * Search parameter: <b>service-category</b>
1209   * <p>
1210   * Description: <b>A broad categorization of the service that is to be performed during this appointment</b><br>
1211   * Type: <b>token</b><br>
1212   * Path: <b>Slot.serviceCategory</b><br>
1213   * </p>
1214   */
1215  @SearchParamDefinition(name="service-category", path="Slot.serviceCategory", description="A broad categorization of the service that is to be performed during this appointment", type="token" )
1216  public static final String SP_SERVICE_CATEGORY = "service-category";
1217 /**
1218   * <b>Fluent Client</b> search parameter constant for <b>service-category</b>
1219   * <p>
1220   * Description: <b>A broad categorization of the service that is to be performed during this appointment</b><br>
1221   * Type: <b>token</b><br>
1222   * Path: <b>Slot.serviceCategory</b><br>
1223   * </p>
1224   */
1225  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SERVICE_CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SERVICE_CATEGORY);
1226
1227 /**
1228   * Search parameter: <b>service-type-reference</b>
1229   * <p>
1230   * Description: <b>The type (by HealthcareService) of appointments that can be booked into the slot</b><br>
1231   * Type: <b>reference</b><br>
1232   * Path: <b>Slot.serviceType.reference</b><br>
1233   * </p>
1234   */
1235  @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 } )
1236  public static final String SP_SERVICE_TYPE_REFERENCE = "service-type-reference";
1237 /**
1238   * <b>Fluent Client</b> search parameter constant for <b>service-type-reference</b>
1239   * <p>
1240   * Description: <b>The type (by HealthcareService) of appointments that can be booked into the slot</b><br>
1241   * Type: <b>reference</b><br>
1242   * Path: <b>Slot.serviceType.reference</b><br>
1243   * </p>
1244   */
1245  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SERVICE_TYPE_REFERENCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SERVICE_TYPE_REFERENCE);
1246
1247/**
1248   * Constant for fluent queries to be used to add include statements. Specifies
1249   * the path value of "<b>Slot:service-type-reference</b>".
1250   */
1251  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();
1252
1253 /**
1254   * Search parameter: <b>service-type</b>
1255   * <p>
1256   * Description: <b>The type (by coding) of appointments that can be booked into the slot</b><br>
1257   * Type: <b>token</b><br>
1258   * Path: <b>Slot.serviceType.concept</b><br>
1259   * </p>
1260   */
1261  @SearchParamDefinition(name="service-type", path="Slot.serviceType.concept", description="The type (by coding) of appointments that can be booked into the slot", type="token" )
1262  public static final String SP_SERVICE_TYPE = "service-type";
1263 /**
1264   * <b>Fluent Client</b> search parameter constant for <b>service-type</b>
1265   * <p>
1266   * Description: <b>The type (by coding) of appointments that can be booked into the slot</b><br>
1267   * Type: <b>token</b><br>
1268   * Path: <b>Slot.serviceType.concept</b><br>
1269   * </p>
1270   */
1271  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SERVICE_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SERVICE_TYPE);
1272
1273 /**
1274   * Search parameter: <b>specialty</b>
1275   * <p>
1276   * Description: <b>The specialty of a practitioner that would be required to perform the service requested in this appointment</b><br>
1277   * Type: <b>token</b><br>
1278   * Path: <b>Slot.specialty</b><br>
1279   * </p>
1280   */
1281  @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" )
1282  public static final String SP_SPECIALTY = "specialty";
1283 /**
1284   * <b>Fluent Client</b> search parameter constant for <b>specialty</b>
1285   * <p>
1286   * Description: <b>The specialty of a practitioner that would be required to perform the service requested in this appointment</b><br>
1287   * Type: <b>token</b><br>
1288   * Path: <b>Slot.specialty</b><br>
1289   * </p>
1290   */
1291  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SPECIALTY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SPECIALTY);
1292
1293 /**
1294   * Search parameter: <b>start</b>
1295   * <p>
1296   * Description: <b>Appointment date/time.</b><br>
1297   * Type: <b>date</b><br>
1298   * Path: <b>Slot.start</b><br>
1299   * </p>
1300   */
1301  @SearchParamDefinition(name="start", path="Slot.start", description="Appointment date/time.", type="date" )
1302  public static final String SP_START = "start";
1303 /**
1304   * <b>Fluent Client</b> search parameter constant for <b>start</b>
1305   * <p>
1306   * Description: <b>Appointment date/time.</b><br>
1307   * Type: <b>date</b><br>
1308   * Path: <b>Slot.start</b><br>
1309   * </p>
1310   */
1311  public static final ca.uhn.fhir.rest.gclient.DateClientParam START = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_START);
1312
1313 /**
1314   * Search parameter: <b>status</b>
1315   * <p>
1316   * Description: <b>The free/busy status of the appointment</b><br>
1317   * Type: <b>token</b><br>
1318   * Path: <b>Slot.status</b><br>
1319   * </p>
1320   */
1321  @SearchParamDefinition(name="status", path="Slot.status", description="The free/busy status of the appointment", type="token" )
1322  public static final String SP_STATUS = "status";
1323 /**
1324   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1325   * <p>
1326   * Description: <b>The free/busy status of the appointment</b><br>
1327   * Type: <b>token</b><br>
1328   * Path: <b>Slot.status</b><br>
1329   * </p>
1330   */
1331  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1332
1333
1334}
1335