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