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