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