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