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