001package org.hl7.fhir.r4b.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Fri, Dec 31, 2021 05:58+1100 for FHIR v4.3.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r4b.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * A slot of time on a schedule that may be available for booking appointments.
052 */
053@ResourceDef(name="Slot", profile="http://hl7.org/fhir/StructureDefinition/Slot")
054public class Slot extends DomainResource {
055
056    public enum SlotStatus {
057        /**
058         * Indicates that the time interval is busy because one  or more events have been scheduled for that interval.
059         */
060        BUSY, 
061        /**
062         * Indicates that the time interval is free for scheduling.
063         */
064        FREE, 
065        /**
066         * Indicates that the time interval is busy and that the interval cannot be scheduled.
067         */
068        BUSYUNAVAILABLE, 
069        /**
070         * Indicates that the time interval is busy because one or more events have been tentatively scheduled for that interval.
071         */
072        BUSYTENTATIVE, 
073        /**
074         * This instance should not have been part of this patient's medical record.
075         */
076        ENTEREDINERROR, 
077        /**
078         * added to help the parsers with the generic types
079         */
080        NULL;
081        public static SlotStatus fromCode(String codeString) throws FHIRException {
082            if (codeString == null || "".equals(codeString))
083                return null;
084        if ("busy".equals(codeString))
085          return BUSY;
086        if ("free".equals(codeString))
087          return FREE;
088        if ("busy-unavailable".equals(codeString))
089          return BUSYUNAVAILABLE;
090        if ("busy-tentative".equals(codeString))
091          return BUSYTENTATIVE;
092        if ("entered-in-error".equals(codeString))
093          return ENTEREDINERROR;
094        if (Configuration.isAcceptInvalidEnums())
095          return null;
096        else
097          throw new FHIRException("Unknown SlotStatus code '"+codeString+"'");
098        }
099        public String toCode() {
100          switch (this) {
101            case BUSY: return "busy";
102            case FREE: return "free";
103            case BUSYUNAVAILABLE: return "busy-unavailable";
104            case BUSYTENTATIVE: return "busy-tentative";
105            case ENTEREDINERROR: return "entered-in-error";
106            case NULL: return null;
107            default: return "?";
108          }
109        }
110        public String getSystem() {
111          switch (this) {
112            case BUSY: return "http://hl7.org/fhir/slotstatus";
113            case FREE: return "http://hl7.org/fhir/slotstatus";
114            case BUSYUNAVAILABLE: return "http://hl7.org/fhir/slotstatus";
115            case BUSYTENTATIVE: return "http://hl7.org/fhir/slotstatus";
116            case ENTEREDINERROR: return "http://hl7.org/fhir/slotstatus";
117            case NULL: return null;
118            default: return "?";
119          }
120        }
121        public String getDefinition() {
122          switch (this) {
123            case BUSY: return "Indicates that the time interval is busy because one  or more events have been scheduled for that interval.";
124            case FREE: return "Indicates that the time interval is free for scheduling.";
125            case BUSYUNAVAILABLE: return "Indicates that the time interval is busy and that the interval cannot be scheduled.";
126            case BUSYTENTATIVE: return "Indicates that the time interval is busy because one or more events have been tentatively scheduled for that interval.";
127            case ENTEREDINERROR: return "This instance should not have been part of this patient's medical record.";
128            case NULL: return null;
129            default: return "?";
130          }
131        }
132        public String getDisplay() {
133          switch (this) {
134            case BUSY: return "Busy";
135            case FREE: return "Free";
136            case BUSYUNAVAILABLE: return "Busy (Unavailable)";
137            case BUSYTENTATIVE: return "Busy (Tentative)";
138            case ENTEREDINERROR: return "Entered in error";
139            case NULL: return null;
140            default: return "?";
141          }
142        }
143    }
144
145  public static class SlotStatusEnumFactory implements EnumFactory<SlotStatus> {
146    public SlotStatus fromCode(String codeString) throws IllegalArgumentException {
147      if (codeString == null || "".equals(codeString))
148            if (codeString == null || "".equals(codeString))
149                return null;
150        if ("busy".equals(codeString))
151          return SlotStatus.BUSY;
152        if ("free".equals(codeString))
153          return SlotStatus.FREE;
154        if ("busy-unavailable".equals(codeString))
155          return SlotStatus.BUSYUNAVAILABLE;
156        if ("busy-tentative".equals(codeString))
157          return SlotStatus.BUSYTENTATIVE;
158        if ("entered-in-error".equals(codeString))
159          return SlotStatus.ENTEREDINERROR;
160        throw new IllegalArgumentException("Unknown SlotStatus code '"+codeString+"'");
161        }
162        public Enumeration<SlotStatus> fromType(Base code) throws FHIRException {
163          if (code == null)
164            return null;
165          if (code.isEmpty())
166            return new Enumeration<SlotStatus>(this);
167          String codeString = ((PrimitiveType) code).asStringValue();
168          if (codeString == null || "".equals(codeString))
169            return null;
170        if ("busy".equals(codeString))
171          return new Enumeration<SlotStatus>(this, SlotStatus.BUSY);
172        if ("free".equals(codeString))
173          return new Enumeration<SlotStatus>(this, SlotStatus.FREE);
174        if ("busy-unavailable".equals(codeString))
175          return new Enumeration<SlotStatus>(this, SlotStatus.BUSYUNAVAILABLE);
176        if ("busy-tentative".equals(codeString))
177          return new Enumeration<SlotStatus>(this, SlotStatus.BUSYTENTATIVE);
178        if ("entered-in-error".equals(codeString))
179          return new Enumeration<SlotStatus>(this, SlotStatus.ENTEREDINERROR);
180        throw new FHIRException("Unknown SlotStatus code '"+codeString+"'");
181        }
182    public String toCode(SlotStatus code) {
183      if (code == SlotStatus.BUSY)
184        return "busy";
185      if (code == SlotStatus.FREE)
186        return "free";
187      if (code == SlotStatus.BUSYUNAVAILABLE)
188        return "busy-unavailable";
189      if (code == SlotStatus.BUSYTENTATIVE)
190        return "busy-tentative";
191      if (code == SlotStatus.ENTEREDINERROR)
192        return "entered-in-error";
193      return "?";
194      }
195    public String toSystem(SlotStatus code) {
196      return code.getSystem();
197      }
198    }
199
200    /**
201     * External Ids for this item.
202     */
203    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
204    @Description(shortDefinition="External Ids for this item", formalDefinition="External Ids for this item." )
205    protected List<Identifier> identifier;
206
207    /**
208     * A broad categorization of the service that is to be performed during this appointment.
209     */
210    @Child(name = "serviceCategory", type = {CodeableConcept.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
211    @Description(shortDefinition="A broad categorization of the service that is to be performed during this appointment", formalDefinition="A broad categorization of the service that is to be performed during this appointment." )
212    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/service-category")
213    protected List<CodeableConcept> serviceCategory;
214
215    /**
216     * The type of appointments that can be booked into this slot (ideally this would be an identifiable service - which is at a location, rather than the location itself). If provided then this overrides the value provided on the availability resource.
217     */
218    @Child(name = "serviceType", type = {CodeableConcept.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 availability 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 availability resource." )
220    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/service-type")
221    protected List<CodeableConcept> 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=1, 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 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 = -426965191L;
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 availability resource.)
410     */
411    public List<CodeableConcept> getServiceType() { 
412      if (this.serviceType == null)
413        this.serviceType = new ArrayList<CodeableConcept>();
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<CodeableConcept> theServiceType) { 
421      this.serviceType = theServiceType;
422      return this;
423    }
424
425    public boolean hasServiceType() { 
426      if (this.serviceType == null)
427        return false;
428      for (CodeableConcept item : this.serviceType)
429        if (!item.isEmpty())
430          return true;
431      return false;
432    }
433
434    public CodeableConcept addServiceType() { //3
435      CodeableConcept t = new CodeableConcept();
436      if (this.serviceType == null)
437        this.serviceType = new ArrayList<CodeableConcept>();
438      this.serviceType.add(t);
439      return t;
440    }
441
442    public Slot addServiceType(CodeableConcept t) { //3
443      if (t == null)
444        return this;
445      if (this.serviceType == null)
446        this.serviceType = new ArrayList<CodeableConcept>();
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 CodeableConcept 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 CodeableConcept getAppointmentType() { 
518      if (this.appointmentType == null)
519        if (Configuration.errorOnAutoCreate())
520          throw new Error("Attempt to auto-create Slot.appointmentType");
521        else if (Configuration.doAutoCreate())
522          this.appointmentType = new CodeableConcept(); // cc
523      return this.appointmentType;
524    }
525
526    public boolean hasAppointmentType() { 
527      return this.appointmentType != null && !this.appointmentType.isEmpty();
528    }
529
530    /**
531     * @param value {@link #appointmentType} (The style of appointment or patient that may be booked in the slot (not service type).)
532     */
533    public Slot setAppointmentType(CodeableConcept value) { 
534      this.appointmentType = value;
535      return this;
536    }
537
538    /**
539     * @return {@link #schedule} (The schedule resource that this slot defines an interval of status information.)
540     */
541    public Reference getSchedule() { 
542      if (this.schedule == null)
543        if (Configuration.errorOnAutoCreate())
544          throw new Error("Attempt to auto-create Slot.schedule");
545        else if (Configuration.doAutoCreate())
546          this.schedule = new Reference(); // cc
547      return this.schedule;
548    }
549
550    public boolean hasSchedule() { 
551      return this.schedule != null && !this.schedule.isEmpty();
552    }
553
554    /**
555     * @param value {@link #schedule} (The schedule resource that this slot defines an interval of status information.)
556     */
557    public Slot setSchedule(Reference value) { 
558      this.schedule = value;
559      return this;
560    }
561
562    /**
563     * @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
564     */
565    public Enumeration<SlotStatus> getStatusElement() { 
566      if (this.status == null)
567        if (Configuration.errorOnAutoCreate())
568          throw new Error("Attempt to auto-create Slot.status");
569        else if (Configuration.doAutoCreate())
570          this.status = new Enumeration<SlotStatus>(new SlotStatusEnumFactory()); // bb
571      return this.status;
572    }
573
574    public boolean hasStatusElement() { 
575      return this.status != null && !this.status.isEmpty();
576    }
577
578    public boolean hasStatus() { 
579      return this.status != null && !this.status.isEmpty();
580    }
581
582    /**
583     * @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
584     */
585    public Slot setStatusElement(Enumeration<SlotStatus> value) { 
586      this.status = value;
587      return this;
588    }
589
590    /**
591     * @return busy | free | busy-unavailable | busy-tentative | entered-in-error.
592     */
593    public SlotStatus getStatus() { 
594      return this.status == null ? null : this.status.getValue();
595    }
596
597    /**
598     * @param value busy | free | busy-unavailable | busy-tentative | entered-in-error.
599     */
600    public Slot setStatus(SlotStatus value) { 
601        if (this.status == null)
602          this.status = new Enumeration<SlotStatus>(new SlotStatusEnumFactory());
603        this.status.setValue(value);
604      return this;
605    }
606
607    /**
608     * @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
609     */
610    public InstantType getStartElement() { 
611      if (this.start == null)
612        if (Configuration.errorOnAutoCreate())
613          throw new Error("Attempt to auto-create Slot.start");
614        else if (Configuration.doAutoCreate())
615          this.start = new InstantType(); // bb
616      return this.start;
617    }
618
619    public boolean hasStartElement() { 
620      return this.start != null && !this.start.isEmpty();
621    }
622
623    public boolean hasStart() { 
624      return this.start != null && !this.start.isEmpty();
625    }
626
627    /**
628     * @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
629     */
630    public Slot setStartElement(InstantType value) { 
631      this.start = value;
632      return this;
633    }
634
635    /**
636     * @return Date/Time that the slot is to begin.
637     */
638    public Date getStart() { 
639      return this.start == null ? null : this.start.getValue();
640    }
641
642    /**
643     * @param value Date/Time that the slot is to begin.
644     */
645    public Slot setStart(Date value) { 
646        if (this.start == null)
647          this.start = new InstantType();
648        this.start.setValue(value);
649      return this;
650    }
651
652    /**
653     * @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
654     */
655    public InstantType getEndElement() { 
656      if (this.end == null)
657        if (Configuration.errorOnAutoCreate())
658          throw new Error("Attempt to auto-create Slot.end");
659        else if (Configuration.doAutoCreate())
660          this.end = new InstantType(); // bb
661      return this.end;
662    }
663
664    public boolean hasEndElement() { 
665      return this.end != null && !this.end.isEmpty();
666    }
667
668    public boolean hasEnd() { 
669      return this.end != null && !this.end.isEmpty();
670    }
671
672    /**
673     * @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
674     */
675    public Slot setEndElement(InstantType value) { 
676      this.end = value;
677      return this;
678    }
679
680    /**
681     * @return Date/Time that the slot is to conclude.
682     */
683    public Date getEnd() { 
684      return this.end == null ? null : this.end.getValue();
685    }
686
687    /**
688     * @param value Date/Time that the slot is to conclude.
689     */
690    public Slot setEnd(Date value) { 
691        if (this.end == null)
692          this.end = new InstantType();
693        this.end.setValue(value);
694      return this;
695    }
696
697    /**
698     * @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
699     */
700    public BooleanType getOverbookedElement() { 
701      if (this.overbooked == null)
702        if (Configuration.errorOnAutoCreate())
703          throw new Error("Attempt to auto-create Slot.overbooked");
704        else if (Configuration.doAutoCreate())
705          this.overbooked = new BooleanType(); // bb
706      return this.overbooked;
707    }
708
709    public boolean hasOverbookedElement() { 
710      return this.overbooked != null && !this.overbooked.isEmpty();
711    }
712
713    public boolean hasOverbooked() { 
714      return this.overbooked != null && !this.overbooked.isEmpty();
715    }
716
717    /**
718     * @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
719     */
720    public Slot setOverbookedElement(BooleanType value) { 
721      this.overbooked = value;
722      return this;
723    }
724
725    /**
726     * @return This slot has already been overbooked, appointments are unlikely to be accepted for this time.
727     */
728    public boolean getOverbooked() { 
729      return this.overbooked == null || this.overbooked.isEmpty() ? false : this.overbooked.getValue();
730    }
731
732    /**
733     * @param value This slot has already been overbooked, appointments are unlikely to be accepted for this time.
734     */
735    public Slot setOverbooked(boolean value) { 
736        if (this.overbooked == null)
737          this.overbooked = new BooleanType();
738        this.overbooked.setValue(value);
739      return this;
740    }
741
742    /**
743     * @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
744     */
745    public StringType getCommentElement() { 
746      if (this.comment == null)
747        if (Configuration.errorOnAutoCreate())
748          throw new Error("Attempt to auto-create Slot.comment");
749        else if (Configuration.doAutoCreate())
750          this.comment = new StringType(); // bb
751      return this.comment;
752    }
753
754    public boolean hasCommentElement() { 
755      return this.comment != null && !this.comment.isEmpty();
756    }
757
758    public boolean hasComment() { 
759      return this.comment != null && !this.comment.isEmpty();
760    }
761
762    /**
763     * @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
764     */
765    public Slot setCommentElement(StringType value) { 
766      this.comment = value;
767      return this;
768    }
769
770    /**
771     * @return Comments on the slot to describe any extended information. Such as custom constraints on the slot.
772     */
773    public String getComment() { 
774      return this.comment == null ? null : this.comment.getValue();
775    }
776
777    /**
778     * @param value Comments on the slot to describe any extended information. Such as custom constraints on the slot.
779     */
780    public Slot setComment(String value) { 
781      if (Utilities.noString(value))
782        this.comment = null;
783      else {
784        if (this.comment == null)
785          this.comment = new StringType();
786        this.comment.setValue(value);
787      }
788      return this;
789    }
790
791      protected void listChildren(List<Property> children) {
792        super.listChildren(children);
793        children.add(new Property("identifier", "Identifier", "External Ids for this item.", 0, java.lang.Integer.MAX_VALUE, identifier));
794        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));
795        children.add(new Property("serviceType", "CodeableConcept", "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 availability resource.", 0, java.lang.Integer.MAX_VALUE, serviceType));
796        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));
797        children.add(new Property("appointmentType", "CodeableConcept", "The style of appointment or patient that may be booked in the slot (not service type).", 0, 1, appointmentType));
798        children.add(new Property("schedule", "Reference(Schedule)", "The schedule resource that this slot defines an interval of status information.", 0, 1, schedule));
799        children.add(new Property("status", "code", "busy | free | busy-unavailable | busy-tentative | entered-in-error.", 0, 1, status));
800        children.add(new Property("start", "instant", "Date/Time that the slot is to begin.", 0, 1, start));
801        children.add(new Property("end", "instant", "Date/Time that the slot is to conclude.", 0, 1, end));
802        children.add(new Property("overbooked", "boolean", "This slot has already been overbooked, appointments are unlikely to be accepted for this time.", 0, 1, overbooked));
803        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));
804      }
805
806      @Override
807      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
808        switch (_hash) {
809        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "External Ids for this item.", 0, java.lang.Integer.MAX_VALUE, identifier);
810        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);
811        case -1928370289: /*serviceType*/  return new Property("serviceType", "CodeableConcept", "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 availability resource.", 0, java.lang.Integer.MAX_VALUE, serviceType);
812        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);
813        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, 1, appointmentType);
814        case -697920873: /*schedule*/  return new Property("schedule", "Reference(Schedule)", "The schedule resource that this slot defines an interval of status information.", 0, 1, schedule);
815        case -892481550: /*status*/  return new Property("status", "code", "busy | free | busy-unavailable | busy-tentative | entered-in-error.", 0, 1, status);
816        case 109757538: /*start*/  return new Property("start", "instant", "Date/Time that the slot is to begin.", 0, 1, start);
817        case 100571: /*end*/  return new Property("end", "instant", "Date/Time that the slot is to conclude.", 0, 1, end);
818        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);
819        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);
820        default: return super.getNamedProperty(_hash, _name, _checkValid);
821        }
822
823      }
824
825      @Override
826      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
827        switch (hash) {
828        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
829        case 1281188563: /*serviceCategory*/ return this.serviceCategory == null ? new Base[0] : this.serviceCategory.toArray(new Base[this.serviceCategory.size()]); // CodeableConcept
830        case -1928370289: /*serviceType*/ return this.serviceType == null ? new Base[0] : this.serviceType.toArray(new Base[this.serviceType.size()]); // CodeableConcept
831        case -1694759682: /*specialty*/ return this.specialty == null ? new Base[0] : this.specialty.toArray(new Base[this.specialty.size()]); // CodeableConcept
832        case -1596426375: /*appointmentType*/ return this.appointmentType == null ? new Base[0] : new Base[] {this.appointmentType}; // CodeableConcept
833        case -697920873: /*schedule*/ return this.schedule == null ? new Base[0] : new Base[] {this.schedule}; // Reference
834        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<SlotStatus>
835        case 109757538: /*start*/ return this.start == null ? new Base[0] : new Base[] {this.start}; // InstantType
836        case 100571: /*end*/ return this.end == null ? new Base[0] : new Base[] {this.end}; // InstantType
837        case 2068545308: /*overbooked*/ return this.overbooked == null ? new Base[0] : new Base[] {this.overbooked}; // BooleanType
838        case 950398559: /*comment*/ return this.comment == null ? new Base[0] : new Base[] {this.comment}; // StringType
839        default: return super.getProperty(hash, name, checkValid);
840        }
841
842      }
843
844      @Override
845      public Base setProperty(int hash, String name, Base value) throws FHIRException {
846        switch (hash) {
847        case -1618432855: // identifier
848          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
849          return value;
850        case 1281188563: // serviceCategory
851          this.getServiceCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
852          return value;
853        case -1928370289: // serviceType
854          this.getServiceType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
855          return value;
856        case -1694759682: // specialty
857          this.getSpecialty().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
858          return value;
859        case -1596426375: // appointmentType
860          this.appointmentType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
861          return value;
862        case -697920873: // schedule
863          this.schedule = TypeConvertor.castToReference(value); // Reference
864          return value;
865        case -892481550: // status
866          value = new SlotStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
867          this.status = (Enumeration) value; // Enumeration<SlotStatus>
868          return value;
869        case 109757538: // start
870          this.start = TypeConvertor.castToInstant(value); // InstantType
871          return value;
872        case 100571: // end
873          this.end = TypeConvertor.castToInstant(value); // InstantType
874          return value;
875        case 2068545308: // overbooked
876          this.overbooked = TypeConvertor.castToBoolean(value); // BooleanType
877          return value;
878        case 950398559: // comment
879          this.comment = TypeConvertor.castToString(value); // StringType
880          return value;
881        default: return super.setProperty(hash, name, value);
882        }
883
884      }
885
886      @Override
887      public Base setProperty(String name, Base value) throws FHIRException {
888        if (name.equals("identifier")) {
889          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
890        } else if (name.equals("serviceCategory")) {
891          this.getServiceCategory().add(TypeConvertor.castToCodeableConcept(value));
892        } else if (name.equals("serviceType")) {
893          this.getServiceType().add(TypeConvertor.castToCodeableConcept(value));
894        } else if (name.equals("specialty")) {
895          this.getSpecialty().add(TypeConvertor.castToCodeableConcept(value));
896        } else if (name.equals("appointmentType")) {
897          this.appointmentType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
898        } else if (name.equals("schedule")) {
899          this.schedule = TypeConvertor.castToReference(value); // Reference
900        } else if (name.equals("status")) {
901          value = new SlotStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
902          this.status = (Enumeration) value; // Enumeration<SlotStatus>
903        } else if (name.equals("start")) {
904          this.start = TypeConvertor.castToInstant(value); // InstantType
905        } else if (name.equals("end")) {
906          this.end = TypeConvertor.castToInstant(value); // InstantType
907        } else if (name.equals("overbooked")) {
908          this.overbooked = TypeConvertor.castToBoolean(value); // BooleanType
909        } else if (name.equals("comment")) {
910          this.comment = TypeConvertor.castToString(value); // StringType
911        } else
912          return super.setProperty(name, value);
913        return value;
914      }
915
916      @Override
917      public Base makeProperty(int hash, String name) throws FHIRException {
918        switch (hash) {
919        case -1618432855:  return addIdentifier(); 
920        case 1281188563:  return addServiceCategory(); 
921        case -1928370289:  return addServiceType(); 
922        case -1694759682:  return addSpecialty(); 
923        case -1596426375:  return getAppointmentType();
924        case -697920873:  return getSchedule();
925        case -892481550:  return getStatusElement();
926        case 109757538:  return getStartElement();
927        case 100571:  return getEndElement();
928        case 2068545308:  return getOverbookedElement();
929        case 950398559:  return getCommentElement();
930        default: return super.makeProperty(hash, name);
931        }
932
933      }
934
935      @Override
936      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
937        switch (hash) {
938        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
939        case 1281188563: /*serviceCategory*/ return new String[] {"CodeableConcept"};
940        case -1928370289: /*serviceType*/ return new String[] {"CodeableConcept"};
941        case -1694759682: /*specialty*/ return new String[] {"CodeableConcept"};
942        case -1596426375: /*appointmentType*/ return new String[] {"CodeableConcept"};
943        case -697920873: /*schedule*/ return new String[] {"Reference"};
944        case -892481550: /*status*/ return new String[] {"code"};
945        case 109757538: /*start*/ return new String[] {"instant"};
946        case 100571: /*end*/ return new String[] {"instant"};
947        case 2068545308: /*overbooked*/ return new String[] {"boolean"};
948        case 950398559: /*comment*/ return new String[] {"string"};
949        default: return super.getTypesForProperty(hash, name);
950        }
951
952      }
953
954      @Override
955      public Base addChild(String name) throws FHIRException {
956        if (name.equals("identifier")) {
957          return addIdentifier();
958        }
959        else if (name.equals("serviceCategory")) {
960          return addServiceCategory();
961        }
962        else if (name.equals("serviceType")) {
963          return addServiceType();
964        }
965        else if (name.equals("specialty")) {
966          return addSpecialty();
967        }
968        else if (name.equals("appointmentType")) {
969          this.appointmentType = new CodeableConcept();
970          return this.appointmentType;
971        }
972        else if (name.equals("schedule")) {
973          this.schedule = new Reference();
974          return this.schedule;
975        }
976        else if (name.equals("status")) {
977          throw new FHIRException("Cannot call addChild on a primitive type Slot.status");
978        }
979        else if (name.equals("start")) {
980          throw new FHIRException("Cannot call addChild on a primitive type Slot.start");
981        }
982        else if (name.equals("end")) {
983          throw new FHIRException("Cannot call addChild on a primitive type Slot.end");
984        }
985        else if (name.equals("overbooked")) {
986          throw new FHIRException("Cannot call addChild on a primitive type Slot.overbooked");
987        }
988        else if (name.equals("comment")) {
989          throw new FHIRException("Cannot call addChild on a primitive type Slot.comment");
990        }
991        else
992          return super.addChild(name);
993      }
994
995  public String fhirType() {
996    return "Slot";
997
998  }
999
1000      public Slot copy() {
1001        Slot dst = new Slot();
1002        copyValues(dst);
1003        return dst;
1004      }
1005
1006      public void copyValues(Slot dst) {
1007        super.copyValues(dst);
1008        if (identifier != null) {
1009          dst.identifier = new ArrayList<Identifier>();
1010          for (Identifier i : identifier)
1011            dst.identifier.add(i.copy());
1012        };
1013        if (serviceCategory != null) {
1014          dst.serviceCategory = new ArrayList<CodeableConcept>();
1015          for (CodeableConcept i : serviceCategory)
1016            dst.serviceCategory.add(i.copy());
1017        };
1018        if (serviceType != null) {
1019          dst.serviceType = new ArrayList<CodeableConcept>();
1020          for (CodeableConcept i : serviceType)
1021            dst.serviceType.add(i.copy());
1022        };
1023        if (specialty != null) {
1024          dst.specialty = new ArrayList<CodeableConcept>();
1025          for (CodeableConcept i : specialty)
1026            dst.specialty.add(i.copy());
1027        };
1028        dst.appointmentType = appointmentType == null ? null : appointmentType.copy();
1029        dst.schedule = schedule == null ? null : schedule.copy();
1030        dst.status = status == null ? null : status.copy();
1031        dst.start = start == null ? null : start.copy();
1032        dst.end = end == null ? null : end.copy();
1033        dst.overbooked = overbooked == null ? null : overbooked.copy();
1034        dst.comment = comment == null ? null : comment.copy();
1035      }
1036
1037      protected Slot typedCopy() {
1038        return copy();
1039      }
1040
1041      @Override
1042      public boolean equalsDeep(Base other_) {
1043        if (!super.equalsDeep(other_))
1044          return false;
1045        if (!(other_ instanceof Slot))
1046          return false;
1047        Slot o = (Slot) other_;
1048        return compareDeep(identifier, o.identifier, true) && compareDeep(serviceCategory, o.serviceCategory, true)
1049           && compareDeep(serviceType, o.serviceType, true) && compareDeep(specialty, o.specialty, true) && compareDeep(appointmentType, o.appointmentType, true)
1050           && compareDeep(schedule, o.schedule, true) && compareDeep(status, o.status, true) && compareDeep(start, o.start, true)
1051           && compareDeep(end, o.end, true) && compareDeep(overbooked, o.overbooked, true) && compareDeep(comment, o.comment, true)
1052          ;
1053      }
1054
1055      @Override
1056      public boolean equalsShallow(Base other_) {
1057        if (!super.equalsShallow(other_))
1058          return false;
1059        if (!(other_ instanceof Slot))
1060          return false;
1061        Slot o = (Slot) other_;
1062        return compareValues(status, o.status, true) && compareValues(start, o.start, true) && compareValues(end, o.end, true)
1063           && compareValues(overbooked, o.overbooked, true) && compareValues(comment, o.comment, true);
1064      }
1065
1066      public boolean isEmpty() {
1067        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, serviceCategory
1068          , serviceType, specialty, appointmentType, schedule, status, start, end, overbooked
1069          , comment);
1070      }
1071
1072  @Override
1073  public ResourceType getResourceType() {
1074    return ResourceType.Slot;
1075   }
1076
1077 /**
1078   * Search parameter: <b>appointment-type</b>
1079   * <p>
1080   * Description: <b>The style of appointment or patient that may be booked in the slot (not service type)</b><br>
1081   * Type: <b>token</b><br>
1082   * Path: <b>Slot.appointmentType</b><br>
1083   * </p>
1084   */
1085  @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" )
1086  public static final String SP_APPOINTMENT_TYPE = "appointment-type";
1087 /**
1088   * <b>Fluent Client</b> search parameter constant for <b>appointment-type</b>
1089   * <p>
1090   * Description: <b>The style of appointment or patient that may be booked in the slot (not service type)</b><br>
1091   * Type: <b>token</b><br>
1092   * Path: <b>Slot.appointmentType</b><br>
1093   * </p>
1094   */
1095  public static final ca.uhn.fhir.rest.gclient.TokenClientParam APPOINTMENT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_APPOINTMENT_TYPE);
1096
1097 /**
1098   * Search parameter: <b>identifier</b>
1099   * <p>
1100   * Description: <b>A Slot Identifier</b><br>
1101   * Type: <b>token</b><br>
1102   * Path: <b>Slot.identifier</b><br>
1103   * </p>
1104   */
1105  @SearchParamDefinition(name="identifier", path="Slot.identifier", description="A Slot Identifier", type="token" )
1106  public static final String SP_IDENTIFIER = "identifier";
1107 /**
1108   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1109   * <p>
1110   * Description: <b>A Slot Identifier</b><br>
1111   * Type: <b>token</b><br>
1112   * Path: <b>Slot.identifier</b><br>
1113   * </p>
1114   */
1115  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1116
1117 /**
1118   * Search parameter: <b>schedule</b>
1119   * <p>
1120   * Description: <b>The Schedule Resource that we are seeking a slot within</b><br>
1121   * Type: <b>reference</b><br>
1122   * Path: <b>Slot.schedule</b><br>
1123   * </p>
1124   */
1125  @SearchParamDefinition(name="schedule", path="Slot.schedule", description="The Schedule Resource that we are seeking a slot within", type="reference", target={Schedule.class } )
1126  public static final String SP_SCHEDULE = "schedule";
1127 /**
1128   * <b>Fluent Client</b> search parameter constant for <b>schedule</b>
1129   * <p>
1130   * Description: <b>The Schedule Resource that we are seeking a slot within</b><br>
1131   * Type: <b>reference</b><br>
1132   * Path: <b>Slot.schedule</b><br>
1133   * </p>
1134   */
1135  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SCHEDULE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SCHEDULE);
1136
1137/**
1138   * Constant for fluent queries to be used to add include statements. Specifies
1139   * the path value of "<b>Slot:schedule</b>".
1140   */
1141  public static final ca.uhn.fhir.model.api.Include INCLUDE_SCHEDULE = new ca.uhn.fhir.model.api.Include("Slot:schedule").toLocked();
1142
1143 /**
1144   * Search parameter: <b>service-category</b>
1145   * <p>
1146   * Description: <b>A broad categorization of the service that is to be performed during this appointment</b><br>
1147   * Type: <b>token</b><br>
1148   * Path: <b>Slot.serviceCategory</b><br>
1149   * </p>
1150   */
1151  @SearchParamDefinition(name="service-category", path="Slot.serviceCategory", description="A broad categorization of the service that is to be performed during this appointment", type="token" )
1152  public static final String SP_SERVICE_CATEGORY = "service-category";
1153 /**
1154   * <b>Fluent Client</b> search parameter constant for <b>service-category</b>
1155   * <p>
1156   * Description: <b>A broad categorization of the service that is to be performed during this appointment</b><br>
1157   * Type: <b>token</b><br>
1158   * Path: <b>Slot.serviceCategory</b><br>
1159   * </p>
1160   */
1161  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SERVICE_CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SERVICE_CATEGORY);
1162
1163 /**
1164   * Search parameter: <b>service-type</b>
1165   * <p>
1166   * Description: <b>The type of appointments that can be booked into the slot</b><br>
1167   * Type: <b>token</b><br>
1168   * Path: <b>Slot.serviceType</b><br>
1169   * </p>
1170   */
1171  @SearchParamDefinition(name="service-type", path="Slot.serviceType", description="The type of appointments that can be booked into the slot", type="token" )
1172  public static final String SP_SERVICE_TYPE = "service-type";
1173 /**
1174   * <b>Fluent Client</b> search parameter constant for <b>service-type</b>
1175   * <p>
1176   * Description: <b>The type of appointments that can be booked into the slot</b><br>
1177   * Type: <b>token</b><br>
1178   * Path: <b>Slot.serviceType</b><br>
1179   * </p>
1180   */
1181  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SERVICE_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SERVICE_TYPE);
1182
1183 /**
1184   * Search parameter: <b>specialty</b>
1185   * <p>
1186   * Description: <b>The specialty of a practitioner that would be required to perform the service requested in this appointment</b><br>
1187   * Type: <b>token</b><br>
1188   * Path: <b>Slot.specialty</b><br>
1189   * </p>
1190   */
1191  @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" )
1192  public static final String SP_SPECIALTY = "specialty";
1193 /**
1194   * <b>Fluent Client</b> search parameter constant for <b>specialty</b>
1195   * <p>
1196   * Description: <b>The specialty of a practitioner that would be required to perform the service requested in this appointment</b><br>
1197   * Type: <b>token</b><br>
1198   * Path: <b>Slot.specialty</b><br>
1199   * </p>
1200   */
1201  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SPECIALTY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SPECIALTY);
1202
1203 /**
1204   * Search parameter: <b>start</b>
1205   * <p>
1206   * Description: <b>Appointment date/time.</b><br>
1207   * Type: <b>date</b><br>
1208   * Path: <b>Slot.start</b><br>
1209   * </p>
1210   */
1211  @SearchParamDefinition(name="start", path="Slot.start", description="Appointment date/time.", type="date" )
1212  public static final String SP_START = "start";
1213 /**
1214   * <b>Fluent Client</b> search parameter constant for <b>start</b>
1215   * <p>
1216   * Description: <b>Appointment date/time.</b><br>
1217   * Type: <b>date</b><br>
1218   * Path: <b>Slot.start</b><br>
1219   * </p>
1220   */
1221  public static final ca.uhn.fhir.rest.gclient.DateClientParam START = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_START);
1222
1223 /**
1224   * Search parameter: <b>status</b>
1225   * <p>
1226   * Description: <b>The free/busy status of the appointment</b><br>
1227   * Type: <b>token</b><br>
1228   * Path: <b>Slot.status</b><br>
1229   * </p>
1230   */
1231  @SearchParamDefinition(name="status", path="Slot.status", description="The free/busy status of the appointment", type="token" )
1232  public static final String SP_STATUS = "status";
1233 /**
1234   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1235   * <p>
1236   * Description: <b>The free/busy status of the appointment</b><br>
1237   * Type: <b>token</b><br>
1238   * Path: <b>Slot.status</b><br>
1239   * </p>
1240   */
1241  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1242
1243
1244}
1245