001package org.hl7.fhir.dstu3.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Mon, Apr 17, 2017 17:38-0400 for FHIR v3.0.1
033
034import java.util.*;
035
036import java.math.*;
037import org.hl7.fhir.utilities.Utilities;
038import ca.uhn.fhir.model.api.annotation.ResourceDef;
039import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
040import ca.uhn.fhir.model.api.annotation.Child;
041import ca.uhn.fhir.model.api.annotation.ChildOrder;
042import ca.uhn.fhir.model.api.annotation.Description;
043import ca.uhn.fhir.model.api.annotation.Block;
044import org.hl7.fhir.instance.model.api.*;
045import org.hl7.fhir.exceptions.FHIRException;
046/**
047 * Details and position information for a physical place where services are provided  and resources and participants may be stored, found, contained or accommodated.
048 */
049@ResourceDef(name="Location", profile="http://hl7.org/fhir/Profile/Location")
050public class Location extends DomainResource {
051
052    public enum LocationStatus {
053        /**
054         * The location is operational.
055         */
056        ACTIVE, 
057        /**
058         * The location is temporarily closed.
059         */
060        SUSPENDED, 
061        /**
062         * The location is no longer used.
063         */
064        INACTIVE, 
065        /**
066         * added to help the parsers with the generic types
067         */
068        NULL;
069        public static LocationStatus fromCode(String codeString) throws FHIRException {
070            if (codeString == null || "".equals(codeString))
071                return null;
072        if ("active".equals(codeString))
073          return ACTIVE;
074        if ("suspended".equals(codeString))
075          return SUSPENDED;
076        if ("inactive".equals(codeString))
077          return INACTIVE;
078        if (Configuration.isAcceptInvalidEnums())
079          return null;
080        else
081          throw new FHIRException("Unknown LocationStatus code '"+codeString+"'");
082        }
083        public String toCode() {
084          switch (this) {
085            case ACTIVE: return "active";
086            case SUSPENDED: return "suspended";
087            case INACTIVE: return "inactive";
088            default: return "?";
089          }
090        }
091        public String getSystem() {
092          switch (this) {
093            case ACTIVE: return "http://hl7.org/fhir/location-status";
094            case SUSPENDED: return "http://hl7.org/fhir/location-status";
095            case INACTIVE: return "http://hl7.org/fhir/location-status";
096            default: return "?";
097          }
098        }
099        public String getDefinition() {
100          switch (this) {
101            case ACTIVE: return "The location is operational.";
102            case SUSPENDED: return "The location is temporarily closed.";
103            case INACTIVE: return "The location is no longer used.";
104            default: return "?";
105          }
106        }
107        public String getDisplay() {
108          switch (this) {
109            case ACTIVE: return "Active";
110            case SUSPENDED: return "Suspended";
111            case INACTIVE: return "Inactive";
112            default: return "?";
113          }
114        }
115    }
116
117  public static class LocationStatusEnumFactory implements EnumFactory<LocationStatus> {
118    public LocationStatus fromCode(String codeString) throws IllegalArgumentException {
119      if (codeString == null || "".equals(codeString))
120            if (codeString == null || "".equals(codeString))
121                return null;
122        if ("active".equals(codeString))
123          return LocationStatus.ACTIVE;
124        if ("suspended".equals(codeString))
125          return LocationStatus.SUSPENDED;
126        if ("inactive".equals(codeString))
127          return LocationStatus.INACTIVE;
128        throw new IllegalArgumentException("Unknown LocationStatus code '"+codeString+"'");
129        }
130        public Enumeration<LocationStatus> fromType(Base code) throws FHIRException {
131          if (code == null)
132            return null;
133          if (code.isEmpty())
134            return new Enumeration<LocationStatus>(this);
135          String codeString = ((PrimitiveType) code).asStringValue();
136          if (codeString == null || "".equals(codeString))
137            return null;
138        if ("active".equals(codeString))
139          return new Enumeration<LocationStatus>(this, LocationStatus.ACTIVE);
140        if ("suspended".equals(codeString))
141          return new Enumeration<LocationStatus>(this, LocationStatus.SUSPENDED);
142        if ("inactive".equals(codeString))
143          return new Enumeration<LocationStatus>(this, LocationStatus.INACTIVE);
144        throw new FHIRException("Unknown LocationStatus code '"+codeString+"'");
145        }
146    public String toCode(LocationStatus code) {
147      if (code == LocationStatus.ACTIVE)
148        return "active";
149      if (code == LocationStatus.SUSPENDED)
150        return "suspended";
151      if (code == LocationStatus.INACTIVE)
152        return "inactive";
153      return "?";
154      }
155    public String toSystem(LocationStatus code) {
156      return code.getSystem();
157      }
158    }
159
160    public enum LocationMode {
161        /**
162         * The Location resource represents a specific instance of a location (e.g. Operating Theatre 1A).
163         */
164        INSTANCE, 
165        /**
166         * The Location represents a class of locations (e.g. Any Operating Theatre) although this class of locations could be constrained within a specific boundary (such as organization, or parent location, address etc.).
167         */
168        KIND, 
169        /**
170         * added to help the parsers with the generic types
171         */
172        NULL;
173        public static LocationMode fromCode(String codeString) throws FHIRException {
174            if (codeString == null || "".equals(codeString))
175                return null;
176        if ("instance".equals(codeString))
177          return INSTANCE;
178        if ("kind".equals(codeString))
179          return KIND;
180        if (Configuration.isAcceptInvalidEnums())
181          return null;
182        else
183          throw new FHIRException("Unknown LocationMode code '"+codeString+"'");
184        }
185        public String toCode() {
186          switch (this) {
187            case INSTANCE: return "instance";
188            case KIND: return "kind";
189            default: return "?";
190          }
191        }
192        public String getSystem() {
193          switch (this) {
194            case INSTANCE: return "http://hl7.org/fhir/location-mode";
195            case KIND: return "http://hl7.org/fhir/location-mode";
196            default: return "?";
197          }
198        }
199        public String getDefinition() {
200          switch (this) {
201            case INSTANCE: return "The Location resource represents a specific instance of a location (e.g. Operating Theatre 1A).";
202            case KIND: return "The Location represents a class of locations (e.g. Any Operating Theatre) although this class of locations could be constrained within a specific boundary (such as organization, or parent location, address etc.).";
203            default: return "?";
204          }
205        }
206        public String getDisplay() {
207          switch (this) {
208            case INSTANCE: return "Instance";
209            case KIND: return "Kind";
210            default: return "?";
211          }
212        }
213    }
214
215  public static class LocationModeEnumFactory implements EnumFactory<LocationMode> {
216    public LocationMode fromCode(String codeString) throws IllegalArgumentException {
217      if (codeString == null || "".equals(codeString))
218            if (codeString == null || "".equals(codeString))
219                return null;
220        if ("instance".equals(codeString))
221          return LocationMode.INSTANCE;
222        if ("kind".equals(codeString))
223          return LocationMode.KIND;
224        throw new IllegalArgumentException("Unknown LocationMode code '"+codeString+"'");
225        }
226        public Enumeration<LocationMode> fromType(Base code) throws FHIRException {
227          if (code == null)
228            return null;
229          if (code.isEmpty())
230            return new Enumeration<LocationMode>(this);
231          String codeString = ((PrimitiveType) code).asStringValue();
232          if (codeString == null || "".equals(codeString))
233            return null;
234        if ("instance".equals(codeString))
235          return new Enumeration<LocationMode>(this, LocationMode.INSTANCE);
236        if ("kind".equals(codeString))
237          return new Enumeration<LocationMode>(this, LocationMode.KIND);
238        throw new FHIRException("Unknown LocationMode code '"+codeString+"'");
239        }
240    public String toCode(LocationMode code) {
241      if (code == LocationMode.INSTANCE)
242        return "instance";
243      if (code == LocationMode.KIND)
244        return "kind";
245      return "?";
246      }
247    public String toSystem(LocationMode code) {
248      return code.getSystem();
249      }
250    }
251
252    @Block()
253    public static class LocationPositionComponent extends BackboneElement implements IBaseBackboneElement {
254        /**
255         * Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below).
256         */
257        @Child(name = "longitude", type = {DecimalType.class}, order=1, min=1, max=1, modifier=false, summary=false)
258        @Description(shortDefinition="Longitude with WGS84 datum", formalDefinition="Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below)." )
259        protected DecimalType longitude;
260
261        /**
262         * Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below).
263         */
264        @Child(name = "latitude", type = {DecimalType.class}, order=2, min=1, max=1, modifier=false, summary=false)
265        @Description(shortDefinition="Latitude with WGS84 datum", formalDefinition="Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below)." )
266        protected DecimalType latitude;
267
268        /**
269         * Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below).
270         */
271        @Child(name = "altitude", type = {DecimalType.class}, order=3, min=0, max=1, modifier=false, summary=false)
272        @Description(shortDefinition="Altitude with WGS84 datum", formalDefinition="Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below)." )
273        protected DecimalType altitude;
274
275        private static final long serialVersionUID = -74276134L;
276
277    /**
278     * Constructor
279     */
280      public LocationPositionComponent() {
281        super();
282      }
283
284    /**
285     * Constructor
286     */
287      public LocationPositionComponent(DecimalType longitude, DecimalType latitude) {
288        super();
289        this.longitude = longitude;
290        this.latitude = latitude;
291      }
292
293        /**
294         * @return {@link #longitude} (Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below).). This is the underlying object with id, value and extensions. The accessor "getLongitude" gives direct access to the value
295         */
296        public DecimalType getLongitudeElement() { 
297          if (this.longitude == null)
298            if (Configuration.errorOnAutoCreate())
299              throw new Error("Attempt to auto-create LocationPositionComponent.longitude");
300            else if (Configuration.doAutoCreate())
301              this.longitude = new DecimalType(); // bb
302          return this.longitude;
303        }
304
305        public boolean hasLongitudeElement() { 
306          return this.longitude != null && !this.longitude.isEmpty();
307        }
308
309        public boolean hasLongitude() { 
310          return this.longitude != null && !this.longitude.isEmpty();
311        }
312
313        /**
314         * @param value {@link #longitude} (Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below).). This is the underlying object with id, value and extensions. The accessor "getLongitude" gives direct access to the value
315         */
316        public LocationPositionComponent setLongitudeElement(DecimalType value) { 
317          this.longitude = value;
318          return this;
319        }
320
321        /**
322         * @return Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below).
323         */
324        public BigDecimal getLongitude() { 
325          return this.longitude == null ? null : this.longitude.getValue();
326        }
327
328        /**
329         * @param value Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below).
330         */
331        public LocationPositionComponent setLongitude(BigDecimal value) { 
332            if (this.longitude == null)
333              this.longitude = new DecimalType();
334            this.longitude.setValue(value);
335          return this;
336        }
337
338        /**
339         * @param value Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below).
340         */
341        public LocationPositionComponent setLongitude(long value) { 
342              this.longitude = new DecimalType();
343            this.longitude.setValue(value);
344          return this;
345        }
346
347        /**
348         * @param value Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below).
349         */
350        public LocationPositionComponent setLongitude(double value) { 
351              this.longitude = new DecimalType();
352            this.longitude.setValue(value);
353          return this;
354        }
355
356        /**
357         * @return {@link #latitude} (Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below).). This is the underlying object with id, value and extensions. The accessor "getLatitude" gives direct access to the value
358         */
359        public DecimalType getLatitudeElement() { 
360          if (this.latitude == null)
361            if (Configuration.errorOnAutoCreate())
362              throw new Error("Attempt to auto-create LocationPositionComponent.latitude");
363            else if (Configuration.doAutoCreate())
364              this.latitude = new DecimalType(); // bb
365          return this.latitude;
366        }
367
368        public boolean hasLatitudeElement() { 
369          return this.latitude != null && !this.latitude.isEmpty();
370        }
371
372        public boolean hasLatitude() { 
373          return this.latitude != null && !this.latitude.isEmpty();
374        }
375
376        /**
377         * @param value {@link #latitude} (Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below).). This is the underlying object with id, value and extensions. The accessor "getLatitude" gives direct access to the value
378         */
379        public LocationPositionComponent setLatitudeElement(DecimalType value) { 
380          this.latitude = value;
381          return this;
382        }
383
384        /**
385         * @return Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below).
386         */
387        public BigDecimal getLatitude() { 
388          return this.latitude == null ? null : this.latitude.getValue();
389        }
390
391        /**
392         * @param value Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below).
393         */
394        public LocationPositionComponent setLatitude(BigDecimal value) { 
395            if (this.latitude == null)
396              this.latitude = new DecimalType();
397            this.latitude.setValue(value);
398          return this;
399        }
400
401        /**
402         * @param value Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below).
403         */
404        public LocationPositionComponent setLatitude(long value) { 
405              this.latitude = new DecimalType();
406            this.latitude.setValue(value);
407          return this;
408        }
409
410        /**
411         * @param value Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below).
412         */
413        public LocationPositionComponent setLatitude(double value) { 
414              this.latitude = new DecimalType();
415            this.latitude.setValue(value);
416          return this;
417        }
418
419        /**
420         * @return {@link #altitude} (Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below).). This is the underlying object with id, value and extensions. The accessor "getAltitude" gives direct access to the value
421         */
422        public DecimalType getAltitudeElement() { 
423          if (this.altitude == null)
424            if (Configuration.errorOnAutoCreate())
425              throw new Error("Attempt to auto-create LocationPositionComponent.altitude");
426            else if (Configuration.doAutoCreate())
427              this.altitude = new DecimalType(); // bb
428          return this.altitude;
429        }
430
431        public boolean hasAltitudeElement() { 
432          return this.altitude != null && !this.altitude.isEmpty();
433        }
434
435        public boolean hasAltitude() { 
436          return this.altitude != null && !this.altitude.isEmpty();
437        }
438
439        /**
440         * @param value {@link #altitude} (Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below).). This is the underlying object with id, value and extensions. The accessor "getAltitude" gives direct access to the value
441         */
442        public LocationPositionComponent setAltitudeElement(DecimalType value) { 
443          this.altitude = value;
444          return this;
445        }
446
447        /**
448         * @return Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below).
449         */
450        public BigDecimal getAltitude() { 
451          return this.altitude == null ? null : this.altitude.getValue();
452        }
453
454        /**
455         * @param value Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below).
456         */
457        public LocationPositionComponent setAltitude(BigDecimal value) { 
458          if (value == null)
459            this.altitude = null;
460          else {
461            if (this.altitude == null)
462              this.altitude = new DecimalType();
463            this.altitude.setValue(value);
464          }
465          return this;
466        }
467
468        /**
469         * @param value Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below).
470         */
471        public LocationPositionComponent setAltitude(long value) { 
472              this.altitude = new DecimalType();
473            this.altitude.setValue(value);
474          return this;
475        }
476
477        /**
478         * @param value Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below).
479         */
480        public LocationPositionComponent setAltitude(double value) { 
481              this.altitude = new DecimalType();
482            this.altitude.setValue(value);
483          return this;
484        }
485
486        protected void listChildren(List<Property> childrenList) {
487          super.listChildren(childrenList);
488          childrenList.add(new Property("longitude", "decimal", "Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below).", 0, java.lang.Integer.MAX_VALUE, longitude));
489          childrenList.add(new Property("latitude", "decimal", "Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below).", 0, java.lang.Integer.MAX_VALUE, latitude));
490          childrenList.add(new Property("altitude", "decimal", "Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below).", 0, java.lang.Integer.MAX_VALUE, altitude));
491        }
492
493      @Override
494      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
495        switch (hash) {
496        case 137365935: /*longitude*/ return this.longitude == null ? new Base[0] : new Base[] {this.longitude}; // DecimalType
497        case -1439978388: /*latitude*/ return this.latitude == null ? new Base[0] : new Base[] {this.latitude}; // DecimalType
498        case 2036550306: /*altitude*/ return this.altitude == null ? new Base[0] : new Base[] {this.altitude}; // DecimalType
499        default: return super.getProperty(hash, name, checkValid);
500        }
501
502      }
503
504      @Override
505      public Base setProperty(int hash, String name, Base value) throws FHIRException {
506        switch (hash) {
507        case 137365935: // longitude
508          this.longitude = castToDecimal(value); // DecimalType
509          return value;
510        case -1439978388: // latitude
511          this.latitude = castToDecimal(value); // DecimalType
512          return value;
513        case 2036550306: // altitude
514          this.altitude = castToDecimal(value); // DecimalType
515          return value;
516        default: return super.setProperty(hash, name, value);
517        }
518
519      }
520
521      @Override
522      public Base setProperty(String name, Base value) throws FHIRException {
523        if (name.equals("longitude")) {
524          this.longitude = castToDecimal(value); // DecimalType
525        } else if (name.equals("latitude")) {
526          this.latitude = castToDecimal(value); // DecimalType
527        } else if (name.equals("altitude")) {
528          this.altitude = castToDecimal(value); // DecimalType
529        } else
530          return super.setProperty(name, value);
531        return value;
532      }
533
534      @Override
535      public Base makeProperty(int hash, String name) throws FHIRException {
536        switch (hash) {
537        case 137365935:  return getLongitudeElement();
538        case -1439978388:  return getLatitudeElement();
539        case 2036550306:  return getAltitudeElement();
540        default: return super.makeProperty(hash, name);
541        }
542
543      }
544
545      @Override
546      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
547        switch (hash) {
548        case 137365935: /*longitude*/ return new String[] {"decimal"};
549        case -1439978388: /*latitude*/ return new String[] {"decimal"};
550        case 2036550306: /*altitude*/ return new String[] {"decimal"};
551        default: return super.getTypesForProperty(hash, name);
552        }
553
554      }
555
556      @Override
557      public Base addChild(String name) throws FHIRException {
558        if (name.equals("longitude")) {
559          throw new FHIRException("Cannot call addChild on a primitive type Location.longitude");
560        }
561        else if (name.equals("latitude")) {
562          throw new FHIRException("Cannot call addChild on a primitive type Location.latitude");
563        }
564        else if (name.equals("altitude")) {
565          throw new FHIRException("Cannot call addChild on a primitive type Location.altitude");
566        }
567        else
568          return super.addChild(name);
569      }
570
571      public LocationPositionComponent copy() {
572        LocationPositionComponent dst = new LocationPositionComponent();
573        copyValues(dst);
574        dst.longitude = longitude == null ? null : longitude.copy();
575        dst.latitude = latitude == null ? null : latitude.copy();
576        dst.altitude = altitude == null ? null : altitude.copy();
577        return dst;
578      }
579
580      @Override
581      public boolean equalsDeep(Base other) {
582        if (!super.equalsDeep(other))
583          return false;
584        if (!(other instanceof LocationPositionComponent))
585          return false;
586        LocationPositionComponent o = (LocationPositionComponent) other;
587        return compareDeep(longitude, o.longitude, true) && compareDeep(latitude, o.latitude, true) && compareDeep(altitude, o.altitude, true)
588          ;
589      }
590
591      @Override
592      public boolean equalsShallow(Base other) {
593        if (!super.equalsShallow(other))
594          return false;
595        if (!(other instanceof LocationPositionComponent))
596          return false;
597        LocationPositionComponent o = (LocationPositionComponent) other;
598        return compareValues(longitude, o.longitude, true) && compareValues(latitude, o.latitude, true) && compareValues(altitude, o.altitude, true)
599          ;
600      }
601
602      public boolean isEmpty() {
603        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(longitude, latitude, altitude
604          );
605      }
606
607  public String fhirType() {
608    return "Location.position";
609
610  }
611
612  }
613
614    /**
615     * Unique code or number identifying the location to its users.
616     */
617    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
618    @Description(shortDefinition="Unique code or number identifying the location to its users", formalDefinition="Unique code or number identifying the location to its users." )
619    protected List<Identifier> identifier;
620
621    /**
622     * The status property covers the general availability of the resource, not the current value which may be covered by the operationStatus, or by a schedule/slots if they are configured for the location.
623     */
624    @Child(name = "status", type = {CodeType.class}, order=1, min=0, max=1, modifier=true, summary=true)
625    @Description(shortDefinition="active | suspended | inactive", formalDefinition="The status property covers the general availability of the resource, not the current value which may be covered by the operationStatus, or by a schedule/slots if they are configured for the location." )
626    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/location-status")
627    protected Enumeration<LocationStatus> status;
628
629    /**
630     * The Operational status covers operation values most relevant to beds (but can also apply to rooms/units/chair/etc such as an isolation unit/dialisys chair). This typically covers concepts such as contamination, housekeeping and other activities like maintenance.
631     */
632    @Child(name = "operationalStatus", type = {Coding.class}, order=2, min=0, max=1, modifier=false, summary=true)
633    @Description(shortDefinition="The Operational status of the location (typically only for a bed/room)", formalDefinition="The Operational status covers operation values most relevant to beds (but can also apply to rooms/units/chair/etc such as an isolation unit/dialisys chair). This typically covers concepts such as contamination, housekeeping and other activities like maintenance." )
634    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/v2-0116")
635    protected Coding operationalStatus;
636
637    /**
638     * Name of the location as used by humans. Does not need to be unique.
639     */
640    @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
641    @Description(shortDefinition="Name of the location as used by humans", formalDefinition="Name of the location as used by humans. Does not need to be unique." )
642    protected StringType name;
643
644    /**
645     * A list of alternate names that the location is known as, or was known as in the past.
646     */
647    @Child(name = "alias", type = {StringType.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
648    @Description(shortDefinition="A list of alternate names that the location is known as, or was known as in the past", formalDefinition="A list of alternate names that the location is known as, or was known as in the past." )
649    protected List<StringType> alias;
650
651    /**
652     * Description of the Location, which helps in finding or referencing the place.
653     */
654    @Child(name = "description", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=true)
655    @Description(shortDefinition="Additional details about the location that could be displayed as further information to identify the location beyond its name", formalDefinition="Description of the Location, which helps in finding or referencing the place." )
656    protected StringType description;
657
658    /**
659     * Indicates whether a resource instance represents a specific location or a class of locations.
660     */
661    @Child(name = "mode", type = {CodeType.class}, order=6, min=0, max=1, modifier=true, summary=true)
662    @Description(shortDefinition="instance | kind", formalDefinition="Indicates whether a resource instance represents a specific location or a class of locations." )
663    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/location-mode")
664    protected Enumeration<LocationMode> mode;
665
666    /**
667     * Indicates the type of function performed at the location.
668     */
669    @Child(name = "type", type = {CodeableConcept.class}, order=7, min=0, max=1, modifier=false, summary=true)
670    @Description(shortDefinition="Type of function performed", formalDefinition="Indicates the type of function performed at the location." )
671    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/v3-ServiceDeliveryLocationRoleType")
672    protected CodeableConcept type;
673
674    /**
675     * The contact details of communication devices available at the location. This can include phone numbers, fax numbers, mobile numbers, email addresses and web sites.
676     */
677    @Child(name = "telecom", type = {ContactPoint.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
678    @Description(shortDefinition="Contact details of the location", formalDefinition="The contact details of communication devices available at the location. This can include phone numbers, fax numbers, mobile numbers, email addresses and web sites." )
679    protected List<ContactPoint> telecom;
680
681    /**
682     * Physical location.
683     */
684    @Child(name = "address", type = {Address.class}, order=9, min=0, max=1, modifier=false, summary=false)
685    @Description(shortDefinition="Physical location", formalDefinition="Physical location." )
686    protected Address address;
687
688    /**
689     * Physical form of the location, e.g. building, room, vehicle, road.
690     */
691    @Child(name = "physicalType", type = {CodeableConcept.class}, order=10, min=0, max=1, modifier=false, summary=true)
692    @Description(shortDefinition="Physical form of the location", formalDefinition="Physical form of the location, e.g. building, room, vehicle, road." )
693    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/location-physical-type")
694    protected CodeableConcept physicalType;
695
696    /**
697     * The absolute geographic location of the Location, expressed using the WGS84 datum (This is the same co-ordinate system used in KML).
698     */
699    @Child(name = "position", type = {}, order=11, min=0, max=1, modifier=false, summary=false)
700    @Description(shortDefinition="The absolute geographic location", formalDefinition="The absolute geographic location of the Location, expressed using the WGS84 datum (This is the same co-ordinate system used in KML)." )
701    protected LocationPositionComponent position;
702
703    /**
704     * The organization responsible for the provisioning and upkeep of the location.
705     */
706    @Child(name = "managingOrganization", type = {Organization.class}, order=12, min=0, max=1, modifier=false, summary=true)
707    @Description(shortDefinition="Organization responsible for provisioning and upkeep", formalDefinition="The organization responsible for the provisioning and upkeep of the location." )
708    protected Reference managingOrganization;
709
710    /**
711     * The actual object that is the target of the reference (The organization responsible for the provisioning and upkeep of the location.)
712     */
713    protected Organization managingOrganizationTarget;
714
715    /**
716     * Another Location which this Location is physically part of.
717     */
718    @Child(name = "partOf", type = {Location.class}, order=13, min=0, max=1, modifier=false, summary=false)
719    @Description(shortDefinition="Another Location this one is physically part of", formalDefinition="Another Location which this Location is physically part of." )
720    protected Reference partOf;
721
722    /**
723     * The actual object that is the target of the reference (Another Location which this Location is physically part of.)
724     */
725    protected Location partOfTarget;
726
727    /**
728     * Technical endpoints providing access to services operated for the location.
729     */
730    @Child(name = "endpoint", type = {Endpoint.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
731    @Description(shortDefinition="Technical endpoints providing access to services operated for the location", formalDefinition="Technical endpoints providing access to services operated for the location." )
732    protected List<Reference> endpoint;
733    /**
734     * The actual objects that are the target of the reference (Technical endpoints providing access to services operated for the location.)
735     */
736    protected List<Endpoint> endpointTarget;
737
738
739    private static final long serialVersionUID = -1603579027L;
740
741  /**
742   * Constructor
743   */
744    public Location() {
745      super();
746    }
747
748    /**
749     * @return {@link #identifier} (Unique code or number identifying the location to its users.)
750     */
751    public List<Identifier> getIdentifier() { 
752      if (this.identifier == null)
753        this.identifier = new ArrayList<Identifier>();
754      return this.identifier;
755    }
756
757    /**
758     * @return Returns a reference to <code>this</code> for easy method chaining
759     */
760    public Location setIdentifier(List<Identifier> theIdentifier) { 
761      this.identifier = theIdentifier;
762      return this;
763    }
764
765    public boolean hasIdentifier() { 
766      if (this.identifier == null)
767        return false;
768      for (Identifier item : this.identifier)
769        if (!item.isEmpty())
770          return true;
771      return false;
772    }
773
774    public Identifier addIdentifier() { //3
775      Identifier t = new Identifier();
776      if (this.identifier == null)
777        this.identifier = new ArrayList<Identifier>();
778      this.identifier.add(t);
779      return t;
780    }
781
782    public Location addIdentifier(Identifier t) { //3
783      if (t == null)
784        return this;
785      if (this.identifier == null)
786        this.identifier = new ArrayList<Identifier>();
787      this.identifier.add(t);
788      return this;
789    }
790
791    /**
792     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
793     */
794    public Identifier getIdentifierFirstRep() { 
795      if (getIdentifier().isEmpty()) {
796        addIdentifier();
797      }
798      return getIdentifier().get(0);
799    }
800
801    /**
802     * @return {@link #status} (The status property covers the general availability of the resource, not the current value which may be covered by the operationStatus, or by a schedule/slots if they are configured for the location.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
803     */
804    public Enumeration<LocationStatus> getStatusElement() { 
805      if (this.status == null)
806        if (Configuration.errorOnAutoCreate())
807          throw new Error("Attempt to auto-create Location.status");
808        else if (Configuration.doAutoCreate())
809          this.status = new Enumeration<LocationStatus>(new LocationStatusEnumFactory()); // bb
810      return this.status;
811    }
812
813    public boolean hasStatusElement() { 
814      return this.status != null && !this.status.isEmpty();
815    }
816
817    public boolean hasStatus() { 
818      return this.status != null && !this.status.isEmpty();
819    }
820
821    /**
822     * @param value {@link #status} (The status property covers the general availability of the resource, not the current value which may be covered by the operationStatus, or by a schedule/slots if they are configured for the location.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
823     */
824    public Location setStatusElement(Enumeration<LocationStatus> value) { 
825      this.status = value;
826      return this;
827    }
828
829    /**
830     * @return The status property covers the general availability of the resource, not the current value which may be covered by the operationStatus, or by a schedule/slots if they are configured for the location.
831     */
832    public LocationStatus getStatus() { 
833      return this.status == null ? null : this.status.getValue();
834    }
835
836    /**
837     * @param value The status property covers the general availability of the resource, not the current value which may be covered by the operationStatus, or by a schedule/slots if they are configured for the location.
838     */
839    public Location setStatus(LocationStatus value) { 
840      if (value == null)
841        this.status = null;
842      else {
843        if (this.status == null)
844          this.status = new Enumeration<LocationStatus>(new LocationStatusEnumFactory());
845        this.status.setValue(value);
846      }
847      return this;
848    }
849
850    /**
851     * @return {@link #operationalStatus} (The Operational status covers operation values most relevant to beds (but can also apply to rooms/units/chair/etc such as an isolation unit/dialisys chair). This typically covers concepts such as contamination, housekeeping and other activities like maintenance.)
852     */
853    public Coding getOperationalStatus() { 
854      if (this.operationalStatus == null)
855        if (Configuration.errorOnAutoCreate())
856          throw new Error("Attempt to auto-create Location.operationalStatus");
857        else if (Configuration.doAutoCreate())
858          this.operationalStatus = new Coding(); // cc
859      return this.operationalStatus;
860    }
861
862    public boolean hasOperationalStatus() { 
863      return this.operationalStatus != null && !this.operationalStatus.isEmpty();
864    }
865
866    /**
867     * @param value {@link #operationalStatus} (The Operational status covers operation values most relevant to beds (but can also apply to rooms/units/chair/etc such as an isolation unit/dialisys chair). This typically covers concepts such as contamination, housekeeping and other activities like maintenance.)
868     */
869    public Location setOperationalStatus(Coding value) { 
870      this.operationalStatus = value;
871      return this;
872    }
873
874    /**
875     * @return {@link #name} (Name of the location as used by humans. Does not need to be unique.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
876     */
877    public StringType getNameElement() { 
878      if (this.name == null)
879        if (Configuration.errorOnAutoCreate())
880          throw new Error("Attempt to auto-create Location.name");
881        else if (Configuration.doAutoCreate())
882          this.name = new StringType(); // bb
883      return this.name;
884    }
885
886    public boolean hasNameElement() { 
887      return this.name != null && !this.name.isEmpty();
888    }
889
890    public boolean hasName() { 
891      return this.name != null && !this.name.isEmpty();
892    }
893
894    /**
895     * @param value {@link #name} (Name of the location as used by humans. Does not need to be unique.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
896     */
897    public Location setNameElement(StringType value) { 
898      this.name = value;
899      return this;
900    }
901
902    /**
903     * @return Name of the location as used by humans. Does not need to be unique.
904     */
905    public String getName() { 
906      return this.name == null ? null : this.name.getValue();
907    }
908
909    /**
910     * @param value Name of the location as used by humans. Does not need to be unique.
911     */
912    public Location setName(String value) { 
913      if (Utilities.noString(value))
914        this.name = null;
915      else {
916        if (this.name == null)
917          this.name = new StringType();
918        this.name.setValue(value);
919      }
920      return this;
921    }
922
923    /**
924     * @return {@link #alias} (A list of alternate names that the location is known as, or was known as in the past.)
925     */
926    public List<StringType> getAlias() { 
927      if (this.alias == null)
928        this.alias = new ArrayList<StringType>();
929      return this.alias;
930    }
931
932    /**
933     * @return Returns a reference to <code>this</code> for easy method chaining
934     */
935    public Location setAlias(List<StringType> theAlias) { 
936      this.alias = theAlias;
937      return this;
938    }
939
940    public boolean hasAlias() { 
941      if (this.alias == null)
942        return false;
943      for (StringType item : this.alias)
944        if (!item.isEmpty())
945          return true;
946      return false;
947    }
948
949    /**
950     * @return {@link #alias} (A list of alternate names that the location is known as, or was known as in the past.)
951     */
952    public StringType addAliasElement() {//2 
953      StringType t = new StringType();
954      if (this.alias == null)
955        this.alias = new ArrayList<StringType>();
956      this.alias.add(t);
957      return t;
958    }
959
960    /**
961     * @param value {@link #alias} (A list of alternate names that the location is known as, or was known as in the past.)
962     */
963    public Location addAlias(String value) { //1
964      StringType t = new StringType();
965      t.setValue(value);
966      if (this.alias == null)
967        this.alias = new ArrayList<StringType>();
968      this.alias.add(t);
969      return this;
970    }
971
972    /**
973     * @param value {@link #alias} (A list of alternate names that the location is known as, or was known as in the past.)
974     */
975    public boolean hasAlias(String value) { 
976      if (this.alias == null)
977        return false;
978      for (StringType v : this.alias)
979        if (v.equals(value)) // string
980          return true;
981      return false;
982    }
983
984    /**
985     * @return {@link #description} (Description of the Location, which helps in finding or referencing the place.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
986     */
987    public StringType getDescriptionElement() { 
988      if (this.description == null)
989        if (Configuration.errorOnAutoCreate())
990          throw new Error("Attempt to auto-create Location.description");
991        else if (Configuration.doAutoCreate())
992          this.description = new StringType(); // bb
993      return this.description;
994    }
995
996    public boolean hasDescriptionElement() { 
997      return this.description != null && !this.description.isEmpty();
998    }
999
1000    public boolean hasDescription() { 
1001      return this.description != null && !this.description.isEmpty();
1002    }
1003
1004    /**
1005     * @param value {@link #description} (Description of the Location, which helps in finding or referencing the place.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1006     */
1007    public Location setDescriptionElement(StringType value) { 
1008      this.description = value;
1009      return this;
1010    }
1011
1012    /**
1013     * @return Description of the Location, which helps in finding or referencing the place.
1014     */
1015    public String getDescription() { 
1016      return this.description == null ? null : this.description.getValue();
1017    }
1018
1019    /**
1020     * @param value Description of the Location, which helps in finding or referencing the place.
1021     */
1022    public Location setDescription(String value) { 
1023      if (Utilities.noString(value))
1024        this.description = null;
1025      else {
1026        if (this.description == null)
1027          this.description = new StringType();
1028        this.description.setValue(value);
1029      }
1030      return this;
1031    }
1032
1033    /**
1034     * @return {@link #mode} (Indicates whether a resource instance represents a specific location or a class of locations.). This is the underlying object with id, value and extensions. The accessor "getMode" gives direct access to the value
1035     */
1036    public Enumeration<LocationMode> getModeElement() { 
1037      if (this.mode == null)
1038        if (Configuration.errorOnAutoCreate())
1039          throw new Error("Attempt to auto-create Location.mode");
1040        else if (Configuration.doAutoCreate())
1041          this.mode = new Enumeration<LocationMode>(new LocationModeEnumFactory()); // bb
1042      return this.mode;
1043    }
1044
1045    public boolean hasModeElement() { 
1046      return this.mode != null && !this.mode.isEmpty();
1047    }
1048
1049    public boolean hasMode() { 
1050      return this.mode != null && !this.mode.isEmpty();
1051    }
1052
1053    /**
1054     * @param value {@link #mode} (Indicates whether a resource instance represents a specific location or a class of locations.). This is the underlying object with id, value and extensions. The accessor "getMode" gives direct access to the value
1055     */
1056    public Location setModeElement(Enumeration<LocationMode> value) { 
1057      this.mode = value;
1058      return this;
1059    }
1060
1061    /**
1062     * @return Indicates whether a resource instance represents a specific location or a class of locations.
1063     */
1064    public LocationMode getMode() { 
1065      return this.mode == null ? null : this.mode.getValue();
1066    }
1067
1068    /**
1069     * @param value Indicates whether a resource instance represents a specific location or a class of locations.
1070     */
1071    public Location setMode(LocationMode value) { 
1072      if (value == null)
1073        this.mode = null;
1074      else {
1075        if (this.mode == null)
1076          this.mode = new Enumeration<LocationMode>(new LocationModeEnumFactory());
1077        this.mode.setValue(value);
1078      }
1079      return this;
1080    }
1081
1082    /**
1083     * @return {@link #type} (Indicates the type of function performed at the location.)
1084     */
1085    public CodeableConcept getType() { 
1086      if (this.type == null)
1087        if (Configuration.errorOnAutoCreate())
1088          throw new Error("Attempt to auto-create Location.type");
1089        else if (Configuration.doAutoCreate())
1090          this.type = new CodeableConcept(); // cc
1091      return this.type;
1092    }
1093
1094    public boolean hasType() { 
1095      return this.type != null && !this.type.isEmpty();
1096    }
1097
1098    /**
1099     * @param value {@link #type} (Indicates the type of function performed at the location.)
1100     */
1101    public Location setType(CodeableConcept value) { 
1102      this.type = value;
1103      return this;
1104    }
1105
1106    /**
1107     * @return {@link #telecom} (The contact details of communication devices available at the location. This can include phone numbers, fax numbers, mobile numbers, email addresses and web sites.)
1108     */
1109    public List<ContactPoint> getTelecom() { 
1110      if (this.telecom == null)
1111        this.telecom = new ArrayList<ContactPoint>();
1112      return this.telecom;
1113    }
1114
1115    /**
1116     * @return Returns a reference to <code>this</code> for easy method chaining
1117     */
1118    public Location setTelecom(List<ContactPoint> theTelecom) { 
1119      this.telecom = theTelecom;
1120      return this;
1121    }
1122
1123    public boolean hasTelecom() { 
1124      if (this.telecom == null)
1125        return false;
1126      for (ContactPoint item : this.telecom)
1127        if (!item.isEmpty())
1128          return true;
1129      return false;
1130    }
1131
1132    public ContactPoint addTelecom() { //3
1133      ContactPoint t = new ContactPoint();
1134      if (this.telecom == null)
1135        this.telecom = new ArrayList<ContactPoint>();
1136      this.telecom.add(t);
1137      return t;
1138    }
1139
1140    public Location addTelecom(ContactPoint t) { //3
1141      if (t == null)
1142        return this;
1143      if (this.telecom == null)
1144        this.telecom = new ArrayList<ContactPoint>();
1145      this.telecom.add(t);
1146      return this;
1147    }
1148
1149    /**
1150     * @return The first repetition of repeating field {@link #telecom}, creating it if it does not already exist
1151     */
1152    public ContactPoint getTelecomFirstRep() { 
1153      if (getTelecom().isEmpty()) {
1154        addTelecom();
1155      }
1156      return getTelecom().get(0);
1157    }
1158
1159    /**
1160     * @return {@link #address} (Physical location.)
1161     */
1162    public Address getAddress() { 
1163      if (this.address == null)
1164        if (Configuration.errorOnAutoCreate())
1165          throw new Error("Attempt to auto-create Location.address");
1166        else if (Configuration.doAutoCreate())
1167          this.address = new Address(); // cc
1168      return this.address;
1169    }
1170
1171    public boolean hasAddress() { 
1172      return this.address != null && !this.address.isEmpty();
1173    }
1174
1175    /**
1176     * @param value {@link #address} (Physical location.)
1177     */
1178    public Location setAddress(Address value) { 
1179      this.address = value;
1180      return this;
1181    }
1182
1183    /**
1184     * @return {@link #physicalType} (Physical form of the location, e.g. building, room, vehicle, road.)
1185     */
1186    public CodeableConcept getPhysicalType() { 
1187      if (this.physicalType == null)
1188        if (Configuration.errorOnAutoCreate())
1189          throw new Error("Attempt to auto-create Location.physicalType");
1190        else if (Configuration.doAutoCreate())
1191          this.physicalType = new CodeableConcept(); // cc
1192      return this.physicalType;
1193    }
1194
1195    public boolean hasPhysicalType() { 
1196      return this.physicalType != null && !this.physicalType.isEmpty();
1197    }
1198
1199    /**
1200     * @param value {@link #physicalType} (Physical form of the location, e.g. building, room, vehicle, road.)
1201     */
1202    public Location setPhysicalType(CodeableConcept value) { 
1203      this.physicalType = value;
1204      return this;
1205    }
1206
1207    /**
1208     * @return {@link #position} (The absolute geographic location of the Location, expressed using the WGS84 datum (This is the same co-ordinate system used in KML).)
1209     */
1210    public LocationPositionComponent getPosition() { 
1211      if (this.position == null)
1212        if (Configuration.errorOnAutoCreate())
1213          throw new Error("Attempt to auto-create Location.position");
1214        else if (Configuration.doAutoCreate())
1215          this.position = new LocationPositionComponent(); // cc
1216      return this.position;
1217    }
1218
1219    public boolean hasPosition() { 
1220      return this.position != null && !this.position.isEmpty();
1221    }
1222
1223    /**
1224     * @param value {@link #position} (The absolute geographic location of the Location, expressed using the WGS84 datum (This is the same co-ordinate system used in KML).)
1225     */
1226    public Location setPosition(LocationPositionComponent value) { 
1227      this.position = value;
1228      return this;
1229    }
1230
1231    /**
1232     * @return {@link #managingOrganization} (The organization responsible for the provisioning and upkeep of the location.)
1233     */
1234    public Reference getManagingOrganization() { 
1235      if (this.managingOrganization == null)
1236        if (Configuration.errorOnAutoCreate())
1237          throw new Error("Attempt to auto-create Location.managingOrganization");
1238        else if (Configuration.doAutoCreate())
1239          this.managingOrganization = new Reference(); // cc
1240      return this.managingOrganization;
1241    }
1242
1243    public boolean hasManagingOrganization() { 
1244      return this.managingOrganization != null && !this.managingOrganization.isEmpty();
1245    }
1246
1247    /**
1248     * @param value {@link #managingOrganization} (The organization responsible for the provisioning and upkeep of the location.)
1249     */
1250    public Location setManagingOrganization(Reference value) { 
1251      this.managingOrganization = value;
1252      return this;
1253    }
1254
1255    /**
1256     * @return {@link #managingOrganization} 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 organization responsible for the provisioning and upkeep of the location.)
1257     */
1258    public Organization getManagingOrganizationTarget() { 
1259      if (this.managingOrganizationTarget == null)
1260        if (Configuration.errorOnAutoCreate())
1261          throw new Error("Attempt to auto-create Location.managingOrganization");
1262        else if (Configuration.doAutoCreate())
1263          this.managingOrganizationTarget = new Organization(); // aa
1264      return this.managingOrganizationTarget;
1265    }
1266
1267    /**
1268     * @param value {@link #managingOrganization} 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 organization responsible for the provisioning and upkeep of the location.)
1269     */
1270    public Location setManagingOrganizationTarget(Organization value) { 
1271      this.managingOrganizationTarget = value;
1272      return this;
1273    }
1274
1275    /**
1276     * @return {@link #partOf} (Another Location which this Location is physically part of.)
1277     */
1278    public Reference getPartOf() { 
1279      if (this.partOf == null)
1280        if (Configuration.errorOnAutoCreate())
1281          throw new Error("Attempt to auto-create Location.partOf");
1282        else if (Configuration.doAutoCreate())
1283          this.partOf = new Reference(); // cc
1284      return this.partOf;
1285    }
1286
1287    public boolean hasPartOf() { 
1288      return this.partOf != null && !this.partOf.isEmpty();
1289    }
1290
1291    /**
1292     * @param value {@link #partOf} (Another Location which this Location is physically part of.)
1293     */
1294    public Location setPartOf(Reference value) { 
1295      this.partOf = value;
1296      return this;
1297    }
1298
1299    /**
1300     * @return {@link #partOf} 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. (Another Location which this Location is physically part of.)
1301     */
1302    public Location getPartOfTarget() { 
1303      if (this.partOfTarget == null)
1304        if (Configuration.errorOnAutoCreate())
1305          throw new Error("Attempt to auto-create Location.partOf");
1306        else if (Configuration.doAutoCreate())
1307          this.partOfTarget = new Location(); // aa
1308      return this.partOfTarget;
1309    }
1310
1311    /**
1312     * @param value {@link #partOf} 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. (Another Location which this Location is physically part of.)
1313     */
1314    public Location setPartOfTarget(Location value) { 
1315      this.partOfTarget = value;
1316      return this;
1317    }
1318
1319    /**
1320     * @return {@link #endpoint} (Technical endpoints providing access to services operated for the location.)
1321     */
1322    public List<Reference> getEndpoint() { 
1323      if (this.endpoint == null)
1324        this.endpoint = new ArrayList<Reference>();
1325      return this.endpoint;
1326    }
1327
1328    /**
1329     * @return Returns a reference to <code>this</code> for easy method chaining
1330     */
1331    public Location setEndpoint(List<Reference> theEndpoint) { 
1332      this.endpoint = theEndpoint;
1333      return this;
1334    }
1335
1336    public boolean hasEndpoint() { 
1337      if (this.endpoint == null)
1338        return false;
1339      for (Reference item : this.endpoint)
1340        if (!item.isEmpty())
1341          return true;
1342      return false;
1343    }
1344
1345    public Reference addEndpoint() { //3
1346      Reference t = new Reference();
1347      if (this.endpoint == null)
1348        this.endpoint = new ArrayList<Reference>();
1349      this.endpoint.add(t);
1350      return t;
1351    }
1352
1353    public Location addEndpoint(Reference t) { //3
1354      if (t == null)
1355        return this;
1356      if (this.endpoint == null)
1357        this.endpoint = new ArrayList<Reference>();
1358      this.endpoint.add(t);
1359      return this;
1360    }
1361
1362    /**
1363     * @return The first repetition of repeating field {@link #endpoint}, creating it if it does not already exist
1364     */
1365    public Reference getEndpointFirstRep() { 
1366      if (getEndpoint().isEmpty()) {
1367        addEndpoint();
1368      }
1369      return getEndpoint().get(0);
1370    }
1371
1372    /**
1373     * @deprecated Use Reference#setResource(IBaseResource) instead
1374     */
1375    @Deprecated
1376    public List<Endpoint> getEndpointTarget() { 
1377      if (this.endpointTarget == null)
1378        this.endpointTarget = new ArrayList<Endpoint>();
1379      return this.endpointTarget;
1380    }
1381
1382    /**
1383     * @deprecated Use Reference#setResource(IBaseResource) instead
1384     */
1385    @Deprecated
1386    public Endpoint addEndpointTarget() { 
1387      Endpoint r = new Endpoint();
1388      if (this.endpointTarget == null)
1389        this.endpointTarget = new ArrayList<Endpoint>();
1390      this.endpointTarget.add(r);
1391      return r;
1392    }
1393
1394      protected void listChildren(List<Property> childrenList) {
1395        super.listChildren(childrenList);
1396        childrenList.add(new Property("identifier", "Identifier", "Unique code or number identifying the location to its users.", 0, java.lang.Integer.MAX_VALUE, identifier));
1397        childrenList.add(new Property("status", "code", "The status property covers the general availability of the resource, not the current value which may be covered by the operationStatus, or by a schedule/slots if they are configured for the location.", 0, java.lang.Integer.MAX_VALUE, status));
1398        childrenList.add(new Property("operationalStatus", "Coding", "The Operational status covers operation values most relevant to beds (but can also apply to rooms/units/chair/etc such as an isolation unit/dialisys chair). This typically covers concepts such as contamination, housekeeping and other activities like maintenance.", 0, java.lang.Integer.MAX_VALUE, operationalStatus));
1399        childrenList.add(new Property("name", "string", "Name of the location as used by humans. Does not need to be unique.", 0, java.lang.Integer.MAX_VALUE, name));
1400        childrenList.add(new Property("alias", "string", "A list of alternate names that the location is known as, or was known as in the past.", 0, java.lang.Integer.MAX_VALUE, alias));
1401        childrenList.add(new Property("description", "string", "Description of the Location, which helps in finding or referencing the place.", 0, java.lang.Integer.MAX_VALUE, description));
1402        childrenList.add(new Property("mode", "code", "Indicates whether a resource instance represents a specific location or a class of locations.", 0, java.lang.Integer.MAX_VALUE, mode));
1403        childrenList.add(new Property("type", "CodeableConcept", "Indicates the type of function performed at the location.", 0, java.lang.Integer.MAX_VALUE, type));
1404        childrenList.add(new Property("telecom", "ContactPoint", "The contact details of communication devices available at the location. This can include phone numbers, fax numbers, mobile numbers, email addresses and web sites.", 0, java.lang.Integer.MAX_VALUE, telecom));
1405        childrenList.add(new Property("address", "Address", "Physical location.", 0, java.lang.Integer.MAX_VALUE, address));
1406        childrenList.add(new Property("physicalType", "CodeableConcept", "Physical form of the location, e.g. building, room, vehicle, road.", 0, java.lang.Integer.MAX_VALUE, physicalType));
1407        childrenList.add(new Property("position", "", "The absolute geographic location of the Location, expressed using the WGS84 datum (This is the same co-ordinate system used in KML).", 0, java.lang.Integer.MAX_VALUE, position));
1408        childrenList.add(new Property("managingOrganization", "Reference(Organization)", "The organization responsible for the provisioning and upkeep of the location.", 0, java.lang.Integer.MAX_VALUE, managingOrganization));
1409        childrenList.add(new Property("partOf", "Reference(Location)", "Another Location which this Location is physically part of.", 0, java.lang.Integer.MAX_VALUE, partOf));
1410        childrenList.add(new Property("endpoint", "Reference(Endpoint)", "Technical endpoints providing access to services operated for the location.", 0, java.lang.Integer.MAX_VALUE, endpoint));
1411      }
1412
1413      @Override
1414      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1415        switch (hash) {
1416        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1417        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<LocationStatus>
1418        case -2103166364: /*operationalStatus*/ return this.operationalStatus == null ? new Base[0] : new Base[] {this.operationalStatus}; // Coding
1419        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
1420        case 92902992: /*alias*/ return this.alias == null ? new Base[0] : this.alias.toArray(new Base[this.alias.size()]); // StringType
1421        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1422        case 3357091: /*mode*/ return this.mode == null ? new Base[0] : new Base[] {this.mode}; // Enumeration<LocationMode>
1423        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
1424        case -1429363305: /*telecom*/ return this.telecom == null ? new Base[0] : this.telecom.toArray(new Base[this.telecom.size()]); // ContactPoint
1425        case -1147692044: /*address*/ return this.address == null ? new Base[0] : new Base[] {this.address}; // Address
1426        case -1474715471: /*physicalType*/ return this.physicalType == null ? new Base[0] : new Base[] {this.physicalType}; // CodeableConcept
1427        case 747804969: /*position*/ return this.position == null ? new Base[0] : new Base[] {this.position}; // LocationPositionComponent
1428        case -2058947787: /*managingOrganization*/ return this.managingOrganization == null ? new Base[0] : new Base[] {this.managingOrganization}; // Reference
1429        case -995410646: /*partOf*/ return this.partOf == null ? new Base[0] : new Base[] {this.partOf}; // Reference
1430        case 1741102485: /*endpoint*/ return this.endpoint == null ? new Base[0] : this.endpoint.toArray(new Base[this.endpoint.size()]); // Reference
1431        default: return super.getProperty(hash, name, checkValid);
1432        }
1433
1434      }
1435
1436      @Override
1437      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1438        switch (hash) {
1439        case -1618432855: // identifier
1440          this.getIdentifier().add(castToIdentifier(value)); // Identifier
1441          return value;
1442        case -892481550: // status
1443          value = new LocationStatusEnumFactory().fromType(castToCode(value));
1444          this.status = (Enumeration) value; // Enumeration<LocationStatus>
1445          return value;
1446        case -2103166364: // operationalStatus
1447          this.operationalStatus = castToCoding(value); // Coding
1448          return value;
1449        case 3373707: // name
1450          this.name = castToString(value); // StringType
1451          return value;
1452        case 92902992: // alias
1453          this.getAlias().add(castToString(value)); // StringType
1454          return value;
1455        case -1724546052: // description
1456          this.description = castToString(value); // StringType
1457          return value;
1458        case 3357091: // mode
1459          value = new LocationModeEnumFactory().fromType(castToCode(value));
1460          this.mode = (Enumeration) value; // Enumeration<LocationMode>
1461          return value;
1462        case 3575610: // type
1463          this.type = castToCodeableConcept(value); // CodeableConcept
1464          return value;
1465        case -1429363305: // telecom
1466          this.getTelecom().add(castToContactPoint(value)); // ContactPoint
1467          return value;
1468        case -1147692044: // address
1469          this.address = castToAddress(value); // Address
1470          return value;
1471        case -1474715471: // physicalType
1472          this.physicalType = castToCodeableConcept(value); // CodeableConcept
1473          return value;
1474        case 747804969: // position
1475          this.position = (LocationPositionComponent) value; // LocationPositionComponent
1476          return value;
1477        case -2058947787: // managingOrganization
1478          this.managingOrganization = castToReference(value); // Reference
1479          return value;
1480        case -995410646: // partOf
1481          this.partOf = castToReference(value); // Reference
1482          return value;
1483        case 1741102485: // endpoint
1484          this.getEndpoint().add(castToReference(value)); // Reference
1485          return value;
1486        default: return super.setProperty(hash, name, value);
1487        }
1488
1489      }
1490
1491      @Override
1492      public Base setProperty(String name, Base value) throws FHIRException {
1493        if (name.equals("identifier")) {
1494          this.getIdentifier().add(castToIdentifier(value));
1495        } else if (name.equals("status")) {
1496          value = new LocationStatusEnumFactory().fromType(castToCode(value));
1497          this.status = (Enumeration) value; // Enumeration<LocationStatus>
1498        } else if (name.equals("operationalStatus")) {
1499          this.operationalStatus = castToCoding(value); // Coding
1500        } else if (name.equals("name")) {
1501          this.name = castToString(value); // StringType
1502        } else if (name.equals("alias")) {
1503          this.getAlias().add(castToString(value));
1504        } else if (name.equals("description")) {
1505          this.description = castToString(value); // StringType
1506        } else if (name.equals("mode")) {
1507          value = new LocationModeEnumFactory().fromType(castToCode(value));
1508          this.mode = (Enumeration) value; // Enumeration<LocationMode>
1509        } else if (name.equals("type")) {
1510          this.type = castToCodeableConcept(value); // CodeableConcept
1511        } else if (name.equals("telecom")) {
1512          this.getTelecom().add(castToContactPoint(value));
1513        } else if (name.equals("address")) {
1514          this.address = castToAddress(value); // Address
1515        } else if (name.equals("physicalType")) {
1516          this.physicalType = castToCodeableConcept(value); // CodeableConcept
1517        } else if (name.equals("position")) {
1518          this.position = (LocationPositionComponent) value; // LocationPositionComponent
1519        } else if (name.equals("managingOrganization")) {
1520          this.managingOrganization = castToReference(value); // Reference
1521        } else if (name.equals("partOf")) {
1522          this.partOf = castToReference(value); // Reference
1523        } else if (name.equals("endpoint")) {
1524          this.getEndpoint().add(castToReference(value));
1525        } else
1526          return super.setProperty(name, value);
1527        return value;
1528      }
1529
1530      @Override
1531      public Base makeProperty(int hash, String name) throws FHIRException {
1532        switch (hash) {
1533        case -1618432855:  return addIdentifier(); 
1534        case -892481550:  return getStatusElement();
1535        case -2103166364:  return getOperationalStatus(); 
1536        case 3373707:  return getNameElement();
1537        case 92902992:  return addAliasElement();
1538        case -1724546052:  return getDescriptionElement();
1539        case 3357091:  return getModeElement();
1540        case 3575610:  return getType(); 
1541        case -1429363305:  return addTelecom(); 
1542        case -1147692044:  return getAddress(); 
1543        case -1474715471:  return getPhysicalType(); 
1544        case 747804969:  return getPosition(); 
1545        case -2058947787:  return getManagingOrganization(); 
1546        case -995410646:  return getPartOf(); 
1547        case 1741102485:  return addEndpoint(); 
1548        default: return super.makeProperty(hash, name);
1549        }
1550
1551      }
1552
1553      @Override
1554      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1555        switch (hash) {
1556        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1557        case -892481550: /*status*/ return new String[] {"code"};
1558        case -2103166364: /*operationalStatus*/ return new String[] {"Coding"};
1559        case 3373707: /*name*/ return new String[] {"string"};
1560        case 92902992: /*alias*/ return new String[] {"string"};
1561        case -1724546052: /*description*/ return new String[] {"string"};
1562        case 3357091: /*mode*/ return new String[] {"code"};
1563        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
1564        case -1429363305: /*telecom*/ return new String[] {"ContactPoint"};
1565        case -1147692044: /*address*/ return new String[] {"Address"};
1566        case -1474715471: /*physicalType*/ return new String[] {"CodeableConcept"};
1567        case 747804969: /*position*/ return new String[] {};
1568        case -2058947787: /*managingOrganization*/ return new String[] {"Reference"};
1569        case -995410646: /*partOf*/ return new String[] {"Reference"};
1570        case 1741102485: /*endpoint*/ return new String[] {"Reference"};
1571        default: return super.getTypesForProperty(hash, name);
1572        }
1573
1574      }
1575
1576      @Override
1577      public Base addChild(String name) throws FHIRException {
1578        if (name.equals("identifier")) {
1579          return addIdentifier();
1580        }
1581        else if (name.equals("status")) {
1582          throw new FHIRException("Cannot call addChild on a primitive type Location.status");
1583        }
1584        else if (name.equals("operationalStatus")) {
1585          this.operationalStatus = new Coding();
1586          return this.operationalStatus;
1587        }
1588        else if (name.equals("name")) {
1589          throw new FHIRException("Cannot call addChild on a primitive type Location.name");
1590        }
1591        else if (name.equals("alias")) {
1592          throw new FHIRException("Cannot call addChild on a primitive type Location.alias");
1593        }
1594        else if (name.equals("description")) {
1595          throw new FHIRException("Cannot call addChild on a primitive type Location.description");
1596        }
1597        else if (name.equals("mode")) {
1598          throw new FHIRException("Cannot call addChild on a primitive type Location.mode");
1599        }
1600        else if (name.equals("type")) {
1601          this.type = new CodeableConcept();
1602          return this.type;
1603        }
1604        else if (name.equals("telecom")) {
1605          return addTelecom();
1606        }
1607        else if (name.equals("address")) {
1608          this.address = new Address();
1609          return this.address;
1610        }
1611        else if (name.equals("physicalType")) {
1612          this.physicalType = new CodeableConcept();
1613          return this.physicalType;
1614        }
1615        else if (name.equals("position")) {
1616          this.position = new LocationPositionComponent();
1617          return this.position;
1618        }
1619        else if (name.equals("managingOrganization")) {
1620          this.managingOrganization = new Reference();
1621          return this.managingOrganization;
1622        }
1623        else if (name.equals("partOf")) {
1624          this.partOf = new Reference();
1625          return this.partOf;
1626        }
1627        else if (name.equals("endpoint")) {
1628          return addEndpoint();
1629        }
1630        else
1631          return super.addChild(name);
1632      }
1633
1634  public String fhirType() {
1635    return "Location";
1636
1637  }
1638
1639      public Location copy() {
1640        Location dst = new Location();
1641        copyValues(dst);
1642        if (identifier != null) {
1643          dst.identifier = new ArrayList<Identifier>();
1644          for (Identifier i : identifier)
1645            dst.identifier.add(i.copy());
1646        };
1647        dst.status = status == null ? null : status.copy();
1648        dst.operationalStatus = operationalStatus == null ? null : operationalStatus.copy();
1649        dst.name = name == null ? null : name.copy();
1650        if (alias != null) {
1651          dst.alias = new ArrayList<StringType>();
1652          for (StringType i : alias)
1653            dst.alias.add(i.copy());
1654        };
1655        dst.description = description == null ? null : description.copy();
1656        dst.mode = mode == null ? null : mode.copy();
1657        dst.type = type == null ? null : type.copy();
1658        if (telecom != null) {
1659          dst.telecom = new ArrayList<ContactPoint>();
1660          for (ContactPoint i : telecom)
1661            dst.telecom.add(i.copy());
1662        };
1663        dst.address = address == null ? null : address.copy();
1664        dst.physicalType = physicalType == null ? null : physicalType.copy();
1665        dst.position = position == null ? null : position.copy();
1666        dst.managingOrganization = managingOrganization == null ? null : managingOrganization.copy();
1667        dst.partOf = partOf == null ? null : partOf.copy();
1668        if (endpoint != null) {
1669          dst.endpoint = new ArrayList<Reference>();
1670          for (Reference i : endpoint)
1671            dst.endpoint.add(i.copy());
1672        };
1673        return dst;
1674      }
1675
1676      protected Location typedCopy() {
1677        return copy();
1678      }
1679
1680      @Override
1681      public boolean equalsDeep(Base other) {
1682        if (!super.equalsDeep(other))
1683          return false;
1684        if (!(other instanceof Location))
1685          return false;
1686        Location o = (Location) other;
1687        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(operationalStatus, o.operationalStatus, true)
1688           && compareDeep(name, o.name, true) && compareDeep(alias, o.alias, true) && compareDeep(description, o.description, true)
1689           && compareDeep(mode, o.mode, true) && compareDeep(type, o.type, true) && compareDeep(telecom, o.telecom, true)
1690           && compareDeep(address, o.address, true) && compareDeep(physicalType, o.physicalType, true) && compareDeep(position, o.position, true)
1691           && compareDeep(managingOrganization, o.managingOrganization, true) && compareDeep(partOf, o.partOf, true)
1692           && compareDeep(endpoint, o.endpoint, true);
1693      }
1694
1695      @Override
1696      public boolean equalsShallow(Base other) {
1697        if (!super.equalsShallow(other))
1698          return false;
1699        if (!(other instanceof Location))
1700          return false;
1701        Location o = (Location) other;
1702        return compareValues(status, o.status, true) && compareValues(name, o.name, true) && compareValues(alias, o.alias, true)
1703           && compareValues(description, o.description, true) && compareValues(mode, o.mode, true);
1704      }
1705
1706      public boolean isEmpty() {
1707        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, operationalStatus
1708          , name, alias, description, mode, type, telecom, address, physicalType, position
1709          , managingOrganization, partOf, endpoint);
1710      }
1711
1712  @Override
1713  public ResourceType getResourceType() {
1714    return ResourceType.Location;
1715   }
1716
1717 /**
1718   * Search parameter: <b>identifier</b>
1719   * <p>
1720   * Description: <b>An identifier for the location</b><br>
1721   * Type: <b>token</b><br>
1722   * Path: <b>Location.identifier</b><br>
1723   * </p>
1724   */
1725  @SearchParamDefinition(name="identifier", path="Location.identifier", description="An identifier for the location", type="token" )
1726  public static final String SP_IDENTIFIER = "identifier";
1727 /**
1728   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1729   * <p>
1730   * Description: <b>An identifier for the location</b><br>
1731   * Type: <b>token</b><br>
1732   * Path: <b>Location.identifier</b><br>
1733   * </p>
1734   */
1735  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1736
1737 /**
1738   * Search parameter: <b>partof</b>
1739   * <p>
1740   * Description: <b>A location of which this location is a part</b><br>
1741   * Type: <b>reference</b><br>
1742   * Path: <b>Location.partOf</b><br>
1743   * </p>
1744   */
1745  @SearchParamDefinition(name="partof", path="Location.partOf", description="A location of which this location is a part", type="reference", target={Location.class } )
1746  public static final String SP_PARTOF = "partof";
1747 /**
1748   * <b>Fluent Client</b> search parameter constant for <b>partof</b>
1749   * <p>
1750   * Description: <b>A location of which this location is a part</b><br>
1751   * Type: <b>reference</b><br>
1752   * Path: <b>Location.partOf</b><br>
1753   * </p>
1754   */
1755  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PARTOF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PARTOF);
1756
1757/**
1758   * Constant for fluent queries to be used to add include statements. Specifies
1759   * the path value of "<b>Location:partof</b>".
1760   */
1761  public static final ca.uhn.fhir.model.api.Include INCLUDE_PARTOF = new ca.uhn.fhir.model.api.Include("Location:partof").toLocked();
1762
1763 /**
1764   * Search parameter: <b>near-distance</b>
1765   * <p>
1766   * Description: <b>A distance quantity to limit the near search to locations within a specific distance
1767
1768Requires the near parameter to also be included</b><br>
1769   * Type: <b>quantity</b><br>
1770   * Path: <b>Location.position</b><br>
1771   * </p>
1772   */
1773  @SearchParamDefinition(name="near-distance", path="Location.position", description="A distance quantity to limit the near search to locations within a specific distance\n\nRequires the near parameter to also be included", type="quantity" )
1774  public static final String SP_NEAR_DISTANCE = "near-distance";
1775 /**
1776   * <b>Fluent Client</b> search parameter constant for <b>near-distance</b>
1777   * <p>
1778   * Description: <b>A distance quantity to limit the near search to locations within a specific distance
1779
1780Requires the near parameter to also be included</b><br>
1781   * Type: <b>quantity</b><br>
1782   * Path: <b>Location.position</b><br>
1783   * </p>
1784   */
1785  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam NEAR_DISTANCE = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_NEAR_DISTANCE);
1786
1787 /**
1788   * Search parameter: <b>address</b>
1789   * <p>
1790   * Description: <b>A (part of the) address of the location</b><br>
1791   * Type: <b>string</b><br>
1792   * Path: <b>Location.address</b><br>
1793   * </p>
1794   */
1795  @SearchParamDefinition(name="address", path="Location.address", description="A (part of the) address of the location", type="string" )
1796  public static final String SP_ADDRESS = "address";
1797 /**
1798   * <b>Fluent Client</b> search parameter constant for <b>address</b>
1799   * <p>
1800   * Description: <b>A (part of the) address of the location</b><br>
1801   * Type: <b>string</b><br>
1802   * Path: <b>Location.address</b><br>
1803   * </p>
1804   */
1805  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS);
1806
1807 /**
1808   * Search parameter: <b>address-state</b>
1809   * <p>
1810   * Description: <b>A state specified in an address</b><br>
1811   * Type: <b>string</b><br>
1812   * Path: <b>Location.address.state</b><br>
1813   * </p>
1814   */
1815  @SearchParamDefinition(name="address-state", path="Location.address.state", description="A state specified in an address", type="string" )
1816  public static final String SP_ADDRESS_STATE = "address-state";
1817 /**
1818   * <b>Fluent Client</b> search parameter constant for <b>address-state</b>
1819   * <p>
1820   * Description: <b>A state specified in an address</b><br>
1821   * Type: <b>string</b><br>
1822   * Path: <b>Location.address.state</b><br>
1823   * </p>
1824   */
1825  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_STATE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_STATE);
1826
1827 /**
1828   * Search parameter: <b>operational-status</b>
1829   * <p>
1830   * Description: <b>Searches for locations (typically bed/room) that have an operational status (e.g. contaminated, housekeeping)</b><br>
1831   * Type: <b>token</b><br>
1832   * Path: <b>Location.operationalStatus</b><br>
1833   * </p>
1834   */
1835  @SearchParamDefinition(name="operational-status", path="Location.operationalStatus", description="Searches for locations (typically bed/room) that have an operational status (e.g. contaminated, housekeeping)", type="token" )
1836  public static final String SP_OPERATIONAL_STATUS = "operational-status";
1837 /**
1838   * <b>Fluent Client</b> search parameter constant for <b>operational-status</b>
1839   * <p>
1840   * Description: <b>Searches for locations (typically bed/room) that have an operational status (e.g. contaminated, housekeeping)</b><br>
1841   * Type: <b>token</b><br>
1842   * Path: <b>Location.operationalStatus</b><br>
1843   * </p>
1844   */
1845  public static final ca.uhn.fhir.rest.gclient.TokenClientParam OPERATIONAL_STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_OPERATIONAL_STATUS);
1846
1847 /**
1848   * Search parameter: <b>type</b>
1849   * <p>
1850   * Description: <b>A code for the type of location</b><br>
1851   * Type: <b>token</b><br>
1852   * Path: <b>Location.type</b><br>
1853   * </p>
1854   */
1855  @SearchParamDefinition(name="type", path="Location.type", description="A code for the type of location", type="token" )
1856  public static final String SP_TYPE = "type";
1857 /**
1858   * <b>Fluent Client</b> search parameter constant for <b>type</b>
1859   * <p>
1860   * Description: <b>A code for the type of location</b><br>
1861   * Type: <b>token</b><br>
1862   * Path: <b>Location.type</b><br>
1863   * </p>
1864   */
1865  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TYPE);
1866
1867 /**
1868   * Search parameter: <b>address-postalcode</b>
1869   * <p>
1870   * Description: <b>A postal code specified in an address</b><br>
1871   * Type: <b>string</b><br>
1872   * Path: <b>Location.address.postalCode</b><br>
1873   * </p>
1874   */
1875  @SearchParamDefinition(name="address-postalcode", path="Location.address.postalCode", description="A postal code specified in an address", type="string" )
1876  public static final String SP_ADDRESS_POSTALCODE = "address-postalcode";
1877 /**
1878   * <b>Fluent Client</b> search parameter constant for <b>address-postalcode</b>
1879   * <p>
1880   * Description: <b>A postal code specified in an address</b><br>
1881   * Type: <b>string</b><br>
1882   * Path: <b>Location.address.postalCode</b><br>
1883   * </p>
1884   */
1885  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_POSTALCODE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_POSTALCODE);
1886
1887 /**
1888   * Search parameter: <b>address-country</b>
1889   * <p>
1890   * Description: <b>A country specified in an address</b><br>
1891   * Type: <b>string</b><br>
1892   * Path: <b>Location.address.country</b><br>
1893   * </p>
1894   */
1895  @SearchParamDefinition(name="address-country", path="Location.address.country", description="A country specified in an address", type="string" )
1896  public static final String SP_ADDRESS_COUNTRY = "address-country";
1897 /**
1898   * <b>Fluent Client</b> search parameter constant for <b>address-country</b>
1899   * <p>
1900   * Description: <b>A country specified in an address</b><br>
1901   * Type: <b>string</b><br>
1902   * Path: <b>Location.address.country</b><br>
1903   * </p>
1904   */
1905  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_COUNTRY = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_COUNTRY);
1906
1907 /**
1908   * Search parameter: <b>endpoint</b>
1909   * <p>
1910   * Description: <b>Technical endpoints providing access to services operated for the location</b><br>
1911   * Type: <b>reference</b><br>
1912   * Path: <b>Location.endpoint</b><br>
1913   * </p>
1914   */
1915  @SearchParamDefinition(name="endpoint", path="Location.endpoint", description="Technical endpoints providing access to services operated for the location", type="reference", target={Endpoint.class } )
1916  public static final String SP_ENDPOINT = "endpoint";
1917 /**
1918   * <b>Fluent Client</b> search parameter constant for <b>endpoint</b>
1919   * <p>
1920   * Description: <b>Technical endpoints providing access to services operated for the location</b><br>
1921   * Type: <b>reference</b><br>
1922   * Path: <b>Location.endpoint</b><br>
1923   * </p>
1924   */
1925  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENDPOINT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENDPOINT);
1926
1927/**
1928   * Constant for fluent queries to be used to add include statements. Specifies
1929   * the path value of "<b>Location:endpoint</b>".
1930   */
1931  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENDPOINT = new ca.uhn.fhir.model.api.Include("Location:endpoint").toLocked();
1932
1933 /**
1934   * Search parameter: <b>organization</b>
1935   * <p>
1936   * Description: <b>Searches for locations that are managed by the provided organization</b><br>
1937   * Type: <b>reference</b><br>
1938   * Path: <b>Location.managingOrganization</b><br>
1939   * </p>
1940   */
1941  @SearchParamDefinition(name="organization", path="Location.managingOrganization", description="Searches for locations that are managed by the provided organization", type="reference", target={Organization.class } )
1942  public static final String SP_ORGANIZATION = "organization";
1943 /**
1944   * <b>Fluent Client</b> search parameter constant for <b>organization</b>
1945   * <p>
1946   * Description: <b>Searches for locations that are managed by the provided organization</b><br>
1947   * Type: <b>reference</b><br>
1948   * Path: <b>Location.managingOrganization</b><br>
1949   * </p>
1950   */
1951  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ORGANIZATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ORGANIZATION);
1952
1953/**
1954   * Constant for fluent queries to be used to add include statements. Specifies
1955   * the path value of "<b>Location:organization</b>".
1956   */
1957  public static final ca.uhn.fhir.model.api.Include INCLUDE_ORGANIZATION = new ca.uhn.fhir.model.api.Include("Location:organization").toLocked();
1958
1959 /**
1960   * Search parameter: <b>name</b>
1961   * <p>
1962   * Description: <b>A portion of the location's name or alias</b><br>
1963   * Type: <b>string</b><br>
1964   * Path: <b>Location.name, Location.alias</b><br>
1965   * </p>
1966   */
1967  @SearchParamDefinition(name="name", path="Location.name | Location.alias", description="A portion of the location's name or alias", type="string" )
1968  public static final String SP_NAME = "name";
1969 /**
1970   * <b>Fluent Client</b> search parameter constant for <b>name</b>
1971   * <p>
1972   * Description: <b>A portion of the location's name or alias</b><br>
1973   * Type: <b>string</b><br>
1974   * Path: <b>Location.name, Location.alias</b><br>
1975   * </p>
1976   */
1977  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
1978
1979 /**
1980   * Search parameter: <b>address-use</b>
1981   * <p>
1982   * Description: <b>A use code specified in an address</b><br>
1983   * Type: <b>token</b><br>
1984   * Path: <b>Location.address.use</b><br>
1985   * </p>
1986   */
1987  @SearchParamDefinition(name="address-use", path="Location.address.use", description="A use code specified in an address", type="token" )
1988  public static final String SP_ADDRESS_USE = "address-use";
1989 /**
1990   * <b>Fluent Client</b> search parameter constant for <b>address-use</b>
1991   * <p>
1992   * Description: <b>A use code specified in an address</b><br>
1993   * Type: <b>token</b><br>
1994   * Path: <b>Location.address.use</b><br>
1995   * </p>
1996   */
1997  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ADDRESS_USE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ADDRESS_USE);
1998
1999 /**
2000   * Search parameter: <b>near</b>
2001   * <p>
2002   * Description: <b>The coordinates expressed as [latitude]:[longitude] (using the WGS84 datum, see notes) to find locations near to (servers may search using a square rather than a circle for efficiency)
2003
2004Requires the near-distance parameter to be provided also</b><br>
2005   * Type: <b>token</b><br>
2006   * Path: <b>Location.position</b><br>
2007   * </p>
2008   */
2009  @SearchParamDefinition(name="near", path="Location.position", description="The coordinates expressed as [latitude]:[longitude] (using the WGS84 datum, see notes) to find locations near to (servers may search using a square rather than a circle for efficiency)\n\nRequires the near-distance parameter to be provided also", type="token" )
2010  public static final String SP_NEAR = "near";
2011 /**
2012   * <b>Fluent Client</b> search parameter constant for <b>near</b>
2013   * <p>
2014   * Description: <b>The coordinates expressed as [latitude]:[longitude] (using the WGS84 datum, see notes) to find locations near to (servers may search using a square rather than a circle for efficiency)
2015
2016Requires the near-distance parameter to be provided also</b><br>
2017   * Type: <b>token</b><br>
2018   * Path: <b>Location.position</b><br>
2019   * </p>
2020   */
2021  public static final ca.uhn.fhir.rest.gclient.TokenClientParam NEAR = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_NEAR);
2022
2023 /**
2024   * Search parameter: <b>address-city</b>
2025   * <p>
2026   * Description: <b>A city specified in an address</b><br>
2027   * Type: <b>string</b><br>
2028   * Path: <b>Location.address.city</b><br>
2029   * </p>
2030   */
2031  @SearchParamDefinition(name="address-city", path="Location.address.city", description="A city specified in an address", type="string" )
2032  public static final String SP_ADDRESS_CITY = "address-city";
2033 /**
2034   * <b>Fluent Client</b> search parameter constant for <b>address-city</b>
2035   * <p>
2036   * Description: <b>A city specified in an address</b><br>
2037   * Type: <b>string</b><br>
2038   * Path: <b>Location.address.city</b><br>
2039   * </p>
2040   */
2041  public static final ca.uhn.fhir.rest.gclient.StringClientParam ADDRESS_CITY = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_ADDRESS_CITY);
2042
2043 /**
2044   * Search parameter: <b>status</b>
2045   * <p>
2046   * Description: <b>Searches for locations with a specific kind of status</b><br>
2047   * Type: <b>token</b><br>
2048   * Path: <b>Location.status</b><br>
2049   * </p>
2050   */
2051  @SearchParamDefinition(name="status", path="Location.status", description="Searches for locations with a specific kind of status", type="token" )
2052  public static final String SP_STATUS = "status";
2053 /**
2054   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2055   * <p>
2056   * Description: <b>Searches for locations with a specific kind of status</b><br>
2057   * Type: <b>token</b><br>
2058   * Path: <b>Location.status</b><br>
2059   * </p>
2060   */
2061  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2062
2063
2064}
2065