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