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