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