001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * Represents a request a device to be provided to a specific patient. The device may be an implantable device to be subsequently implanted, or an external assistive device, such as a walker, to be delivered and subsequently be used.
052 */
053@ResourceDef(name="DeviceRequest", profile="http://hl7.org/fhir/StructureDefinition/DeviceRequest")
054public class DeviceRequest extends DomainResource {
055
056    @Block()
057    public static class DeviceRequestParameterComponent extends BackboneElement implements IBaseBackboneElement {
058        /**
059         * A code or string that identifies the device detail being asserted.
060         */
061        @Child(name = "code", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
062        @Description(shortDefinition="Device detail", formalDefinition="A code or string that identifies the device detail being asserted." )
063        protected CodeableConcept code;
064
065        /**
066         * The value of the device detail.
067         */
068        @Child(name = "value", type = {CodeableConcept.class, Quantity.class, Range.class, BooleanType.class}, order=2, min=0, max=1, modifier=false, summary=false)
069        @Description(shortDefinition="Value of detail", formalDefinition="The value of the device detail." )
070        protected DataType value;
071
072        private static final long serialVersionUID = -1950789033L;
073
074    /**
075     * Constructor
076     */
077      public DeviceRequestParameterComponent() {
078        super();
079      }
080
081        /**
082         * @return {@link #code} (A code or string that identifies the device detail being asserted.)
083         */
084        public CodeableConcept getCode() { 
085          if (this.code == null)
086            if (Configuration.errorOnAutoCreate())
087              throw new Error("Attempt to auto-create DeviceRequestParameterComponent.code");
088            else if (Configuration.doAutoCreate())
089              this.code = new CodeableConcept(); // cc
090          return this.code;
091        }
092
093        public boolean hasCode() { 
094          return this.code != null && !this.code.isEmpty();
095        }
096
097        /**
098         * @param value {@link #code} (A code or string that identifies the device detail being asserted.)
099         */
100        public DeviceRequestParameterComponent setCode(CodeableConcept value) { 
101          this.code = value;
102          return this;
103        }
104
105        /**
106         * @return {@link #value} (The value of the device detail.)
107         */
108        public DataType getValue() { 
109          return this.value;
110        }
111
112        /**
113         * @return {@link #value} (The value of the device detail.)
114         */
115        public CodeableConcept getValueCodeableConcept() throws FHIRException { 
116          if (this.value == null)
117            this.value = new CodeableConcept();
118          if (!(this.value instanceof CodeableConcept))
119            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.value.getClass().getName()+" was encountered");
120          return (CodeableConcept) this.value;
121        }
122
123        public boolean hasValueCodeableConcept() { 
124          return this != null && this.value instanceof CodeableConcept;
125        }
126
127        /**
128         * @return {@link #value} (The value of the device detail.)
129         */
130        public Quantity getValueQuantity() throws FHIRException { 
131          if (this.value == null)
132            this.value = new Quantity();
133          if (!(this.value instanceof Quantity))
134            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.value.getClass().getName()+" was encountered");
135          return (Quantity) this.value;
136        }
137
138        public boolean hasValueQuantity() { 
139          return this != null && this.value instanceof Quantity;
140        }
141
142        /**
143         * @return {@link #value} (The value of the device detail.)
144         */
145        public Range getValueRange() throws FHIRException { 
146          if (this.value == null)
147            this.value = new Range();
148          if (!(this.value instanceof Range))
149            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.value.getClass().getName()+" was encountered");
150          return (Range) this.value;
151        }
152
153        public boolean hasValueRange() { 
154          return this != null && this.value instanceof Range;
155        }
156
157        /**
158         * @return {@link #value} (The value of the device detail.)
159         */
160        public BooleanType getValueBooleanType() throws FHIRException { 
161          if (this.value == null)
162            this.value = new BooleanType();
163          if (!(this.value instanceof BooleanType))
164            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered");
165          return (BooleanType) this.value;
166        }
167
168        public boolean hasValueBooleanType() { 
169          return this != null && this.value instanceof BooleanType;
170        }
171
172        public boolean hasValue() { 
173          return this.value != null && !this.value.isEmpty();
174        }
175
176        /**
177         * @param value {@link #value} (The value of the device detail.)
178         */
179        public DeviceRequestParameterComponent setValue(DataType value) { 
180          if (value != null && !(value instanceof CodeableConcept || value instanceof Quantity || value instanceof Range || value instanceof BooleanType))
181            throw new FHIRException("Not the right type for DeviceRequest.parameter.value[x]: "+value.fhirType());
182          this.value = value;
183          return this;
184        }
185
186        protected void listChildren(List<Property> children) {
187          super.listChildren(children);
188          children.add(new Property("code", "CodeableConcept", "A code or string that identifies the device detail being asserted.", 0, 1, code));
189          children.add(new Property("value[x]", "CodeableConcept|Quantity|Range|boolean", "The value of the device detail.", 0, 1, value));
190        }
191
192        @Override
193        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
194          switch (_hash) {
195          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "A code or string that identifies the device detail being asserted.", 0, 1, code);
196          case -1410166417: /*value[x]*/  return new Property("value[x]", "CodeableConcept|Quantity|Range|boolean", "The value of the device detail.", 0, 1, value);
197          case 111972721: /*value*/  return new Property("value[x]", "CodeableConcept|Quantity|Range|boolean", "The value of the device detail.", 0, 1, value);
198          case 924902896: /*valueCodeableConcept*/  return new Property("value[x]", "CodeableConcept", "The value of the device detail.", 0, 1, value);
199          case -2029823716: /*valueQuantity*/  return new Property("value[x]", "Quantity", "The value of the device detail.", 0, 1, value);
200          case 2030761548: /*valueRange*/  return new Property("value[x]", "Range", "The value of the device detail.", 0, 1, value);
201          case 733421943: /*valueBoolean*/  return new Property("value[x]", "boolean", "The value of the device detail.", 0, 1, value);
202          default: return super.getNamedProperty(_hash, _name, _checkValid);
203          }
204
205        }
206
207      @Override
208      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
209        switch (hash) {
210        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
211        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
212        default: return super.getProperty(hash, name, checkValid);
213        }
214
215      }
216
217      @Override
218      public Base setProperty(int hash, String name, Base value) throws FHIRException {
219        switch (hash) {
220        case 3059181: // code
221          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
222          return value;
223        case 111972721: // value
224          this.value = TypeConvertor.castToType(value); // DataType
225          return value;
226        default: return super.setProperty(hash, name, value);
227        }
228
229      }
230
231      @Override
232      public Base setProperty(String name, Base value) throws FHIRException {
233        if (name.equals("code")) {
234          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
235        } else if (name.equals("value[x]")) {
236          this.value = TypeConvertor.castToType(value); // DataType
237        } else
238          return super.setProperty(name, value);
239        return value;
240      }
241
242      @Override
243      public Base makeProperty(int hash, String name) throws FHIRException {
244        switch (hash) {
245        case 3059181:  return getCode();
246        case -1410166417:  return getValue();
247        case 111972721:  return getValue();
248        default: return super.makeProperty(hash, name);
249        }
250
251      }
252
253      @Override
254      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
255        switch (hash) {
256        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
257        case 111972721: /*value*/ return new String[] {"CodeableConcept", "Quantity", "Range", "boolean"};
258        default: return super.getTypesForProperty(hash, name);
259        }
260
261      }
262
263      @Override
264      public Base addChild(String name) throws FHIRException {
265        if (name.equals("code")) {
266          this.code = new CodeableConcept();
267          return this.code;
268        }
269        else if (name.equals("valueCodeableConcept")) {
270          this.value = new CodeableConcept();
271          return this.value;
272        }
273        else if (name.equals("valueQuantity")) {
274          this.value = new Quantity();
275          return this.value;
276        }
277        else if (name.equals("valueRange")) {
278          this.value = new Range();
279          return this.value;
280        }
281        else if (name.equals("valueBoolean")) {
282          this.value = new BooleanType();
283          return this.value;
284        }
285        else
286          return super.addChild(name);
287      }
288
289      public DeviceRequestParameterComponent copy() {
290        DeviceRequestParameterComponent dst = new DeviceRequestParameterComponent();
291        copyValues(dst);
292        return dst;
293      }
294
295      public void copyValues(DeviceRequestParameterComponent dst) {
296        super.copyValues(dst);
297        dst.code = code == null ? null : code.copy();
298        dst.value = value == null ? null : value.copy();
299      }
300
301      @Override
302      public boolean equalsDeep(Base other_) {
303        if (!super.equalsDeep(other_))
304          return false;
305        if (!(other_ instanceof DeviceRequestParameterComponent))
306          return false;
307        DeviceRequestParameterComponent o = (DeviceRequestParameterComponent) other_;
308        return compareDeep(code, o.code, true) && compareDeep(value, o.value, true);
309      }
310
311      @Override
312      public boolean equalsShallow(Base other_) {
313        if (!super.equalsShallow(other_))
314          return false;
315        if (!(other_ instanceof DeviceRequestParameterComponent))
316          return false;
317        DeviceRequestParameterComponent o = (DeviceRequestParameterComponent) other_;
318        return true;
319      }
320
321      public boolean isEmpty() {
322        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, value);
323      }
324
325  public String fhirType() {
326    return "DeviceRequest.parameter";
327
328  }
329
330  }
331
332    /**
333     * Identifiers assigned to this order by the orderer or by the receiver.
334     */
335    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
336    @Description(shortDefinition="External Request identifier", formalDefinition="Identifiers assigned to this order by the orderer or by the receiver." )
337    protected List<Identifier> identifier;
338
339    /**
340     * The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest.
341     */
342    @Child(name = "instantiatesCanonical", type = {CanonicalType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
343    @Description(shortDefinition="Instantiates FHIR protocol or definition", formalDefinition="The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest." )
344    protected List<CanonicalType> instantiatesCanonical;
345
346    /**
347     * The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest.
348     */
349    @Child(name = "instantiatesUri", type = {UriType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
350    @Description(shortDefinition="Instantiates external protocol or definition", formalDefinition="The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest." )
351    protected List<UriType> instantiatesUri;
352
353    /**
354     * Plan/proposal/order fulfilled by this request.
355     */
356    @Child(name = "basedOn", type = {Reference.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
357    @Description(shortDefinition="What request fulfills", formalDefinition="Plan/proposal/order fulfilled by this request." )
358    protected List<Reference> basedOn;
359
360    /**
361     * The request takes the place of the referenced completed or terminated request(s).
362     */
363    @Child(name = "replaces", type = {DeviceRequest.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
364    @Description(shortDefinition="What request replaces", formalDefinition="The request takes the place of the referenced completed or terminated request(s)." )
365    protected List<Reference> replaces;
366
367    /**
368     * A shared identifier common to multiple independent Request instances that were activated/authorized more or less simultaneously by a single author.  The presence of the same identifier on each request ties those requests together and may have business ramifications in terms of reporting of results, billing, etc.  E.g. a requisition number shared by a set of lab tests ordered together, or a prescription number shared by all meds ordered at one time.
369     */
370    @Child(name = "groupIdentifier", type = {Identifier.class}, order=5, min=0, max=1, modifier=false, summary=true)
371    @Description(shortDefinition="Identifier of composite request", formalDefinition="A shared identifier common to multiple independent Request instances that were activated/authorized more or less simultaneously by a single author.  The presence of the same identifier on each request ties those requests together and may have business ramifications in terms of reporting of results, billing, etc.  E.g. a requisition number shared by a set of lab tests ordered together, or a prescription number shared by all meds ordered at one time." )
372    protected Identifier groupIdentifier;
373
374    /**
375     * The status of the request.
376     */
377    @Child(name = "status", type = {CodeType.class}, order=6, min=0, max=1, modifier=true, summary=true)
378    @Description(shortDefinition="draft | active | on-hold | revoked | completed | entered-in-error | unknown", formalDefinition="The status of the request." )
379    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-status")
380    protected Enumeration<RequestStatus> status;
381
382    /**
383     * Whether the request is a proposal, plan, an original order or a reflex order.
384     */
385    @Child(name = "intent", type = {CodeType.class}, order=7, min=1, max=1, modifier=true, summary=true)
386    @Description(shortDefinition="proposal | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option", formalDefinition="Whether the request is a proposal, plan, an original order or a reflex order." )
387    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-intent")
388    protected Enumeration<RequestIntent> intent;
389
390    /**
391     * Indicates how quickly the request should be addressed with respect to other requests.
392     */
393    @Child(name = "priority", type = {CodeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
394    @Description(shortDefinition="routine | urgent | asap | stat", formalDefinition="Indicates how quickly the request should be addressed with respect to other requests." )
395    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-priority")
396    protected Enumeration<RequestPriority> priority;
397
398    /**
399     * If true, indicates that the provider is asking for the patient to either stop using or to not start using the specified device or category of devices. For example, the patient has undergone surgery and the provider is indicating that the patient should not wear contact lenses.
400     */
401    @Child(name = "doNotPerform", type = {BooleanType.class}, order=9, min=0, max=1, modifier=true, summary=true)
402    @Description(shortDefinition="True if the request is to stop or not to start using the device", formalDefinition="If true, indicates that the provider is asking for the patient to either stop using or to not start using the specified device or category of devices. For example, the patient has undergone surgery and the provider is indicating that the patient should not wear contact lenses." )
403    protected BooleanType doNotPerform;
404
405    /**
406     * The details of the device to be used.
407     */
408    @Child(name = "code", type = {CodeableReference.class}, order=10, min=1, max=1, modifier=false, summary=true)
409    @Description(shortDefinition="Device requested", formalDefinition="The details of the device to be used." )
410    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/device-type")
411    protected CodeableReference code;
412
413    /**
414     * The number of devices to be provided.
415     */
416    @Child(name = "quantity", type = {IntegerType.class}, order=11, min=0, max=1, modifier=false, summary=false)
417    @Description(shortDefinition="Quantity of devices to supply", formalDefinition="The number of devices to be provided." )
418    protected IntegerType quantity;
419
420    /**
421     * Specific parameters for the ordered item.  For example, the prism value for lenses.
422     */
423    @Child(name = "parameter", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
424    @Description(shortDefinition="Device details", formalDefinition="Specific parameters for the ordered item.  For example, the prism value for lenses." )
425    protected List<DeviceRequestParameterComponent> parameter;
426
427    /**
428     * The patient who will use the device.
429     */
430    @Child(name = "subject", type = {Patient.class, Group.class, Location.class, Device.class}, order=13, min=1, max=1, modifier=false, summary=true)
431    @Description(shortDefinition="Focus of request", formalDefinition="The patient who will use the device." )
432    protected Reference subject;
433
434    /**
435     * An encounter that provides additional context in which this request is made.
436     */
437    @Child(name = "encounter", type = {Encounter.class}, order=14, min=0, max=1, modifier=false, summary=true)
438    @Description(shortDefinition="Encounter motivating request", formalDefinition="An encounter that provides additional context in which this request is made." )
439    protected Reference encounter;
440
441    /**
442     * The timing schedule for the use of the device. The Schedule data type allows many different expressions, for example. "Every 8 hours"; "Three times a day"; "1/2 an hour before breakfast for 10 days from 23-Dec 2011:"; "15 Oct 2013, 17 Oct 2013 and 1 Nov 2013".
443     */
444    @Child(name = "occurrence", type = {DateTimeType.class, Period.class, Timing.class}, order=15, min=0, max=1, modifier=false, summary=true)
445    @Description(shortDefinition="Desired time or schedule for use", formalDefinition="The timing schedule for the use of the device. The Schedule data type allows many different expressions, for example. \"Every 8 hours\"; \"Three times a day\"; \"1/2 an hour before breakfast for 10 days from 23-Dec 2011:\"; \"15 Oct 2013, 17 Oct 2013 and 1 Nov 2013\"." )
446    protected DataType occurrence;
447
448    /**
449     * When the request transitioned to being actionable.
450     */
451    @Child(name = "authoredOn", type = {DateTimeType.class}, order=16, min=0, max=1, modifier=false, summary=true)
452    @Description(shortDefinition="When recorded", formalDefinition="When the request transitioned to being actionable." )
453    protected DateTimeType authoredOn;
454
455    /**
456     * The individual or entity who initiated the request and has responsibility for its activation.
457     */
458    @Child(name = "requester", type = {Device.class, Practitioner.class, PractitionerRole.class, Organization.class}, order=17, min=0, max=1, modifier=false, summary=true)
459    @Description(shortDefinition="Who/what submitted the device request", formalDefinition="The individual or entity who initiated the request and has responsibility for its activation." )
460    protected Reference requester;
461
462    /**
463     * The desired individual or entity to provide the device to the subject of the request (e.g., patient, location).
464     */
465    @Child(name = "performer", type = {CodeableReference.class}, order=18, min=0, max=1, modifier=false, summary=true)
466    @Description(shortDefinition="Requested Filler", formalDefinition="The desired individual or entity to provide the device to the subject of the request (e.g., patient, location)." )
467    protected CodeableReference performer;
468
469    /**
470     * Reason or justification for the use of this device.
471     */
472    @Child(name = "reason", type = {CodeableReference.class}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
473    @Description(shortDefinition="Coded/Linked Reason for request", formalDefinition="Reason or justification for the use of this device." )
474    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-code")
475    protected List<CodeableReference> reason;
476
477    /**
478     * This status is to indicate whether the request is a PRN or may be given as needed.
479     */
480    @Child(name = "asNeeded", type = {BooleanType.class}, order=20, min=0, max=1, modifier=false, summary=false)
481    @Description(shortDefinition="PRN status of request", formalDefinition="This status is to indicate whether the request is a PRN or may be given as needed." )
482    protected BooleanType asNeeded;
483
484    /**
485     * The reason for using the device.
486     */
487    @Child(name = "asNeededFor", type = {CodeableConcept.class}, order=21, min=0, max=1, modifier=false, summary=false)
488    @Description(shortDefinition="Device usage reason", formalDefinition="The reason for using the device." )
489    protected CodeableConcept asNeededFor;
490
491    /**
492     * Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be required for delivering the requested service.
493     */
494    @Child(name = "insurance", type = {Coverage.class, ClaimResponse.class}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
495    @Description(shortDefinition="Associated insurance coverage", formalDefinition="Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be required for delivering the requested service." )
496    protected List<Reference> insurance;
497
498    /**
499     * Additional clinical information about the patient that may influence the request fulfilment.  For example, this may include where on the subject's body the device will be used (i.e. the target site).
500     */
501    @Child(name = "supportingInfo", type = {Reference.class}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
502    @Description(shortDefinition="Additional clinical information", formalDefinition="Additional clinical information about the patient that may influence the request fulfilment.  For example, this may include where on the subject's body the device will be used (i.e. the target site)." )
503    protected List<Reference> supportingInfo;
504
505    /**
506     * Details about this request that were not represented at all or sufficiently in one of the attributes provided in a class. These may include for example a comment, an instruction, or a note associated with the statement.
507     */
508    @Child(name = "note", type = {Annotation.class}, order=24, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
509    @Description(shortDefinition="Notes or comments", formalDefinition="Details about this request that were not represented at all or sufficiently in one of the attributes provided in a class. These may include for example a comment, an instruction, or a note associated with the statement." )
510    protected List<Annotation> note;
511
512    /**
513     * Key events in the history of the request.
514     */
515    @Child(name = "relevantHistory", type = {Provenance.class}, order=25, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
516    @Description(shortDefinition="Request provenance", formalDefinition="Key events in the history of the request." )
517    protected List<Reference> relevantHistory;
518
519    private static final long serialVersionUID = 1768564436L;
520
521  /**
522   * Constructor
523   */
524    public DeviceRequest() {
525      super();
526    }
527
528  /**
529   * Constructor
530   */
531    public DeviceRequest(RequestIntent intent, CodeableReference code, Reference subject) {
532      super();
533      this.setIntent(intent);
534      this.setCode(code);
535      this.setSubject(subject);
536    }
537
538    /**
539     * @return {@link #identifier} (Identifiers assigned to this order by the orderer or by the receiver.)
540     */
541    public List<Identifier> getIdentifier() { 
542      if (this.identifier == null)
543        this.identifier = new ArrayList<Identifier>();
544      return this.identifier;
545    }
546
547    /**
548     * @return Returns a reference to <code>this</code> for easy method chaining
549     */
550    public DeviceRequest setIdentifier(List<Identifier> theIdentifier) { 
551      this.identifier = theIdentifier;
552      return this;
553    }
554
555    public boolean hasIdentifier() { 
556      if (this.identifier == null)
557        return false;
558      for (Identifier item : this.identifier)
559        if (!item.isEmpty())
560          return true;
561      return false;
562    }
563
564    public Identifier addIdentifier() { //3
565      Identifier t = new Identifier();
566      if (this.identifier == null)
567        this.identifier = new ArrayList<Identifier>();
568      this.identifier.add(t);
569      return t;
570    }
571
572    public DeviceRequest addIdentifier(Identifier t) { //3
573      if (t == null)
574        return this;
575      if (this.identifier == null)
576        this.identifier = new ArrayList<Identifier>();
577      this.identifier.add(t);
578      return this;
579    }
580
581    /**
582     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
583     */
584    public Identifier getIdentifierFirstRep() { 
585      if (getIdentifier().isEmpty()) {
586        addIdentifier();
587      }
588      return getIdentifier().get(0);
589    }
590
591    /**
592     * @return {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest.)
593     */
594    public List<CanonicalType> getInstantiatesCanonical() { 
595      if (this.instantiatesCanonical == null)
596        this.instantiatesCanonical = new ArrayList<CanonicalType>();
597      return this.instantiatesCanonical;
598    }
599
600    /**
601     * @return Returns a reference to <code>this</code> for easy method chaining
602     */
603    public DeviceRequest setInstantiatesCanonical(List<CanonicalType> theInstantiatesCanonical) { 
604      this.instantiatesCanonical = theInstantiatesCanonical;
605      return this;
606    }
607
608    public boolean hasInstantiatesCanonical() { 
609      if (this.instantiatesCanonical == null)
610        return false;
611      for (CanonicalType item : this.instantiatesCanonical)
612        if (!item.isEmpty())
613          return true;
614      return false;
615    }
616
617    /**
618     * @return {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest.)
619     */
620    public CanonicalType addInstantiatesCanonicalElement() {//2 
621      CanonicalType t = new CanonicalType();
622      if (this.instantiatesCanonical == null)
623        this.instantiatesCanonical = new ArrayList<CanonicalType>();
624      this.instantiatesCanonical.add(t);
625      return t;
626    }
627
628    /**
629     * @param value {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest.)
630     */
631    public DeviceRequest addInstantiatesCanonical(String value) { //1
632      CanonicalType t = new CanonicalType();
633      t.setValue(value);
634      if (this.instantiatesCanonical == null)
635        this.instantiatesCanonical = new ArrayList<CanonicalType>();
636      this.instantiatesCanonical.add(t);
637      return this;
638    }
639
640    /**
641     * @param value {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest.)
642     */
643    public boolean hasInstantiatesCanonical(String value) { 
644      if (this.instantiatesCanonical == null)
645        return false;
646      for (CanonicalType v : this.instantiatesCanonical)
647        if (v.getValue().equals(value)) // canonical
648          return true;
649      return false;
650    }
651
652    /**
653     * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest.)
654     */
655    public List<UriType> getInstantiatesUri() { 
656      if (this.instantiatesUri == null)
657        this.instantiatesUri = new ArrayList<UriType>();
658      return this.instantiatesUri;
659    }
660
661    /**
662     * @return Returns a reference to <code>this</code> for easy method chaining
663     */
664    public DeviceRequest setInstantiatesUri(List<UriType> theInstantiatesUri) { 
665      this.instantiatesUri = theInstantiatesUri;
666      return this;
667    }
668
669    public boolean hasInstantiatesUri() { 
670      if (this.instantiatesUri == null)
671        return false;
672      for (UriType item : this.instantiatesUri)
673        if (!item.isEmpty())
674          return true;
675      return false;
676    }
677
678    /**
679     * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest.)
680     */
681    public UriType addInstantiatesUriElement() {//2 
682      UriType t = new UriType();
683      if (this.instantiatesUri == null)
684        this.instantiatesUri = new ArrayList<UriType>();
685      this.instantiatesUri.add(t);
686      return t;
687    }
688
689    /**
690     * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest.)
691     */
692    public DeviceRequest addInstantiatesUri(String value) { //1
693      UriType t = new UriType();
694      t.setValue(value);
695      if (this.instantiatesUri == null)
696        this.instantiatesUri = new ArrayList<UriType>();
697      this.instantiatesUri.add(t);
698      return this;
699    }
700
701    /**
702     * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest.)
703     */
704    public boolean hasInstantiatesUri(String value) { 
705      if (this.instantiatesUri == null)
706        return false;
707      for (UriType v : this.instantiatesUri)
708        if (v.getValue().equals(value)) // uri
709          return true;
710      return false;
711    }
712
713    /**
714     * @return {@link #basedOn} (Plan/proposal/order fulfilled by this request.)
715     */
716    public List<Reference> getBasedOn() { 
717      if (this.basedOn == null)
718        this.basedOn = new ArrayList<Reference>();
719      return this.basedOn;
720    }
721
722    /**
723     * @return Returns a reference to <code>this</code> for easy method chaining
724     */
725    public DeviceRequest setBasedOn(List<Reference> theBasedOn) { 
726      this.basedOn = theBasedOn;
727      return this;
728    }
729
730    public boolean hasBasedOn() { 
731      if (this.basedOn == null)
732        return false;
733      for (Reference item : this.basedOn)
734        if (!item.isEmpty())
735          return true;
736      return false;
737    }
738
739    public Reference addBasedOn() { //3
740      Reference t = new Reference();
741      if (this.basedOn == null)
742        this.basedOn = new ArrayList<Reference>();
743      this.basedOn.add(t);
744      return t;
745    }
746
747    public DeviceRequest addBasedOn(Reference t) { //3
748      if (t == null)
749        return this;
750      if (this.basedOn == null)
751        this.basedOn = new ArrayList<Reference>();
752      this.basedOn.add(t);
753      return this;
754    }
755
756    /**
757     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
758     */
759    public Reference getBasedOnFirstRep() { 
760      if (getBasedOn().isEmpty()) {
761        addBasedOn();
762      }
763      return getBasedOn().get(0);
764    }
765
766    /**
767     * @return {@link #replaces} (The request takes the place of the referenced completed or terminated request(s).)
768     */
769    public List<Reference> getReplaces() { 
770      if (this.replaces == null)
771        this.replaces = new ArrayList<Reference>();
772      return this.replaces;
773    }
774
775    /**
776     * @return Returns a reference to <code>this</code> for easy method chaining
777     */
778    public DeviceRequest setReplaces(List<Reference> theReplaces) { 
779      this.replaces = theReplaces;
780      return this;
781    }
782
783    public boolean hasReplaces() { 
784      if (this.replaces == null)
785        return false;
786      for (Reference item : this.replaces)
787        if (!item.isEmpty())
788          return true;
789      return false;
790    }
791
792    public Reference addReplaces() { //3
793      Reference t = new Reference();
794      if (this.replaces == null)
795        this.replaces = new ArrayList<Reference>();
796      this.replaces.add(t);
797      return t;
798    }
799
800    public DeviceRequest addReplaces(Reference t) { //3
801      if (t == null)
802        return this;
803      if (this.replaces == null)
804        this.replaces = new ArrayList<Reference>();
805      this.replaces.add(t);
806      return this;
807    }
808
809    /**
810     * @return The first repetition of repeating field {@link #replaces}, creating it if it does not already exist {3}
811     */
812    public Reference getReplacesFirstRep() { 
813      if (getReplaces().isEmpty()) {
814        addReplaces();
815      }
816      return getReplaces().get(0);
817    }
818
819    /**
820     * @return {@link #groupIdentifier} (A shared identifier common to multiple independent Request instances that were activated/authorized more or less simultaneously by a single author.  The presence of the same identifier on each request ties those requests together and may have business ramifications in terms of reporting of results, billing, etc.  E.g. a requisition number shared by a set of lab tests ordered together, or a prescription number shared by all meds ordered at one time.)
821     */
822    public Identifier getGroupIdentifier() { 
823      if (this.groupIdentifier == null)
824        if (Configuration.errorOnAutoCreate())
825          throw new Error("Attempt to auto-create DeviceRequest.groupIdentifier");
826        else if (Configuration.doAutoCreate())
827          this.groupIdentifier = new Identifier(); // cc
828      return this.groupIdentifier;
829    }
830
831    public boolean hasGroupIdentifier() { 
832      return this.groupIdentifier != null && !this.groupIdentifier.isEmpty();
833    }
834
835    /**
836     * @param value {@link #groupIdentifier} (A shared identifier common to multiple independent Request instances that were activated/authorized more or less simultaneously by a single author.  The presence of the same identifier on each request ties those requests together and may have business ramifications in terms of reporting of results, billing, etc.  E.g. a requisition number shared by a set of lab tests ordered together, or a prescription number shared by all meds ordered at one time.)
837     */
838    public DeviceRequest setGroupIdentifier(Identifier value) { 
839      this.groupIdentifier = value;
840      return this;
841    }
842
843    /**
844     * @return {@link #status} (The status of the request.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
845     */
846    public Enumeration<RequestStatus> getStatusElement() { 
847      if (this.status == null)
848        if (Configuration.errorOnAutoCreate())
849          throw new Error("Attempt to auto-create DeviceRequest.status");
850        else if (Configuration.doAutoCreate())
851          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory()); // bb
852      return this.status;
853    }
854
855    public boolean hasStatusElement() { 
856      return this.status != null && !this.status.isEmpty();
857    }
858
859    public boolean hasStatus() { 
860      return this.status != null && !this.status.isEmpty();
861    }
862
863    /**
864     * @param value {@link #status} (The status of the request.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
865     */
866    public DeviceRequest setStatusElement(Enumeration<RequestStatus> value) { 
867      this.status = value;
868      return this;
869    }
870
871    /**
872     * @return The status of the request.
873     */
874    public RequestStatus getStatus() { 
875      return this.status == null ? null : this.status.getValue();
876    }
877
878    /**
879     * @param value The status of the request.
880     */
881    public DeviceRequest setStatus(RequestStatus value) { 
882      if (value == null)
883        this.status = null;
884      else {
885        if (this.status == null)
886          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory());
887        this.status.setValue(value);
888      }
889      return this;
890    }
891
892    /**
893     * @return {@link #intent} (Whether the request is a proposal, plan, an original order or a reflex order.). This is the underlying object with id, value and extensions. The accessor "getIntent" gives direct access to the value
894     */
895    public Enumeration<RequestIntent> getIntentElement() { 
896      if (this.intent == null)
897        if (Configuration.errorOnAutoCreate())
898          throw new Error("Attempt to auto-create DeviceRequest.intent");
899        else if (Configuration.doAutoCreate())
900          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory()); // bb
901      return this.intent;
902    }
903
904    public boolean hasIntentElement() { 
905      return this.intent != null && !this.intent.isEmpty();
906    }
907
908    public boolean hasIntent() { 
909      return this.intent != null && !this.intent.isEmpty();
910    }
911
912    /**
913     * @param value {@link #intent} (Whether the request is a proposal, plan, an original order or a reflex order.). This is the underlying object with id, value and extensions. The accessor "getIntent" gives direct access to the value
914     */
915    public DeviceRequest setIntentElement(Enumeration<RequestIntent> value) { 
916      this.intent = value;
917      return this;
918    }
919
920    /**
921     * @return Whether the request is a proposal, plan, an original order or a reflex order.
922     */
923    public RequestIntent getIntent() { 
924      return this.intent == null ? null : this.intent.getValue();
925    }
926
927    /**
928     * @param value Whether the request is a proposal, plan, an original order or a reflex order.
929     */
930    public DeviceRequest setIntent(RequestIntent value) { 
931        if (this.intent == null)
932          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory());
933        this.intent.setValue(value);
934      return this;
935    }
936
937    /**
938     * @return {@link #priority} (Indicates how quickly the request should be addressed with respect to other requests.). This is the underlying object with id, value and extensions. The accessor "getPriority" gives direct access to the value
939     */
940    public Enumeration<RequestPriority> getPriorityElement() { 
941      if (this.priority == null)
942        if (Configuration.errorOnAutoCreate())
943          throw new Error("Attempt to auto-create DeviceRequest.priority");
944        else if (Configuration.doAutoCreate())
945          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory()); // bb
946      return this.priority;
947    }
948
949    public boolean hasPriorityElement() { 
950      return this.priority != null && !this.priority.isEmpty();
951    }
952
953    public boolean hasPriority() { 
954      return this.priority != null && !this.priority.isEmpty();
955    }
956
957    /**
958     * @param value {@link #priority} (Indicates how quickly the request should be addressed with respect to other requests.). This is the underlying object with id, value and extensions. The accessor "getPriority" gives direct access to the value
959     */
960    public DeviceRequest setPriorityElement(Enumeration<RequestPriority> value) { 
961      this.priority = value;
962      return this;
963    }
964
965    /**
966     * @return Indicates how quickly the request should be addressed with respect to other requests.
967     */
968    public RequestPriority getPriority() { 
969      return this.priority == null ? null : this.priority.getValue();
970    }
971
972    /**
973     * @param value Indicates how quickly the request should be addressed with respect to other requests.
974     */
975    public DeviceRequest setPriority(RequestPriority value) { 
976      if (value == null)
977        this.priority = null;
978      else {
979        if (this.priority == null)
980          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory());
981        this.priority.setValue(value);
982      }
983      return this;
984    }
985
986    /**
987     * @return {@link #doNotPerform} (If true, indicates that the provider is asking for the patient to either stop using or to not start using the specified device or category of devices. For example, the patient has undergone surgery and the provider is indicating that the patient should not wear contact lenses.). This is the underlying object with id, value and extensions. The accessor "getDoNotPerform" gives direct access to the value
988     */
989    public BooleanType getDoNotPerformElement() { 
990      if (this.doNotPerform == null)
991        if (Configuration.errorOnAutoCreate())
992          throw new Error("Attempt to auto-create DeviceRequest.doNotPerform");
993        else if (Configuration.doAutoCreate())
994          this.doNotPerform = new BooleanType(); // bb
995      return this.doNotPerform;
996    }
997
998    public boolean hasDoNotPerformElement() { 
999      return this.doNotPerform != null && !this.doNotPerform.isEmpty();
1000    }
1001
1002    public boolean hasDoNotPerform() { 
1003      return this.doNotPerform != null && !this.doNotPerform.isEmpty();
1004    }
1005
1006    /**
1007     * @param value {@link #doNotPerform} (If true, indicates that the provider is asking for the patient to either stop using or to not start using the specified device or category of devices. For example, the patient has undergone surgery and the provider is indicating that the patient should not wear contact lenses.). This is the underlying object with id, value and extensions. The accessor "getDoNotPerform" gives direct access to the value
1008     */
1009    public DeviceRequest setDoNotPerformElement(BooleanType value) { 
1010      this.doNotPerform = value;
1011      return this;
1012    }
1013
1014    /**
1015     * @return If true, indicates that the provider is asking for the patient to either stop using or to not start using the specified device or category of devices. For example, the patient has undergone surgery and the provider is indicating that the patient should not wear contact lenses.
1016     */
1017    public boolean getDoNotPerform() { 
1018      return this.doNotPerform == null || this.doNotPerform.isEmpty() ? false : this.doNotPerform.getValue();
1019    }
1020
1021    /**
1022     * @param value If true, indicates that the provider is asking for the patient to either stop using or to not start using the specified device or category of devices. For example, the patient has undergone surgery and the provider is indicating that the patient should not wear contact lenses.
1023     */
1024    public DeviceRequest setDoNotPerform(boolean value) { 
1025        if (this.doNotPerform == null)
1026          this.doNotPerform = new BooleanType();
1027        this.doNotPerform.setValue(value);
1028      return this;
1029    }
1030
1031    /**
1032     * @return {@link #code} (The details of the device to be used.)
1033     */
1034    public CodeableReference getCode() { 
1035      if (this.code == null)
1036        if (Configuration.errorOnAutoCreate())
1037          throw new Error("Attempt to auto-create DeviceRequest.code");
1038        else if (Configuration.doAutoCreate())
1039          this.code = new CodeableReference(); // cc
1040      return this.code;
1041    }
1042
1043    public boolean hasCode() { 
1044      return this.code != null && !this.code.isEmpty();
1045    }
1046
1047    /**
1048     * @param value {@link #code} (The details of the device to be used.)
1049     */
1050    public DeviceRequest setCode(CodeableReference value) { 
1051      this.code = value;
1052      return this;
1053    }
1054
1055    /**
1056     * @return {@link #quantity} (The number of devices to be provided.). This is the underlying object with id, value and extensions. The accessor "getQuantity" gives direct access to the value
1057     */
1058    public IntegerType getQuantityElement() { 
1059      if (this.quantity == null)
1060        if (Configuration.errorOnAutoCreate())
1061          throw new Error("Attempt to auto-create DeviceRequest.quantity");
1062        else if (Configuration.doAutoCreate())
1063          this.quantity = new IntegerType(); // bb
1064      return this.quantity;
1065    }
1066
1067    public boolean hasQuantityElement() { 
1068      return this.quantity != null && !this.quantity.isEmpty();
1069    }
1070
1071    public boolean hasQuantity() { 
1072      return this.quantity != null && !this.quantity.isEmpty();
1073    }
1074
1075    /**
1076     * @param value {@link #quantity} (The number of devices to be provided.). This is the underlying object with id, value and extensions. The accessor "getQuantity" gives direct access to the value
1077     */
1078    public DeviceRequest setQuantityElement(IntegerType value) { 
1079      this.quantity = value;
1080      return this;
1081    }
1082
1083    /**
1084     * @return The number of devices to be provided.
1085     */
1086    public int getQuantity() { 
1087      return this.quantity == null || this.quantity.isEmpty() ? 0 : this.quantity.getValue();
1088    }
1089
1090    /**
1091     * @param value The number of devices to be provided.
1092     */
1093    public DeviceRequest setQuantity(int value) { 
1094        if (this.quantity == null)
1095          this.quantity = new IntegerType();
1096        this.quantity.setValue(value);
1097      return this;
1098    }
1099
1100    /**
1101     * @return {@link #parameter} (Specific parameters for the ordered item.  For example, the prism value for lenses.)
1102     */
1103    public List<DeviceRequestParameterComponent> getParameter() { 
1104      if (this.parameter == null)
1105        this.parameter = new ArrayList<DeviceRequestParameterComponent>();
1106      return this.parameter;
1107    }
1108
1109    /**
1110     * @return Returns a reference to <code>this</code> for easy method chaining
1111     */
1112    public DeviceRequest setParameter(List<DeviceRequestParameterComponent> theParameter) { 
1113      this.parameter = theParameter;
1114      return this;
1115    }
1116
1117    public boolean hasParameter() { 
1118      if (this.parameter == null)
1119        return false;
1120      for (DeviceRequestParameterComponent item : this.parameter)
1121        if (!item.isEmpty())
1122          return true;
1123      return false;
1124    }
1125
1126    public DeviceRequestParameterComponent addParameter() { //3
1127      DeviceRequestParameterComponent t = new DeviceRequestParameterComponent();
1128      if (this.parameter == null)
1129        this.parameter = new ArrayList<DeviceRequestParameterComponent>();
1130      this.parameter.add(t);
1131      return t;
1132    }
1133
1134    public DeviceRequest addParameter(DeviceRequestParameterComponent t) { //3
1135      if (t == null)
1136        return this;
1137      if (this.parameter == null)
1138        this.parameter = new ArrayList<DeviceRequestParameterComponent>();
1139      this.parameter.add(t);
1140      return this;
1141    }
1142
1143    /**
1144     * @return The first repetition of repeating field {@link #parameter}, creating it if it does not already exist {3}
1145     */
1146    public DeviceRequestParameterComponent getParameterFirstRep() { 
1147      if (getParameter().isEmpty()) {
1148        addParameter();
1149      }
1150      return getParameter().get(0);
1151    }
1152
1153    /**
1154     * @return {@link #subject} (The patient who will use the device.)
1155     */
1156    public Reference getSubject() { 
1157      if (this.subject == null)
1158        if (Configuration.errorOnAutoCreate())
1159          throw new Error("Attempt to auto-create DeviceRequest.subject");
1160        else if (Configuration.doAutoCreate())
1161          this.subject = new Reference(); // cc
1162      return this.subject;
1163    }
1164
1165    public boolean hasSubject() { 
1166      return this.subject != null && !this.subject.isEmpty();
1167    }
1168
1169    /**
1170     * @param value {@link #subject} (The patient who will use the device.)
1171     */
1172    public DeviceRequest setSubject(Reference value) { 
1173      this.subject = value;
1174      return this;
1175    }
1176
1177    /**
1178     * @return {@link #encounter} (An encounter that provides additional context in which this request is made.)
1179     */
1180    public Reference getEncounter() { 
1181      if (this.encounter == null)
1182        if (Configuration.errorOnAutoCreate())
1183          throw new Error("Attempt to auto-create DeviceRequest.encounter");
1184        else if (Configuration.doAutoCreate())
1185          this.encounter = new Reference(); // cc
1186      return this.encounter;
1187    }
1188
1189    public boolean hasEncounter() { 
1190      return this.encounter != null && !this.encounter.isEmpty();
1191    }
1192
1193    /**
1194     * @param value {@link #encounter} (An encounter that provides additional context in which this request is made.)
1195     */
1196    public DeviceRequest setEncounter(Reference value) { 
1197      this.encounter = value;
1198      return this;
1199    }
1200
1201    /**
1202     * @return {@link #occurrence} (The timing schedule for the use of the device. The Schedule data type allows many different expressions, for example. "Every 8 hours"; "Three times a day"; "1/2 an hour before breakfast for 10 days from 23-Dec 2011:"; "15 Oct 2013, 17 Oct 2013 and 1 Nov 2013".)
1203     */
1204    public DataType getOccurrence() { 
1205      return this.occurrence;
1206    }
1207
1208    /**
1209     * @return {@link #occurrence} (The timing schedule for the use of the device. The Schedule data type allows many different expressions, for example. "Every 8 hours"; "Three times a day"; "1/2 an hour before breakfast for 10 days from 23-Dec 2011:"; "15 Oct 2013, 17 Oct 2013 and 1 Nov 2013".)
1210     */
1211    public DateTimeType getOccurrenceDateTimeType() throws FHIRException { 
1212      if (this.occurrence == null)
1213        this.occurrence = new DateTimeType();
1214      if (!(this.occurrence instanceof DateTimeType))
1215        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1216      return (DateTimeType) this.occurrence;
1217    }
1218
1219    public boolean hasOccurrenceDateTimeType() { 
1220      return this != null && this.occurrence instanceof DateTimeType;
1221    }
1222
1223    /**
1224     * @return {@link #occurrence} (The timing schedule for the use of the device. The Schedule data type allows many different expressions, for example. "Every 8 hours"; "Three times a day"; "1/2 an hour before breakfast for 10 days from 23-Dec 2011:"; "15 Oct 2013, 17 Oct 2013 and 1 Nov 2013".)
1225     */
1226    public Period getOccurrencePeriod() throws FHIRException { 
1227      if (this.occurrence == null)
1228        this.occurrence = new Period();
1229      if (!(this.occurrence instanceof Period))
1230        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1231      return (Period) this.occurrence;
1232    }
1233
1234    public boolean hasOccurrencePeriod() { 
1235      return this != null && this.occurrence instanceof Period;
1236    }
1237
1238    /**
1239     * @return {@link #occurrence} (The timing schedule for the use of the device. The Schedule data type allows many different expressions, for example. "Every 8 hours"; "Three times a day"; "1/2 an hour before breakfast for 10 days from 23-Dec 2011:"; "15 Oct 2013, 17 Oct 2013 and 1 Nov 2013".)
1240     */
1241    public Timing getOccurrenceTiming() throws FHIRException { 
1242      if (this.occurrence == null)
1243        this.occurrence = new Timing();
1244      if (!(this.occurrence instanceof Timing))
1245        throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1246      return (Timing) this.occurrence;
1247    }
1248
1249    public boolean hasOccurrenceTiming() { 
1250      return this != null && this.occurrence instanceof Timing;
1251    }
1252
1253    public boolean hasOccurrence() { 
1254      return this.occurrence != null && !this.occurrence.isEmpty();
1255    }
1256
1257    /**
1258     * @param value {@link #occurrence} (The timing schedule for the use of the device. The Schedule data type allows many different expressions, for example. "Every 8 hours"; "Three times a day"; "1/2 an hour before breakfast for 10 days from 23-Dec 2011:"; "15 Oct 2013, 17 Oct 2013 and 1 Nov 2013".)
1259     */
1260    public DeviceRequest setOccurrence(DataType value) { 
1261      if (value != null && !(value instanceof DateTimeType || value instanceof Period || value instanceof Timing))
1262        throw new FHIRException("Not the right type for DeviceRequest.occurrence[x]: "+value.fhirType());
1263      this.occurrence = value;
1264      return this;
1265    }
1266
1267    /**
1268     * @return {@link #authoredOn} (When the request transitioned to being actionable.). This is the underlying object with id, value and extensions. The accessor "getAuthoredOn" gives direct access to the value
1269     */
1270    public DateTimeType getAuthoredOnElement() { 
1271      if (this.authoredOn == null)
1272        if (Configuration.errorOnAutoCreate())
1273          throw new Error("Attempt to auto-create DeviceRequest.authoredOn");
1274        else if (Configuration.doAutoCreate())
1275          this.authoredOn = new DateTimeType(); // bb
1276      return this.authoredOn;
1277    }
1278
1279    public boolean hasAuthoredOnElement() { 
1280      return this.authoredOn != null && !this.authoredOn.isEmpty();
1281    }
1282
1283    public boolean hasAuthoredOn() { 
1284      return this.authoredOn != null && !this.authoredOn.isEmpty();
1285    }
1286
1287    /**
1288     * @param value {@link #authoredOn} (When the request transitioned to being actionable.). This is the underlying object with id, value and extensions. The accessor "getAuthoredOn" gives direct access to the value
1289     */
1290    public DeviceRequest setAuthoredOnElement(DateTimeType value) { 
1291      this.authoredOn = value;
1292      return this;
1293    }
1294
1295    /**
1296     * @return When the request transitioned to being actionable.
1297     */
1298    public Date getAuthoredOn() { 
1299      return this.authoredOn == null ? null : this.authoredOn.getValue();
1300    }
1301
1302    /**
1303     * @param value When the request transitioned to being actionable.
1304     */
1305    public DeviceRequest setAuthoredOn(Date value) { 
1306      if (value == null)
1307        this.authoredOn = null;
1308      else {
1309        if (this.authoredOn == null)
1310          this.authoredOn = new DateTimeType();
1311        this.authoredOn.setValue(value);
1312      }
1313      return this;
1314    }
1315
1316    /**
1317     * @return {@link #requester} (The individual or entity who initiated the request and has responsibility for its activation.)
1318     */
1319    public Reference getRequester() { 
1320      if (this.requester == null)
1321        if (Configuration.errorOnAutoCreate())
1322          throw new Error("Attempt to auto-create DeviceRequest.requester");
1323        else if (Configuration.doAutoCreate())
1324          this.requester = new Reference(); // cc
1325      return this.requester;
1326    }
1327
1328    public boolean hasRequester() { 
1329      return this.requester != null && !this.requester.isEmpty();
1330    }
1331
1332    /**
1333     * @param value {@link #requester} (The individual or entity who initiated the request and has responsibility for its activation.)
1334     */
1335    public DeviceRequest setRequester(Reference value) { 
1336      this.requester = value;
1337      return this;
1338    }
1339
1340    /**
1341     * @return {@link #performer} (The desired individual or entity to provide the device to the subject of the request (e.g., patient, location).)
1342     */
1343    public CodeableReference getPerformer() { 
1344      if (this.performer == null)
1345        if (Configuration.errorOnAutoCreate())
1346          throw new Error("Attempt to auto-create DeviceRequest.performer");
1347        else if (Configuration.doAutoCreate())
1348          this.performer = new CodeableReference(); // cc
1349      return this.performer;
1350    }
1351
1352    public boolean hasPerformer() { 
1353      return this.performer != null && !this.performer.isEmpty();
1354    }
1355
1356    /**
1357     * @param value {@link #performer} (The desired individual or entity to provide the device to the subject of the request (e.g., patient, location).)
1358     */
1359    public DeviceRequest setPerformer(CodeableReference value) { 
1360      this.performer = value;
1361      return this;
1362    }
1363
1364    /**
1365     * @return {@link #reason} (Reason or justification for the use of this device.)
1366     */
1367    public List<CodeableReference> getReason() { 
1368      if (this.reason == null)
1369        this.reason = new ArrayList<CodeableReference>();
1370      return this.reason;
1371    }
1372
1373    /**
1374     * @return Returns a reference to <code>this</code> for easy method chaining
1375     */
1376    public DeviceRequest setReason(List<CodeableReference> theReason) { 
1377      this.reason = theReason;
1378      return this;
1379    }
1380
1381    public boolean hasReason() { 
1382      if (this.reason == null)
1383        return false;
1384      for (CodeableReference item : this.reason)
1385        if (!item.isEmpty())
1386          return true;
1387      return false;
1388    }
1389
1390    public CodeableReference addReason() { //3
1391      CodeableReference t = new CodeableReference();
1392      if (this.reason == null)
1393        this.reason = new ArrayList<CodeableReference>();
1394      this.reason.add(t);
1395      return t;
1396    }
1397
1398    public DeviceRequest addReason(CodeableReference t) { //3
1399      if (t == null)
1400        return this;
1401      if (this.reason == null)
1402        this.reason = new ArrayList<CodeableReference>();
1403      this.reason.add(t);
1404      return this;
1405    }
1406
1407    /**
1408     * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3}
1409     */
1410    public CodeableReference getReasonFirstRep() { 
1411      if (getReason().isEmpty()) {
1412        addReason();
1413      }
1414      return getReason().get(0);
1415    }
1416
1417    /**
1418     * @return {@link #asNeeded} (This status is to indicate whether the request is a PRN or may be given as needed.). This is the underlying object with id, value and extensions. The accessor "getAsNeeded" gives direct access to the value
1419     */
1420    public BooleanType getAsNeededElement() { 
1421      if (this.asNeeded == null)
1422        if (Configuration.errorOnAutoCreate())
1423          throw new Error("Attempt to auto-create DeviceRequest.asNeeded");
1424        else if (Configuration.doAutoCreate())
1425          this.asNeeded = new BooleanType(); // bb
1426      return this.asNeeded;
1427    }
1428
1429    public boolean hasAsNeededElement() { 
1430      return this.asNeeded != null && !this.asNeeded.isEmpty();
1431    }
1432
1433    public boolean hasAsNeeded() { 
1434      return this.asNeeded != null && !this.asNeeded.isEmpty();
1435    }
1436
1437    /**
1438     * @param value {@link #asNeeded} (This status is to indicate whether the request is a PRN or may be given as needed.). This is the underlying object with id, value and extensions. The accessor "getAsNeeded" gives direct access to the value
1439     */
1440    public DeviceRequest setAsNeededElement(BooleanType value) { 
1441      this.asNeeded = value;
1442      return this;
1443    }
1444
1445    /**
1446     * @return This status is to indicate whether the request is a PRN or may be given as needed.
1447     */
1448    public boolean getAsNeeded() { 
1449      return this.asNeeded == null || this.asNeeded.isEmpty() ? false : this.asNeeded.getValue();
1450    }
1451
1452    /**
1453     * @param value This status is to indicate whether the request is a PRN or may be given as needed.
1454     */
1455    public DeviceRequest setAsNeeded(boolean value) { 
1456        if (this.asNeeded == null)
1457          this.asNeeded = new BooleanType();
1458        this.asNeeded.setValue(value);
1459      return this;
1460    }
1461
1462    /**
1463     * @return {@link #asNeededFor} (The reason for using the device.)
1464     */
1465    public CodeableConcept getAsNeededFor() { 
1466      if (this.asNeededFor == null)
1467        if (Configuration.errorOnAutoCreate())
1468          throw new Error("Attempt to auto-create DeviceRequest.asNeededFor");
1469        else if (Configuration.doAutoCreate())
1470          this.asNeededFor = new CodeableConcept(); // cc
1471      return this.asNeededFor;
1472    }
1473
1474    public boolean hasAsNeededFor() { 
1475      return this.asNeededFor != null && !this.asNeededFor.isEmpty();
1476    }
1477
1478    /**
1479     * @param value {@link #asNeededFor} (The reason for using the device.)
1480     */
1481    public DeviceRequest setAsNeededFor(CodeableConcept value) { 
1482      this.asNeededFor = value;
1483      return this;
1484    }
1485
1486    /**
1487     * @return {@link #insurance} (Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be required for delivering the requested service.)
1488     */
1489    public List<Reference> getInsurance() { 
1490      if (this.insurance == null)
1491        this.insurance = new ArrayList<Reference>();
1492      return this.insurance;
1493    }
1494
1495    /**
1496     * @return Returns a reference to <code>this</code> for easy method chaining
1497     */
1498    public DeviceRequest setInsurance(List<Reference> theInsurance) { 
1499      this.insurance = theInsurance;
1500      return this;
1501    }
1502
1503    public boolean hasInsurance() { 
1504      if (this.insurance == null)
1505        return false;
1506      for (Reference item : this.insurance)
1507        if (!item.isEmpty())
1508          return true;
1509      return false;
1510    }
1511
1512    public Reference addInsurance() { //3
1513      Reference t = new Reference();
1514      if (this.insurance == null)
1515        this.insurance = new ArrayList<Reference>();
1516      this.insurance.add(t);
1517      return t;
1518    }
1519
1520    public DeviceRequest addInsurance(Reference t) { //3
1521      if (t == null)
1522        return this;
1523      if (this.insurance == null)
1524        this.insurance = new ArrayList<Reference>();
1525      this.insurance.add(t);
1526      return this;
1527    }
1528
1529    /**
1530     * @return The first repetition of repeating field {@link #insurance}, creating it if it does not already exist {3}
1531     */
1532    public Reference getInsuranceFirstRep() { 
1533      if (getInsurance().isEmpty()) {
1534        addInsurance();
1535      }
1536      return getInsurance().get(0);
1537    }
1538
1539    /**
1540     * @return {@link #supportingInfo} (Additional clinical information about the patient that may influence the request fulfilment.  For example, this may include where on the subject's body the device will be used (i.e. the target site).)
1541     */
1542    public List<Reference> getSupportingInfo() { 
1543      if (this.supportingInfo == null)
1544        this.supportingInfo = new ArrayList<Reference>();
1545      return this.supportingInfo;
1546    }
1547
1548    /**
1549     * @return Returns a reference to <code>this</code> for easy method chaining
1550     */
1551    public DeviceRequest setSupportingInfo(List<Reference> theSupportingInfo) { 
1552      this.supportingInfo = theSupportingInfo;
1553      return this;
1554    }
1555
1556    public boolean hasSupportingInfo() { 
1557      if (this.supportingInfo == null)
1558        return false;
1559      for (Reference item : this.supportingInfo)
1560        if (!item.isEmpty())
1561          return true;
1562      return false;
1563    }
1564
1565    public Reference addSupportingInfo() { //3
1566      Reference t = new Reference();
1567      if (this.supportingInfo == null)
1568        this.supportingInfo = new ArrayList<Reference>();
1569      this.supportingInfo.add(t);
1570      return t;
1571    }
1572
1573    public DeviceRequest addSupportingInfo(Reference t) { //3
1574      if (t == null)
1575        return this;
1576      if (this.supportingInfo == null)
1577        this.supportingInfo = new ArrayList<Reference>();
1578      this.supportingInfo.add(t);
1579      return this;
1580    }
1581
1582    /**
1583     * @return The first repetition of repeating field {@link #supportingInfo}, creating it if it does not already exist {3}
1584     */
1585    public Reference getSupportingInfoFirstRep() { 
1586      if (getSupportingInfo().isEmpty()) {
1587        addSupportingInfo();
1588      }
1589      return getSupportingInfo().get(0);
1590    }
1591
1592    /**
1593     * @return {@link #note} (Details about this request that were not represented at all or sufficiently in one of the attributes provided in a class. These may include for example a comment, an instruction, or a note associated with the statement.)
1594     */
1595    public List<Annotation> getNote() { 
1596      if (this.note == null)
1597        this.note = new ArrayList<Annotation>();
1598      return this.note;
1599    }
1600
1601    /**
1602     * @return Returns a reference to <code>this</code> for easy method chaining
1603     */
1604    public DeviceRequest setNote(List<Annotation> theNote) { 
1605      this.note = theNote;
1606      return this;
1607    }
1608
1609    public boolean hasNote() { 
1610      if (this.note == null)
1611        return false;
1612      for (Annotation item : this.note)
1613        if (!item.isEmpty())
1614          return true;
1615      return false;
1616    }
1617
1618    public Annotation addNote() { //3
1619      Annotation t = new Annotation();
1620      if (this.note == null)
1621        this.note = new ArrayList<Annotation>();
1622      this.note.add(t);
1623      return t;
1624    }
1625
1626    public DeviceRequest addNote(Annotation t) { //3
1627      if (t == null)
1628        return this;
1629      if (this.note == null)
1630        this.note = new ArrayList<Annotation>();
1631      this.note.add(t);
1632      return this;
1633    }
1634
1635    /**
1636     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
1637     */
1638    public Annotation getNoteFirstRep() { 
1639      if (getNote().isEmpty()) {
1640        addNote();
1641      }
1642      return getNote().get(0);
1643    }
1644
1645    /**
1646     * @return {@link #relevantHistory} (Key events in the history of the request.)
1647     */
1648    public List<Reference> getRelevantHistory() { 
1649      if (this.relevantHistory == null)
1650        this.relevantHistory = new ArrayList<Reference>();
1651      return this.relevantHistory;
1652    }
1653
1654    /**
1655     * @return Returns a reference to <code>this</code> for easy method chaining
1656     */
1657    public DeviceRequest setRelevantHistory(List<Reference> theRelevantHistory) { 
1658      this.relevantHistory = theRelevantHistory;
1659      return this;
1660    }
1661
1662    public boolean hasRelevantHistory() { 
1663      if (this.relevantHistory == null)
1664        return false;
1665      for (Reference item : this.relevantHistory)
1666        if (!item.isEmpty())
1667          return true;
1668      return false;
1669    }
1670
1671    public Reference addRelevantHistory() { //3
1672      Reference t = new Reference();
1673      if (this.relevantHistory == null)
1674        this.relevantHistory = new ArrayList<Reference>();
1675      this.relevantHistory.add(t);
1676      return t;
1677    }
1678
1679    public DeviceRequest addRelevantHistory(Reference t) { //3
1680      if (t == null)
1681        return this;
1682      if (this.relevantHistory == null)
1683        this.relevantHistory = new ArrayList<Reference>();
1684      this.relevantHistory.add(t);
1685      return this;
1686    }
1687
1688    /**
1689     * @return The first repetition of repeating field {@link #relevantHistory}, creating it if it does not already exist {3}
1690     */
1691    public Reference getRelevantHistoryFirstRep() { 
1692      if (getRelevantHistory().isEmpty()) {
1693        addRelevantHistory();
1694      }
1695      return getRelevantHistory().get(0);
1696    }
1697
1698      protected void listChildren(List<Property> children) {
1699        super.listChildren(children);
1700        children.add(new Property("identifier", "Identifier", "Identifiers assigned to this order by the orderer or by the receiver.", 0, java.lang.Integer.MAX_VALUE, identifier));
1701        children.add(new Property("instantiatesCanonical", "canonical(ActivityDefinition|PlanDefinition)", "The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest.", 0, java.lang.Integer.MAX_VALUE, instantiatesCanonical));
1702        children.add(new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest.", 0, java.lang.Integer.MAX_VALUE, instantiatesUri));
1703        children.add(new Property("basedOn", "Reference(Any)", "Plan/proposal/order fulfilled by this request.", 0, java.lang.Integer.MAX_VALUE, basedOn));
1704        children.add(new Property("replaces", "Reference(DeviceRequest)", "The request takes the place of the referenced completed or terminated request(s).", 0, java.lang.Integer.MAX_VALUE, replaces));
1705        children.add(new Property("groupIdentifier", "Identifier", "A shared identifier common to multiple independent Request instances that were activated/authorized more or less simultaneously by a single author.  The presence of the same identifier on each request ties those requests together and may have business ramifications in terms of reporting of results, billing, etc.  E.g. a requisition number shared by a set of lab tests ordered together, or a prescription number shared by all meds ordered at one time.", 0, 1, groupIdentifier));
1706        children.add(new Property("status", "code", "The status of the request.", 0, 1, status));
1707        children.add(new Property("intent", "code", "Whether the request is a proposal, plan, an original order or a reflex order.", 0, 1, intent));
1708        children.add(new Property("priority", "code", "Indicates how quickly the request should be addressed with respect to other requests.", 0, 1, priority));
1709        children.add(new Property("doNotPerform", "boolean", "If true, indicates that the provider is asking for the patient to either stop using or to not start using the specified device or category of devices. For example, the patient has undergone surgery and the provider is indicating that the patient should not wear contact lenses.", 0, 1, doNotPerform));
1710        children.add(new Property("code", "CodeableReference(Device|DeviceDefinition)", "The details of the device to be used.", 0, 1, code));
1711        children.add(new Property("quantity", "integer", "The number of devices to be provided.", 0, 1, quantity));
1712        children.add(new Property("parameter", "", "Specific parameters for the ordered item.  For example, the prism value for lenses.", 0, java.lang.Integer.MAX_VALUE, parameter));
1713        children.add(new Property("subject", "Reference(Patient|Group|Location|Device)", "The patient who will use the device.", 0, 1, subject));
1714        children.add(new Property("encounter", "Reference(Encounter)", "An encounter that provides additional context in which this request is made.", 0, 1, encounter));
1715        children.add(new Property("occurrence[x]", "dateTime|Period|Timing", "The timing schedule for the use of the device. The Schedule data type allows many different expressions, for example. \"Every 8 hours\"; \"Three times a day\"; \"1/2 an hour before breakfast for 10 days from 23-Dec 2011:\"; \"15 Oct 2013, 17 Oct 2013 and 1 Nov 2013\".", 0, 1, occurrence));
1716        children.add(new Property("authoredOn", "dateTime", "When the request transitioned to being actionable.", 0, 1, authoredOn));
1717        children.add(new Property("requester", "Reference(Device|Practitioner|PractitionerRole|Organization)", "The individual or entity who initiated the request and has responsibility for its activation.", 0, 1, requester));
1718        children.add(new Property("performer", "CodeableReference(Practitioner|PractitionerRole|Organization|CareTeam|HealthcareService|Patient|Device|RelatedPerson)", "The desired individual or entity to provide the device to the subject of the request (e.g., patient, location).", 0, 1, performer));
1719        children.add(new Property("reason", "CodeableReference(Condition|Observation|DiagnosticReport|DocumentReference)", "Reason or justification for the use of this device.", 0, java.lang.Integer.MAX_VALUE, reason));
1720        children.add(new Property("asNeeded", "boolean", "This status is to indicate whether the request is a PRN or may be given as needed.", 0, 1, asNeeded));
1721        children.add(new Property("asNeededFor", "CodeableConcept", "The reason for using the device.", 0, 1, asNeededFor));
1722        children.add(new Property("insurance", "Reference(Coverage|ClaimResponse)", "Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be required for delivering the requested service.", 0, java.lang.Integer.MAX_VALUE, insurance));
1723        children.add(new Property("supportingInfo", "Reference(Any)", "Additional clinical information about the patient that may influence the request fulfilment.  For example, this may include where on the subject's body the device will be used (i.e. the target site).", 0, java.lang.Integer.MAX_VALUE, supportingInfo));
1724        children.add(new Property("note", "Annotation", "Details about this request that were not represented at all or sufficiently in one of the attributes provided in a class. These may include for example a comment, an instruction, or a note associated with the statement.", 0, java.lang.Integer.MAX_VALUE, note));
1725        children.add(new Property("relevantHistory", "Reference(Provenance)", "Key events in the history of the request.", 0, java.lang.Integer.MAX_VALUE, relevantHistory));
1726      }
1727
1728      @Override
1729      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1730        switch (_hash) {
1731        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Identifiers assigned to this order by the orderer or by the receiver.", 0, java.lang.Integer.MAX_VALUE, identifier);
1732        case 8911915: /*instantiatesCanonical*/  return new Property("instantiatesCanonical", "canonical(ActivityDefinition|PlanDefinition)", "The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest.", 0, java.lang.Integer.MAX_VALUE, instantiatesCanonical);
1733        case -1926393373: /*instantiatesUri*/  return new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this DeviceRequest.", 0, java.lang.Integer.MAX_VALUE, instantiatesUri);
1734        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(Any)", "Plan/proposal/order fulfilled by this request.", 0, java.lang.Integer.MAX_VALUE, basedOn);
1735        case -430332865: /*replaces*/  return new Property("replaces", "Reference(DeviceRequest)", "The request takes the place of the referenced completed or terminated request(s).", 0, java.lang.Integer.MAX_VALUE, replaces);
1736        case -445338488: /*groupIdentifier*/  return new Property("groupIdentifier", "Identifier", "A shared identifier common to multiple independent Request instances that were activated/authorized more or less simultaneously by a single author.  The presence of the same identifier on each request ties those requests together and may have business ramifications in terms of reporting of results, billing, etc.  E.g. a requisition number shared by a set of lab tests ordered together, or a prescription number shared by all meds ordered at one time.", 0, 1, groupIdentifier);
1737        case -892481550: /*status*/  return new Property("status", "code", "The status of the request.", 0, 1, status);
1738        case -1183762788: /*intent*/  return new Property("intent", "code", "Whether the request is a proposal, plan, an original order or a reflex order.", 0, 1, intent);
1739        case -1165461084: /*priority*/  return new Property("priority", "code", "Indicates how quickly the request should be addressed with respect to other requests.", 0, 1, priority);
1740        case -1788508167: /*doNotPerform*/  return new Property("doNotPerform", "boolean", "If true, indicates that the provider is asking for the patient to either stop using or to not start using the specified device or category of devices. For example, the patient has undergone surgery and the provider is indicating that the patient should not wear contact lenses.", 0, 1, doNotPerform);
1741        case 3059181: /*code*/  return new Property("code", "CodeableReference(Device|DeviceDefinition)", "The details of the device to be used.", 0, 1, code);
1742        case -1285004149: /*quantity*/  return new Property("quantity", "integer", "The number of devices to be provided.", 0, 1, quantity);
1743        case 1954460585: /*parameter*/  return new Property("parameter", "", "Specific parameters for the ordered item.  For example, the prism value for lenses.", 0, java.lang.Integer.MAX_VALUE, parameter);
1744        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group|Location|Device)", "The patient who will use the device.", 0, 1, subject);
1745        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "An encounter that provides additional context in which this request is made.", 0, 1, encounter);
1746        case -2022646513: /*occurrence[x]*/  return new Property("occurrence[x]", "dateTime|Period|Timing", "The timing schedule for the use of the device. The Schedule data type allows many different expressions, for example. \"Every 8 hours\"; \"Three times a day\"; \"1/2 an hour before breakfast for 10 days from 23-Dec 2011:\"; \"15 Oct 2013, 17 Oct 2013 and 1 Nov 2013\".", 0, 1, occurrence);
1747        case 1687874001: /*occurrence*/  return new Property("occurrence[x]", "dateTime|Period|Timing", "The timing schedule for the use of the device. The Schedule data type allows many different expressions, for example. \"Every 8 hours\"; \"Three times a day\"; \"1/2 an hour before breakfast for 10 days from 23-Dec 2011:\"; \"15 Oct 2013, 17 Oct 2013 and 1 Nov 2013\".", 0, 1, occurrence);
1748        case -298443636: /*occurrenceDateTime*/  return new Property("occurrence[x]", "dateTime", "The timing schedule for the use of the device. The Schedule data type allows many different expressions, for example. \"Every 8 hours\"; \"Three times a day\"; \"1/2 an hour before breakfast for 10 days from 23-Dec 2011:\"; \"15 Oct 2013, 17 Oct 2013 and 1 Nov 2013\".", 0, 1, occurrence);
1749        case 1397156594: /*occurrencePeriod*/  return new Property("occurrence[x]", "Period", "The timing schedule for the use of the device. The Schedule data type allows many different expressions, for example. \"Every 8 hours\"; \"Three times a day\"; \"1/2 an hour before breakfast for 10 days from 23-Dec 2011:\"; \"15 Oct 2013, 17 Oct 2013 and 1 Nov 2013\".", 0, 1, occurrence);
1750        case 1515218299: /*occurrenceTiming*/  return new Property("occurrence[x]", "Timing", "The timing schedule for the use of the device. The Schedule data type allows many different expressions, for example. \"Every 8 hours\"; \"Three times a day\"; \"1/2 an hour before breakfast for 10 days from 23-Dec 2011:\"; \"15 Oct 2013, 17 Oct 2013 and 1 Nov 2013\".", 0, 1, occurrence);
1751        case -1500852503: /*authoredOn*/  return new Property("authoredOn", "dateTime", "When the request transitioned to being actionable.", 0, 1, authoredOn);
1752        case 693933948: /*requester*/  return new Property("requester", "Reference(Device|Practitioner|PractitionerRole|Organization)", "The individual or entity who initiated the request and has responsibility for its activation.", 0, 1, requester);
1753        case 481140686: /*performer*/  return new Property("performer", "CodeableReference(Practitioner|PractitionerRole|Organization|CareTeam|HealthcareService|Patient|Device|RelatedPerson)", "The desired individual or entity to provide the device to the subject of the request (e.g., patient, location).", 0, 1, performer);
1754        case -934964668: /*reason*/  return new Property("reason", "CodeableReference(Condition|Observation|DiagnosticReport|DocumentReference)", "Reason or justification for the use of this device.", 0, java.lang.Integer.MAX_VALUE, reason);
1755        case -1432923513: /*asNeeded*/  return new Property("asNeeded", "boolean", "This status is to indicate whether the request is a PRN or may be given as needed.", 0, 1, asNeeded);
1756        case -544350014: /*asNeededFor*/  return new Property("asNeededFor", "CodeableConcept", "The reason for using the device.", 0, 1, asNeededFor);
1757        case 73049818: /*insurance*/  return new Property("insurance", "Reference(Coverage|ClaimResponse)", "Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be required for delivering the requested service.", 0, java.lang.Integer.MAX_VALUE, insurance);
1758        case 1922406657: /*supportingInfo*/  return new Property("supportingInfo", "Reference(Any)", "Additional clinical information about the patient that may influence the request fulfilment.  For example, this may include where on the subject's body the device will be used (i.e. the target site).", 0, java.lang.Integer.MAX_VALUE, supportingInfo);
1759        case 3387378: /*note*/  return new Property("note", "Annotation", "Details about this request that were not represented at all or sufficiently in one of the attributes provided in a class. These may include for example a comment, an instruction, or a note associated with the statement.", 0, java.lang.Integer.MAX_VALUE, note);
1760        case 1538891575: /*relevantHistory*/  return new Property("relevantHistory", "Reference(Provenance)", "Key events in the history of the request.", 0, java.lang.Integer.MAX_VALUE, relevantHistory);
1761        default: return super.getNamedProperty(_hash, _name, _checkValid);
1762        }
1763
1764      }
1765
1766      @Override
1767      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1768        switch (hash) {
1769        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1770        case 8911915: /*instantiatesCanonical*/ return this.instantiatesCanonical == null ? new Base[0] : this.instantiatesCanonical.toArray(new Base[this.instantiatesCanonical.size()]); // CanonicalType
1771        case -1926393373: /*instantiatesUri*/ return this.instantiatesUri == null ? new Base[0] : this.instantiatesUri.toArray(new Base[this.instantiatesUri.size()]); // UriType
1772        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
1773        case -430332865: /*replaces*/ return this.replaces == null ? new Base[0] : this.replaces.toArray(new Base[this.replaces.size()]); // Reference
1774        case -445338488: /*groupIdentifier*/ return this.groupIdentifier == null ? new Base[0] : new Base[] {this.groupIdentifier}; // Identifier
1775        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<RequestStatus>
1776        case -1183762788: /*intent*/ return this.intent == null ? new Base[0] : new Base[] {this.intent}; // Enumeration<RequestIntent>
1777        case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // Enumeration<RequestPriority>
1778        case -1788508167: /*doNotPerform*/ return this.doNotPerform == null ? new Base[0] : new Base[] {this.doNotPerform}; // BooleanType
1779        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableReference
1780        case -1285004149: /*quantity*/ return this.quantity == null ? new Base[0] : new Base[] {this.quantity}; // IntegerType
1781        case 1954460585: /*parameter*/ return this.parameter == null ? new Base[0] : this.parameter.toArray(new Base[this.parameter.size()]); // DeviceRequestParameterComponent
1782        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1783        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
1784        case 1687874001: /*occurrence*/ return this.occurrence == null ? new Base[0] : new Base[] {this.occurrence}; // DataType
1785        case -1500852503: /*authoredOn*/ return this.authoredOn == null ? new Base[0] : new Base[] {this.authoredOn}; // DateTimeType
1786        case 693933948: /*requester*/ return this.requester == null ? new Base[0] : new Base[] {this.requester}; // Reference
1787        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : new Base[] {this.performer}; // CodeableReference
1788        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableReference
1789        case -1432923513: /*asNeeded*/ return this.asNeeded == null ? new Base[0] : new Base[] {this.asNeeded}; // BooleanType
1790        case -544350014: /*asNeededFor*/ return this.asNeededFor == null ? new Base[0] : new Base[] {this.asNeededFor}; // CodeableConcept
1791        case 73049818: /*insurance*/ return this.insurance == null ? new Base[0] : this.insurance.toArray(new Base[this.insurance.size()]); // Reference
1792        case 1922406657: /*supportingInfo*/ return this.supportingInfo == null ? new Base[0] : this.supportingInfo.toArray(new Base[this.supportingInfo.size()]); // Reference
1793        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1794        case 1538891575: /*relevantHistory*/ return this.relevantHistory == null ? new Base[0] : this.relevantHistory.toArray(new Base[this.relevantHistory.size()]); // Reference
1795        default: return super.getProperty(hash, name, checkValid);
1796        }
1797
1798      }
1799
1800      @Override
1801      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1802        switch (hash) {
1803        case -1618432855: // identifier
1804          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1805          return value;
1806        case 8911915: // instantiatesCanonical
1807          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value)); // CanonicalType
1808          return value;
1809        case -1926393373: // instantiatesUri
1810          this.getInstantiatesUri().add(TypeConvertor.castToUri(value)); // UriType
1811          return value;
1812        case -332612366: // basedOn
1813          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
1814          return value;
1815        case -430332865: // replaces
1816          this.getReplaces().add(TypeConvertor.castToReference(value)); // Reference
1817          return value;
1818        case -445338488: // groupIdentifier
1819          this.groupIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
1820          return value;
1821        case -892481550: // status
1822          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1823          this.status = (Enumeration) value; // Enumeration<RequestStatus>
1824          return value;
1825        case -1183762788: // intent
1826          value = new RequestIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
1827          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
1828          return value;
1829        case -1165461084: // priority
1830          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
1831          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
1832          return value;
1833        case -1788508167: // doNotPerform
1834          this.doNotPerform = TypeConvertor.castToBoolean(value); // BooleanType
1835          return value;
1836        case 3059181: // code
1837          this.code = TypeConvertor.castToCodeableReference(value); // CodeableReference
1838          return value;
1839        case -1285004149: // quantity
1840          this.quantity = TypeConvertor.castToInteger(value); // IntegerType
1841          return value;
1842        case 1954460585: // parameter
1843          this.getParameter().add((DeviceRequestParameterComponent) value); // DeviceRequestParameterComponent
1844          return value;
1845        case -1867885268: // subject
1846          this.subject = TypeConvertor.castToReference(value); // Reference
1847          return value;
1848        case 1524132147: // encounter
1849          this.encounter = TypeConvertor.castToReference(value); // Reference
1850          return value;
1851        case 1687874001: // occurrence
1852          this.occurrence = TypeConvertor.castToType(value); // DataType
1853          return value;
1854        case -1500852503: // authoredOn
1855          this.authoredOn = TypeConvertor.castToDateTime(value); // DateTimeType
1856          return value;
1857        case 693933948: // requester
1858          this.requester = TypeConvertor.castToReference(value); // Reference
1859          return value;
1860        case 481140686: // performer
1861          this.performer = TypeConvertor.castToCodeableReference(value); // CodeableReference
1862          return value;
1863        case -934964668: // reason
1864          this.getReason().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
1865          return value;
1866        case -1432923513: // asNeeded
1867          this.asNeeded = TypeConvertor.castToBoolean(value); // BooleanType
1868          return value;
1869        case -544350014: // asNeededFor
1870          this.asNeededFor = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1871          return value;
1872        case 73049818: // insurance
1873          this.getInsurance().add(TypeConvertor.castToReference(value)); // Reference
1874          return value;
1875        case 1922406657: // supportingInfo
1876          this.getSupportingInfo().add(TypeConvertor.castToReference(value)); // Reference
1877          return value;
1878        case 3387378: // note
1879          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
1880          return value;
1881        case 1538891575: // relevantHistory
1882          this.getRelevantHistory().add(TypeConvertor.castToReference(value)); // Reference
1883          return value;
1884        default: return super.setProperty(hash, name, value);
1885        }
1886
1887      }
1888
1889      @Override
1890      public Base setProperty(String name, Base value) throws FHIRException {
1891        if (name.equals("identifier")) {
1892          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1893        } else if (name.equals("instantiatesCanonical")) {
1894          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value));
1895        } else if (name.equals("instantiatesUri")) {
1896          this.getInstantiatesUri().add(TypeConvertor.castToUri(value));
1897        } else if (name.equals("basedOn")) {
1898          this.getBasedOn().add(TypeConvertor.castToReference(value));
1899        } else if (name.equals("replaces")) {
1900          this.getReplaces().add(TypeConvertor.castToReference(value));
1901        } else if (name.equals("groupIdentifier")) {
1902          this.groupIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
1903        } else if (name.equals("status")) {
1904          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1905          this.status = (Enumeration) value; // Enumeration<RequestStatus>
1906        } else if (name.equals("intent")) {
1907          value = new RequestIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
1908          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
1909        } else if (name.equals("priority")) {
1910          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
1911          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
1912        } else if (name.equals("doNotPerform")) {
1913          this.doNotPerform = TypeConvertor.castToBoolean(value); // BooleanType
1914        } else if (name.equals("code")) {
1915          this.code = TypeConvertor.castToCodeableReference(value); // CodeableReference
1916        } else if (name.equals("quantity")) {
1917          this.quantity = TypeConvertor.castToInteger(value); // IntegerType
1918        } else if (name.equals("parameter")) {
1919          this.getParameter().add((DeviceRequestParameterComponent) value);
1920        } else if (name.equals("subject")) {
1921          this.subject = TypeConvertor.castToReference(value); // Reference
1922        } else if (name.equals("encounter")) {
1923          this.encounter = TypeConvertor.castToReference(value); // Reference
1924        } else if (name.equals("occurrence[x]")) {
1925          this.occurrence = TypeConvertor.castToType(value); // DataType
1926        } else if (name.equals("authoredOn")) {
1927          this.authoredOn = TypeConvertor.castToDateTime(value); // DateTimeType
1928        } else if (name.equals("requester")) {
1929          this.requester = TypeConvertor.castToReference(value); // Reference
1930        } else if (name.equals("performer")) {
1931          this.performer = TypeConvertor.castToCodeableReference(value); // CodeableReference
1932        } else if (name.equals("reason")) {
1933          this.getReason().add(TypeConvertor.castToCodeableReference(value));
1934        } else if (name.equals("asNeeded")) {
1935          this.asNeeded = TypeConvertor.castToBoolean(value); // BooleanType
1936        } else if (name.equals("asNeededFor")) {
1937          this.asNeededFor = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1938        } else if (name.equals("insurance")) {
1939          this.getInsurance().add(TypeConvertor.castToReference(value));
1940        } else if (name.equals("supportingInfo")) {
1941          this.getSupportingInfo().add(TypeConvertor.castToReference(value));
1942        } else if (name.equals("note")) {
1943          this.getNote().add(TypeConvertor.castToAnnotation(value));
1944        } else if (name.equals("relevantHistory")) {
1945          this.getRelevantHistory().add(TypeConvertor.castToReference(value));
1946        } else
1947          return super.setProperty(name, value);
1948        return value;
1949      }
1950
1951      @Override
1952      public Base makeProperty(int hash, String name) throws FHIRException {
1953        switch (hash) {
1954        case -1618432855:  return addIdentifier(); 
1955        case 8911915:  return addInstantiatesCanonicalElement();
1956        case -1926393373:  return addInstantiatesUriElement();
1957        case -332612366:  return addBasedOn(); 
1958        case -430332865:  return addReplaces(); 
1959        case -445338488:  return getGroupIdentifier();
1960        case -892481550:  return getStatusElement();
1961        case -1183762788:  return getIntentElement();
1962        case -1165461084:  return getPriorityElement();
1963        case -1788508167:  return getDoNotPerformElement();
1964        case 3059181:  return getCode();
1965        case -1285004149:  return getQuantityElement();
1966        case 1954460585:  return addParameter(); 
1967        case -1867885268:  return getSubject();
1968        case 1524132147:  return getEncounter();
1969        case -2022646513:  return getOccurrence();
1970        case 1687874001:  return getOccurrence();
1971        case -1500852503:  return getAuthoredOnElement();
1972        case 693933948:  return getRequester();
1973        case 481140686:  return getPerformer();
1974        case -934964668:  return addReason(); 
1975        case -1432923513:  return getAsNeededElement();
1976        case -544350014:  return getAsNeededFor();
1977        case 73049818:  return addInsurance(); 
1978        case 1922406657:  return addSupportingInfo(); 
1979        case 3387378:  return addNote(); 
1980        case 1538891575:  return addRelevantHistory(); 
1981        default: return super.makeProperty(hash, name);
1982        }
1983
1984      }
1985
1986      @Override
1987      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1988        switch (hash) {
1989        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1990        case 8911915: /*instantiatesCanonical*/ return new String[] {"canonical"};
1991        case -1926393373: /*instantiatesUri*/ return new String[] {"uri"};
1992        case -332612366: /*basedOn*/ return new String[] {"Reference"};
1993        case -430332865: /*replaces*/ return new String[] {"Reference"};
1994        case -445338488: /*groupIdentifier*/ return new String[] {"Identifier"};
1995        case -892481550: /*status*/ return new String[] {"code"};
1996        case -1183762788: /*intent*/ return new String[] {"code"};
1997        case -1165461084: /*priority*/ return new String[] {"code"};
1998        case -1788508167: /*doNotPerform*/ return new String[] {"boolean"};
1999        case 3059181: /*code*/ return new String[] {"CodeableReference"};
2000        case -1285004149: /*quantity*/ return new String[] {"integer"};
2001        case 1954460585: /*parameter*/ return new String[] {};
2002        case -1867885268: /*subject*/ return new String[] {"Reference"};
2003        case 1524132147: /*encounter*/ return new String[] {"Reference"};
2004        case 1687874001: /*occurrence*/ return new String[] {"dateTime", "Period", "Timing"};
2005        case -1500852503: /*authoredOn*/ return new String[] {"dateTime"};
2006        case 693933948: /*requester*/ return new String[] {"Reference"};
2007        case 481140686: /*performer*/ return new String[] {"CodeableReference"};
2008        case -934964668: /*reason*/ return new String[] {"CodeableReference"};
2009        case -1432923513: /*asNeeded*/ return new String[] {"boolean"};
2010        case -544350014: /*asNeededFor*/ return new String[] {"CodeableConcept"};
2011        case 73049818: /*insurance*/ return new String[] {"Reference"};
2012        case 1922406657: /*supportingInfo*/ return new String[] {"Reference"};
2013        case 3387378: /*note*/ return new String[] {"Annotation"};
2014        case 1538891575: /*relevantHistory*/ return new String[] {"Reference"};
2015        default: return super.getTypesForProperty(hash, name);
2016        }
2017
2018      }
2019
2020      @Override
2021      public Base addChild(String name) throws FHIRException {
2022        if (name.equals("identifier")) {
2023          return addIdentifier();
2024        }
2025        else if (name.equals("instantiatesCanonical")) {
2026          throw new FHIRException("Cannot call addChild on a singleton property DeviceRequest.instantiatesCanonical");
2027        }
2028        else if (name.equals("instantiatesUri")) {
2029          throw new FHIRException("Cannot call addChild on a singleton property DeviceRequest.instantiatesUri");
2030        }
2031        else if (name.equals("basedOn")) {
2032          return addBasedOn();
2033        }
2034        else if (name.equals("replaces")) {
2035          return addReplaces();
2036        }
2037        else if (name.equals("groupIdentifier")) {
2038          this.groupIdentifier = new Identifier();
2039          return this.groupIdentifier;
2040        }
2041        else if (name.equals("status")) {
2042          throw new FHIRException("Cannot call addChild on a singleton property DeviceRequest.status");
2043        }
2044        else if (name.equals("intent")) {
2045          throw new FHIRException("Cannot call addChild on a singleton property DeviceRequest.intent");
2046        }
2047        else if (name.equals("priority")) {
2048          throw new FHIRException("Cannot call addChild on a singleton property DeviceRequest.priority");
2049        }
2050        else if (name.equals("doNotPerform")) {
2051          throw new FHIRException("Cannot call addChild on a singleton property DeviceRequest.doNotPerform");
2052        }
2053        else if (name.equals("code")) {
2054          this.code = new CodeableReference();
2055          return this.code;
2056        }
2057        else if (name.equals("quantity")) {
2058          throw new FHIRException("Cannot call addChild on a singleton property DeviceRequest.quantity");
2059        }
2060        else if (name.equals("parameter")) {
2061          return addParameter();
2062        }
2063        else if (name.equals("subject")) {
2064          this.subject = new Reference();
2065          return this.subject;
2066        }
2067        else if (name.equals("encounter")) {
2068          this.encounter = new Reference();
2069          return this.encounter;
2070        }
2071        else if (name.equals("occurrenceDateTime")) {
2072          this.occurrence = new DateTimeType();
2073          return this.occurrence;
2074        }
2075        else if (name.equals("occurrencePeriod")) {
2076          this.occurrence = new Period();
2077          return this.occurrence;
2078        }
2079        else if (name.equals("occurrenceTiming")) {
2080          this.occurrence = new Timing();
2081          return this.occurrence;
2082        }
2083        else if (name.equals("authoredOn")) {
2084          throw new FHIRException("Cannot call addChild on a singleton property DeviceRequest.authoredOn");
2085        }
2086        else if (name.equals("requester")) {
2087          this.requester = new Reference();
2088          return this.requester;
2089        }
2090        else if (name.equals("performer")) {
2091          this.performer = new CodeableReference();
2092          return this.performer;
2093        }
2094        else if (name.equals("reason")) {
2095          return addReason();
2096        }
2097        else if (name.equals("asNeeded")) {
2098          throw new FHIRException("Cannot call addChild on a singleton property DeviceRequest.asNeeded");
2099        }
2100        else if (name.equals("asNeededFor")) {
2101          this.asNeededFor = new CodeableConcept();
2102          return this.asNeededFor;
2103        }
2104        else if (name.equals("insurance")) {
2105          return addInsurance();
2106        }
2107        else if (name.equals("supportingInfo")) {
2108          return addSupportingInfo();
2109        }
2110        else if (name.equals("note")) {
2111          return addNote();
2112        }
2113        else if (name.equals("relevantHistory")) {
2114          return addRelevantHistory();
2115        }
2116        else
2117          return super.addChild(name);
2118      }
2119
2120  public String fhirType() {
2121    return "DeviceRequest";
2122
2123  }
2124
2125      public DeviceRequest copy() {
2126        DeviceRequest dst = new DeviceRequest();
2127        copyValues(dst);
2128        return dst;
2129      }
2130
2131      public void copyValues(DeviceRequest dst) {
2132        super.copyValues(dst);
2133        if (identifier != null) {
2134          dst.identifier = new ArrayList<Identifier>();
2135          for (Identifier i : identifier)
2136            dst.identifier.add(i.copy());
2137        };
2138        if (instantiatesCanonical != null) {
2139          dst.instantiatesCanonical = new ArrayList<CanonicalType>();
2140          for (CanonicalType i : instantiatesCanonical)
2141            dst.instantiatesCanonical.add(i.copy());
2142        };
2143        if (instantiatesUri != null) {
2144          dst.instantiatesUri = new ArrayList<UriType>();
2145          for (UriType i : instantiatesUri)
2146            dst.instantiatesUri.add(i.copy());
2147        };
2148        if (basedOn != null) {
2149          dst.basedOn = new ArrayList<Reference>();
2150          for (Reference i : basedOn)
2151            dst.basedOn.add(i.copy());
2152        };
2153        if (replaces != null) {
2154          dst.replaces = new ArrayList<Reference>();
2155          for (Reference i : replaces)
2156            dst.replaces.add(i.copy());
2157        };
2158        dst.groupIdentifier = groupIdentifier == null ? null : groupIdentifier.copy();
2159        dst.status = status == null ? null : status.copy();
2160        dst.intent = intent == null ? null : intent.copy();
2161        dst.priority = priority == null ? null : priority.copy();
2162        dst.doNotPerform = doNotPerform == null ? null : doNotPerform.copy();
2163        dst.code = code == null ? null : code.copy();
2164        dst.quantity = quantity == null ? null : quantity.copy();
2165        if (parameter != null) {
2166          dst.parameter = new ArrayList<DeviceRequestParameterComponent>();
2167          for (DeviceRequestParameterComponent i : parameter)
2168            dst.parameter.add(i.copy());
2169        };
2170        dst.subject = subject == null ? null : subject.copy();
2171        dst.encounter = encounter == null ? null : encounter.copy();
2172        dst.occurrence = occurrence == null ? null : occurrence.copy();
2173        dst.authoredOn = authoredOn == null ? null : authoredOn.copy();
2174        dst.requester = requester == null ? null : requester.copy();
2175        dst.performer = performer == null ? null : performer.copy();
2176        if (reason != null) {
2177          dst.reason = new ArrayList<CodeableReference>();
2178          for (CodeableReference i : reason)
2179            dst.reason.add(i.copy());
2180        };
2181        dst.asNeeded = asNeeded == null ? null : asNeeded.copy();
2182        dst.asNeededFor = asNeededFor == null ? null : asNeededFor.copy();
2183        if (insurance != null) {
2184          dst.insurance = new ArrayList<Reference>();
2185          for (Reference i : insurance)
2186            dst.insurance.add(i.copy());
2187        };
2188        if (supportingInfo != null) {
2189          dst.supportingInfo = new ArrayList<Reference>();
2190          for (Reference i : supportingInfo)
2191            dst.supportingInfo.add(i.copy());
2192        };
2193        if (note != null) {
2194          dst.note = new ArrayList<Annotation>();
2195          for (Annotation i : note)
2196            dst.note.add(i.copy());
2197        };
2198        if (relevantHistory != null) {
2199          dst.relevantHistory = new ArrayList<Reference>();
2200          for (Reference i : relevantHistory)
2201            dst.relevantHistory.add(i.copy());
2202        };
2203      }
2204
2205      protected DeviceRequest typedCopy() {
2206        return copy();
2207      }
2208
2209      @Override
2210      public boolean equalsDeep(Base other_) {
2211        if (!super.equalsDeep(other_))
2212          return false;
2213        if (!(other_ instanceof DeviceRequest))
2214          return false;
2215        DeviceRequest o = (DeviceRequest) other_;
2216        return compareDeep(identifier, o.identifier, true) && compareDeep(instantiatesCanonical, o.instantiatesCanonical, true)
2217           && compareDeep(instantiatesUri, o.instantiatesUri, true) && compareDeep(basedOn, o.basedOn, true)
2218           && compareDeep(replaces, o.replaces, true) && compareDeep(groupIdentifier, o.groupIdentifier, true)
2219           && compareDeep(status, o.status, true) && compareDeep(intent, o.intent, true) && compareDeep(priority, o.priority, true)
2220           && compareDeep(doNotPerform, o.doNotPerform, true) && compareDeep(code, o.code, true) && compareDeep(quantity, o.quantity, true)
2221           && compareDeep(parameter, o.parameter, true) && compareDeep(subject, o.subject, true) && compareDeep(encounter, o.encounter, true)
2222           && compareDeep(occurrence, o.occurrence, true) && compareDeep(authoredOn, o.authoredOn, true) && compareDeep(requester, o.requester, true)
2223           && compareDeep(performer, o.performer, true) && compareDeep(reason, o.reason, true) && compareDeep(asNeeded, o.asNeeded, true)
2224           && compareDeep(asNeededFor, o.asNeededFor, true) && compareDeep(insurance, o.insurance, true) && compareDeep(supportingInfo, o.supportingInfo, true)
2225           && compareDeep(note, o.note, true) && compareDeep(relevantHistory, o.relevantHistory, true);
2226      }
2227
2228      @Override
2229      public boolean equalsShallow(Base other_) {
2230        if (!super.equalsShallow(other_))
2231          return false;
2232        if (!(other_ instanceof DeviceRequest))
2233          return false;
2234        DeviceRequest o = (DeviceRequest) other_;
2235        return compareValues(instantiatesCanonical, o.instantiatesCanonical, true) && compareValues(instantiatesUri, o.instantiatesUri, true)
2236           && compareValues(status, o.status, true) && compareValues(intent, o.intent, true) && compareValues(priority, o.priority, true)
2237           && compareValues(doNotPerform, o.doNotPerform, true) && compareValues(quantity, o.quantity, true) && compareValues(authoredOn, o.authoredOn, true)
2238           && compareValues(asNeeded, o.asNeeded, true);
2239      }
2240
2241      public boolean isEmpty() {
2242        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, instantiatesCanonical
2243          , instantiatesUri, basedOn, replaces, groupIdentifier, status, intent, priority
2244          , doNotPerform, code, quantity, parameter, subject, encounter, occurrence, authoredOn
2245          , requester, performer, reason, asNeeded, asNeededFor, insurance, supportingInfo
2246          , note, relevantHistory);
2247      }
2248
2249  @Override
2250  public ResourceType getResourceType() {
2251    return ResourceType.DeviceRequest;
2252   }
2253
2254 /**
2255   * Search parameter: <b>authored-on</b>
2256   * <p>
2257   * Description: <b>When the request transitioned to being actionable</b><br>
2258   * Type: <b>date</b><br>
2259   * Path: <b>DeviceRequest.authoredOn</b><br>
2260   * </p>
2261   */
2262  @SearchParamDefinition(name="authored-on", path="DeviceRequest.authoredOn", description="When the request transitioned to being actionable", type="date" )
2263  public static final String SP_AUTHORED_ON = "authored-on";
2264 /**
2265   * <b>Fluent Client</b> search parameter constant for <b>authored-on</b>
2266   * <p>
2267   * Description: <b>When the request transitioned to being actionable</b><br>
2268   * Type: <b>date</b><br>
2269   * Path: <b>DeviceRequest.authoredOn</b><br>
2270   * </p>
2271   */
2272  public static final ca.uhn.fhir.rest.gclient.DateClientParam AUTHORED_ON = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_AUTHORED_ON);
2273
2274 /**
2275   * Search parameter: <b>based-on</b>
2276   * <p>
2277   * Description: <b>Plan/proposal/order fulfilled by this request</b><br>
2278   * Type: <b>reference</b><br>
2279   * Path: <b>DeviceRequest.basedOn</b><br>
2280   * </p>
2281   */
2282  @SearchParamDefinition(name="based-on", path="DeviceRequest.basedOn", description="Plan/proposal/order fulfilled by this request", type="reference", target={Account.class, ActivityDefinition.class, ActorDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BiologicallyDerivedProductDispense.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceAssociation.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentReference.class, Encounter.class, EncounterHistory.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, FormularyItem.class, GenomicStudy.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryItem.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Parameters.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestOrchestration.class, Requirements.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestPlan.class, TestReport.class, TestScript.class, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2283  public static final String SP_BASED_ON = "based-on";
2284 /**
2285   * <b>Fluent Client</b> search parameter constant for <b>based-on</b>
2286   * <p>
2287   * Description: <b>Plan/proposal/order fulfilled by this request</b><br>
2288   * Type: <b>reference</b><br>
2289   * Path: <b>DeviceRequest.basedOn</b><br>
2290   * </p>
2291   */
2292  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASED_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASED_ON);
2293
2294/**
2295   * Constant for fluent queries to be used to add include statements. Specifies
2296   * the path value of "<b>DeviceRequest:based-on</b>".
2297   */
2298  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASED_ON = new ca.uhn.fhir.model.api.Include("DeviceRequest:based-on").toLocked();
2299
2300 /**
2301   * Search parameter: <b>device</b>
2302   * <p>
2303   * Description: <b>Reference to resource that is being requested/ordered</b><br>
2304   * Type: <b>reference</b><br>
2305   * Path: <b>DeviceRequest.code.reference</b><br>
2306   * </p>
2307   */
2308  @SearchParamDefinition(name="device", path="DeviceRequest.code.reference", description="Reference to resource that is being requested/ordered", type="reference", target={Device.class, DeviceDefinition.class } )
2309  public static final String SP_DEVICE = "device";
2310 /**
2311   * <b>Fluent Client</b> search parameter constant for <b>device</b>
2312   * <p>
2313   * Description: <b>Reference to resource that is being requested/ordered</b><br>
2314   * Type: <b>reference</b><br>
2315   * Path: <b>DeviceRequest.code.reference</b><br>
2316   * </p>
2317   */
2318  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEVICE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DEVICE);
2319
2320/**
2321   * Constant for fluent queries to be used to add include statements. Specifies
2322   * the path value of "<b>DeviceRequest:device</b>".
2323   */
2324  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEVICE = new ca.uhn.fhir.model.api.Include("DeviceRequest:device").toLocked();
2325
2326 /**
2327   * Search parameter: <b>event-date</b>
2328   * <p>
2329   * Description: <b>When service should occur</b><br>
2330   * Type: <b>date</b><br>
2331   * Path: <b>(DeviceRequest.occurrence.ofType(dateTime)) | (DeviceRequest.occurrence.ofType(Period))</b><br>
2332   * </p>
2333   */
2334  @SearchParamDefinition(name="event-date", path="(DeviceRequest.occurrence.ofType(dateTime)) | (DeviceRequest.occurrence.ofType(Period))", description="When service should occur", type="date" )
2335  public static final String SP_EVENT_DATE = "event-date";
2336 /**
2337   * <b>Fluent Client</b> search parameter constant for <b>event-date</b>
2338   * <p>
2339   * Description: <b>When service should occur</b><br>
2340   * Type: <b>date</b><br>
2341   * Path: <b>(DeviceRequest.occurrence.ofType(dateTime)) | (DeviceRequest.occurrence.ofType(Period))</b><br>
2342   * </p>
2343   */
2344  public static final ca.uhn.fhir.rest.gclient.DateClientParam EVENT_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_EVENT_DATE);
2345
2346 /**
2347   * Search parameter: <b>group-identifier</b>
2348   * <p>
2349   * Description: <b>Composite request this is part of</b><br>
2350   * Type: <b>token</b><br>
2351   * Path: <b>DeviceRequest.groupIdentifier</b><br>
2352   * </p>
2353   */
2354  @SearchParamDefinition(name="group-identifier", path="DeviceRequest.groupIdentifier", description="Composite request this is part of", type="token" )
2355  public static final String SP_GROUP_IDENTIFIER = "group-identifier";
2356 /**
2357   * <b>Fluent Client</b> search parameter constant for <b>group-identifier</b>
2358   * <p>
2359   * Description: <b>Composite request this is part of</b><br>
2360   * Type: <b>token</b><br>
2361   * Path: <b>DeviceRequest.groupIdentifier</b><br>
2362   * </p>
2363   */
2364  public static final ca.uhn.fhir.rest.gclient.TokenClientParam GROUP_IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_GROUP_IDENTIFIER);
2365
2366 /**
2367   * Search parameter: <b>instantiates-canonical</b>
2368   * <p>
2369   * Description: <b>Instantiates FHIR protocol or definition</b><br>
2370   * Type: <b>reference</b><br>
2371   * Path: <b>DeviceRequest.instantiatesCanonical</b><br>
2372   * </p>
2373   */
2374  @SearchParamDefinition(name="instantiates-canonical", path="DeviceRequest.instantiatesCanonical", description="Instantiates FHIR protocol or definition", type="reference", target={ActivityDefinition.class, PlanDefinition.class } )
2375  public static final String SP_INSTANTIATES_CANONICAL = "instantiates-canonical";
2376 /**
2377   * <b>Fluent Client</b> search parameter constant for <b>instantiates-canonical</b>
2378   * <p>
2379   * Description: <b>Instantiates FHIR protocol or definition</b><br>
2380   * Type: <b>reference</b><br>
2381   * Path: <b>DeviceRequest.instantiatesCanonical</b><br>
2382   * </p>
2383   */
2384  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INSTANTIATES_CANONICAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INSTANTIATES_CANONICAL);
2385
2386/**
2387   * Constant for fluent queries to be used to add include statements. Specifies
2388   * the path value of "<b>DeviceRequest:instantiates-canonical</b>".
2389   */
2390  public static final ca.uhn.fhir.model.api.Include INCLUDE_INSTANTIATES_CANONICAL = new ca.uhn.fhir.model.api.Include("DeviceRequest:instantiates-canonical").toLocked();
2391
2392 /**
2393   * Search parameter: <b>instantiates-uri</b>
2394   * <p>
2395   * Description: <b>Instantiates external protocol or definition</b><br>
2396   * Type: <b>uri</b><br>
2397   * Path: <b>DeviceRequest.instantiatesUri</b><br>
2398   * </p>
2399   */
2400  @SearchParamDefinition(name="instantiates-uri", path="DeviceRequest.instantiatesUri", description="Instantiates external protocol or definition", type="uri" )
2401  public static final String SP_INSTANTIATES_URI = "instantiates-uri";
2402 /**
2403   * <b>Fluent Client</b> search parameter constant for <b>instantiates-uri</b>
2404   * <p>
2405   * Description: <b>Instantiates external protocol or definition</b><br>
2406   * Type: <b>uri</b><br>
2407   * Path: <b>DeviceRequest.instantiatesUri</b><br>
2408   * </p>
2409   */
2410  public static final ca.uhn.fhir.rest.gclient.UriClientParam INSTANTIATES_URI = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_INSTANTIATES_URI);
2411
2412 /**
2413   * Search parameter: <b>insurance</b>
2414   * <p>
2415   * Description: <b>Associated insurance coverage</b><br>
2416   * Type: <b>reference</b><br>
2417   * Path: <b>DeviceRequest.insurance</b><br>
2418   * </p>
2419   */
2420  @SearchParamDefinition(name="insurance", path="DeviceRequest.insurance", description="Associated insurance coverage", type="reference", target={ClaimResponse.class, Coverage.class } )
2421  public static final String SP_INSURANCE = "insurance";
2422 /**
2423   * <b>Fluent Client</b> search parameter constant for <b>insurance</b>
2424   * <p>
2425   * Description: <b>Associated insurance coverage</b><br>
2426   * Type: <b>reference</b><br>
2427   * Path: <b>DeviceRequest.insurance</b><br>
2428   * </p>
2429   */
2430  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INSURANCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INSURANCE);
2431
2432/**
2433   * Constant for fluent queries to be used to add include statements. Specifies
2434   * the path value of "<b>DeviceRequest:insurance</b>".
2435   */
2436  public static final ca.uhn.fhir.model.api.Include INCLUDE_INSURANCE = new ca.uhn.fhir.model.api.Include("DeviceRequest:insurance").toLocked();
2437
2438 /**
2439   * Search parameter: <b>intent</b>
2440   * <p>
2441   * Description: <b>proposal | plan | original-order |reflex-order</b><br>
2442   * Type: <b>token</b><br>
2443   * Path: <b>DeviceRequest.intent</b><br>
2444   * </p>
2445   */
2446  @SearchParamDefinition(name="intent", path="DeviceRequest.intent", description="proposal | plan | original-order |reflex-order", type="token" )
2447  public static final String SP_INTENT = "intent";
2448 /**
2449   * <b>Fluent Client</b> search parameter constant for <b>intent</b>
2450   * <p>
2451   * Description: <b>proposal | plan | original-order |reflex-order</b><br>
2452   * Type: <b>token</b><br>
2453   * Path: <b>DeviceRequest.intent</b><br>
2454   * </p>
2455   */
2456  public static final ca.uhn.fhir.rest.gclient.TokenClientParam INTENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_INTENT);
2457
2458 /**
2459   * Search parameter: <b>performer-code</b>
2460   * <p>
2461   * Description: <b>Desired performer for service</b><br>
2462   * Type: <b>token</b><br>
2463   * Path: <b>DeviceRequest.performer.concept</b><br>
2464   * </p>
2465   */
2466  @SearchParamDefinition(name="performer-code", path="DeviceRequest.performer.concept", description="Desired performer for service", type="token" )
2467  public static final String SP_PERFORMER_CODE = "performer-code";
2468 /**
2469   * <b>Fluent Client</b> search parameter constant for <b>performer-code</b>
2470   * <p>
2471   * Description: <b>Desired performer for service</b><br>
2472   * Type: <b>token</b><br>
2473   * Path: <b>DeviceRequest.performer.concept</b><br>
2474   * </p>
2475   */
2476  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PERFORMER_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PERFORMER_CODE);
2477
2478 /**
2479   * Search parameter: <b>performer</b>
2480   * <p>
2481   * Description: <b>Desired performer for service</b><br>
2482   * Type: <b>reference</b><br>
2483   * Path: <b>DeviceRequest.performer.reference</b><br>
2484   * </p>
2485   */
2486  @SearchParamDefinition(name="performer", path="DeviceRequest.performer.reference", description="Desired performer for service", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={CareTeam.class, Device.class, HealthcareService.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
2487  public static final String SP_PERFORMER = "performer";
2488 /**
2489   * <b>Fluent Client</b> search parameter constant for <b>performer</b>
2490   * <p>
2491   * Description: <b>Desired performer for service</b><br>
2492   * Type: <b>reference</b><br>
2493   * Path: <b>DeviceRequest.performer.reference</b><br>
2494   * </p>
2495   */
2496  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PERFORMER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PERFORMER);
2497
2498/**
2499   * Constant for fluent queries to be used to add include statements. Specifies
2500   * the path value of "<b>DeviceRequest:performer</b>".
2501   */
2502  public static final ca.uhn.fhir.model.api.Include INCLUDE_PERFORMER = new ca.uhn.fhir.model.api.Include("DeviceRequest:performer").toLocked();
2503
2504 /**
2505   * Search parameter: <b>prior-request</b>
2506   * <p>
2507   * Description: <b>Request takes the place of referenced completed or terminated requests</b><br>
2508   * Type: <b>reference</b><br>
2509   * Path: <b>DeviceRequest.replaces</b><br>
2510   * </p>
2511   */
2512  @SearchParamDefinition(name="prior-request", path="DeviceRequest.replaces", description="Request takes the place of referenced completed or terminated requests", type="reference", target={DeviceRequest.class } )
2513  public static final String SP_PRIOR_REQUEST = "prior-request";
2514 /**
2515   * <b>Fluent Client</b> search parameter constant for <b>prior-request</b>
2516   * <p>
2517   * Description: <b>Request takes the place of referenced completed or terminated requests</b><br>
2518   * Type: <b>reference</b><br>
2519   * Path: <b>DeviceRequest.replaces</b><br>
2520   * </p>
2521   */
2522  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PRIOR_REQUEST = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PRIOR_REQUEST);
2523
2524/**
2525   * Constant for fluent queries to be used to add include statements. Specifies
2526   * the path value of "<b>DeviceRequest:prior-request</b>".
2527   */
2528  public static final ca.uhn.fhir.model.api.Include INCLUDE_PRIOR_REQUEST = new ca.uhn.fhir.model.api.Include("DeviceRequest:prior-request").toLocked();
2529
2530 /**
2531   * Search parameter: <b>requester</b>
2532   * <p>
2533   * Description: <b>Who/what is requesting service</b><br>
2534   * Type: <b>reference</b><br>
2535   * Path: <b>DeviceRequest.requester</b><br>
2536   * </p>
2537   */
2538  @SearchParamDefinition(name="requester", path="DeviceRequest.requester", description="Who/what is requesting service", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={Device.class, Organization.class, Practitioner.class, PractitionerRole.class } )
2539  public static final String SP_REQUESTER = "requester";
2540 /**
2541   * <b>Fluent Client</b> search parameter constant for <b>requester</b>
2542   * <p>
2543   * Description: <b>Who/what is requesting service</b><br>
2544   * Type: <b>reference</b><br>
2545   * Path: <b>DeviceRequest.requester</b><br>
2546   * </p>
2547   */
2548  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REQUESTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REQUESTER);
2549
2550/**
2551   * Constant for fluent queries to be used to add include statements. Specifies
2552   * the path value of "<b>DeviceRequest:requester</b>".
2553   */
2554  public static final ca.uhn.fhir.model.api.Include INCLUDE_REQUESTER = new ca.uhn.fhir.model.api.Include("DeviceRequest:requester").toLocked();
2555
2556 /**
2557   * Search parameter: <b>status</b>
2558   * <p>
2559   * Description: <b>entered-in-error | draft | active |suspended | completed</b><br>
2560   * Type: <b>token</b><br>
2561   * Path: <b>DeviceRequest.status</b><br>
2562   * </p>
2563   */
2564  @SearchParamDefinition(name="status", path="DeviceRequest.status", description="entered-in-error | draft | active |suspended | completed", type="token" )
2565  public static final String SP_STATUS = "status";
2566 /**
2567   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2568   * <p>
2569   * Description: <b>entered-in-error | draft | active |suspended | completed</b><br>
2570   * Type: <b>token</b><br>
2571   * Path: <b>DeviceRequest.status</b><br>
2572   * </p>
2573   */
2574  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2575
2576 /**
2577   * Search parameter: <b>subject</b>
2578   * <p>
2579   * Description: <b>Individual the service is ordered for</b><br>
2580   * Type: <b>reference</b><br>
2581   * Path: <b>DeviceRequest.subject</b><br>
2582   * </p>
2583   */
2584  @SearchParamDefinition(name="subject", path="DeviceRequest.subject", description="Individual the service is ordered for", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Device.class, Group.class, Location.class, Patient.class } )
2585  public static final String SP_SUBJECT = "subject";
2586 /**
2587   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
2588   * <p>
2589   * Description: <b>Individual the service is ordered for</b><br>
2590   * Type: <b>reference</b><br>
2591   * Path: <b>DeviceRequest.subject</b><br>
2592   * </p>
2593   */
2594  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
2595
2596/**
2597   * Constant for fluent queries to be used to add include statements. Specifies
2598   * the path value of "<b>DeviceRequest:subject</b>".
2599   */
2600  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("DeviceRequest:subject").toLocked();
2601
2602 /**
2603   * Search parameter: <b>code</b>
2604   * <p>
2605   * Description: <b>Multiple Resources: 
2606
2607* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
2608* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
2609* [AuditEvent](auditevent.html): More specific code for the event
2610* [Basic](basic.html): Kind of Resource
2611* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
2612* [Condition](condition.html): Code for the condition
2613* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
2614* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
2615* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result
2616* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
2617* [ImagingSelection](imagingselection.html): The imaging selection status
2618* [List](list.html): What the purpose of this list is
2619* [Medication](medication.html): Returns medications for a specific code
2620* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
2621* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
2622* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
2623* [MedicationStatement](medicationstatement.html): Return statements of this medication code
2624* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
2625* [Observation](observation.html): The code of the observation type
2626* [Procedure](procedure.html): A code to identify a  procedure
2627* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
2628* [Task](task.html): Search by task code
2629</b><br>
2630   * Type: <b>token</b><br>
2631   * Path: <b>AdverseEvent.code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | AuditEvent.code | Basic.code | ChargeItem.code | Condition.code | DetectedIssue.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | ImagingSelection.status | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationStatement.medication.concept | NutritionIntake.code | Observation.code | Procedure.code | RequestOrchestration.code | Task.code</b><br>
2632   * </p>
2633   */
2634  @SearchParamDefinition(name="code", path="AdverseEvent.code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | AuditEvent.code | Basic.code | ChargeItem.code | Condition.code | DetectedIssue.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | ImagingSelection.status | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationStatement.medication.concept | NutritionIntake.code | Observation.code | Procedure.code | RequestOrchestration.code | Task.code", description="Multiple Resources: \r\n\r\n* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted\r\n* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance\r\n* [AuditEvent](auditevent.html): More specific code for the event\r\n* [Basic](basic.html): Kind of Resource\r\n* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code\r\n* [Condition](condition.html): Code for the condition\r\n* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.\r\n* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered\r\n* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code\r\n* [ImagingSelection](imagingselection.html): The imaging selection status\r\n* [List](list.html): What the purpose of this list is\r\n* [Medication](medication.html): Returns medications for a specific code\r\n* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code\r\n* [MedicationStatement](medicationstatement.html): Return statements of this medication code\r\n* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake\r\n* [Observation](observation.html): The code of the observation type\r\n* [Procedure](procedure.html): A code to identify a  procedure\r\n* [RequestOrchestration](requestorchestration.html): The code of the request orchestration\r\n* [Task](task.html): Search by task code\r\n", type="token" )
2635  public static final String SP_CODE = "code";
2636 /**
2637   * <b>Fluent Client</b> search parameter constant for <b>code</b>
2638   * <p>
2639   * Description: <b>Multiple Resources: 
2640
2641* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
2642* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
2643* [AuditEvent](auditevent.html): More specific code for the event
2644* [Basic](basic.html): Kind of Resource
2645* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
2646* [Condition](condition.html): Code for the condition
2647* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
2648* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
2649* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result
2650* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
2651* [ImagingSelection](imagingselection.html): The imaging selection status
2652* [List](list.html): What the purpose of this list is
2653* [Medication](medication.html): Returns medications for a specific code
2654* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
2655* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
2656* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
2657* [MedicationStatement](medicationstatement.html): Return statements of this medication code
2658* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
2659* [Observation](observation.html): The code of the observation type
2660* [Procedure](procedure.html): A code to identify a  procedure
2661* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
2662* [Task](task.html): Search by task code
2663</b><br>
2664   * Type: <b>token</b><br>
2665   * Path: <b>AdverseEvent.code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | AuditEvent.code | Basic.code | ChargeItem.code | Condition.code | DetectedIssue.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | ImagingSelection.status | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationStatement.medication.concept | NutritionIntake.code | Observation.code | Procedure.code | RequestOrchestration.code | Task.code</b><br>
2666   * </p>
2667   */
2668  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
2669
2670 /**
2671   * Search parameter: <b>encounter</b>
2672   * <p>
2673   * Description: <b>Multiple Resources: 
2674
2675* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
2676* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
2677* [ChargeItem](chargeitem.html): Encounter associated with event
2678* [Claim](claim.html): Encounters associated with a billed line item
2679* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
2680* [Communication](communication.html): The Encounter during which this Communication was created
2681* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
2682* [Composition](composition.html): Context of the Composition
2683* [Condition](condition.html): The Encounter during which this Condition was created
2684* [DeviceRequest](devicerequest.html): Encounter during which request was created
2685* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
2686* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
2687* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
2688* [Flag](flag.html): Alert relevant during encounter
2689* [ImagingStudy](imagingstudy.html): The context of the study
2690* [List](list.html): Context in which list created
2691* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
2692* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
2693* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
2694* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
2695* [Observation](observation.html): Encounter related to the observation
2696* [Procedure](procedure.html): The Encounter during which this Procedure was created
2697* [Provenance](provenance.html): Encounter related to the Provenance
2698* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
2699* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
2700* [RiskAssessment](riskassessment.html): Where was assessment performed?
2701* [ServiceRequest](servicerequest.html): An encounter in which this request is made
2702* [Task](task.html): Search by encounter
2703* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
2704</b><br>
2705   * Type: <b>reference</b><br>
2706   * Path: <b>AuditEvent.encounter | CarePlan.encounter | ChargeItem.encounter | Claim.item.encounter | ClinicalImpression.encounter | Communication.encounter | CommunicationRequest.encounter | Composition.encounter | Condition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | EncounterHistory.encounter | ExplanationOfBenefit.item.encounter | Flag.encounter | ImagingStudy.encounter | List.encounter | MedicationDispense.encounter | MedicationStatement.encounter | NutritionIntake.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | Provenance.encounter | QuestionnaireResponse.encounter | RequestOrchestration.encounter | RiskAssessment.encounter | ServiceRequest.encounter | Task.encounter | VisionPrescription.encounter</b><br>
2707   * </p>
2708   */
2709  @SearchParamDefinition(name="encounter", path="AuditEvent.encounter | CarePlan.encounter | ChargeItem.encounter | Claim.item.encounter | ClinicalImpression.encounter | Communication.encounter | CommunicationRequest.encounter | Composition.encounter | Condition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | EncounterHistory.encounter | ExplanationOfBenefit.item.encounter | Flag.encounter | ImagingStudy.encounter | List.encounter | MedicationDispense.encounter | MedicationStatement.encounter | NutritionIntake.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | Provenance.encounter | QuestionnaireResponse.encounter | RequestOrchestration.encounter | RiskAssessment.encounter | ServiceRequest.encounter | Task.encounter | VisionPrescription.encounter", description="Multiple Resources: \r\n\r\n* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent\r\n* [CarePlan](careplan.html): The Encounter during which this CarePlan was created\r\n* [ChargeItem](chargeitem.html): Encounter associated with event\r\n* [Claim](claim.html): Encounters associated with a billed line item\r\n* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created\r\n* [Communication](communication.html): The Encounter during which this Communication was created\r\n* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created\r\n* [Composition](composition.html): Context of the Composition\r\n* [Condition](condition.html): The Encounter during which this Condition was created\r\n* [DeviceRequest](devicerequest.html): Encounter during which request was created\r\n* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made\r\n* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values\r\n* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item\r\n* [Flag](flag.html): Alert relevant during encounter\r\n* [ImagingStudy](imagingstudy.html): The context of the study\r\n* [List](list.html): Context in which list created\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter\r\n* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier\r\n* [Observation](observation.html): Encounter related to the observation\r\n* [Procedure](procedure.html): The Encounter during which this Procedure was created\r\n* [Provenance](provenance.html): Encounter related to the Provenance\r\n* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response\r\n* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to\r\n* [RiskAssessment](riskassessment.html): Where was assessment performed?\r\n* [ServiceRequest](servicerequest.html): An encounter in which this request is made\r\n* [Task](task.html): Search by encounter\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Encounter") }, target={Encounter.class } )
2710  public static final String SP_ENCOUNTER = "encounter";
2711 /**
2712   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
2713   * <p>
2714   * Description: <b>Multiple Resources: 
2715
2716* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
2717* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
2718* [ChargeItem](chargeitem.html): Encounter associated with event
2719* [Claim](claim.html): Encounters associated with a billed line item
2720* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
2721* [Communication](communication.html): The Encounter during which this Communication was created
2722* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
2723* [Composition](composition.html): Context of the Composition
2724* [Condition](condition.html): The Encounter during which this Condition was created
2725* [DeviceRequest](devicerequest.html): Encounter during which request was created
2726* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
2727* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
2728* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
2729* [Flag](flag.html): Alert relevant during encounter
2730* [ImagingStudy](imagingstudy.html): The context of the study
2731* [List](list.html): Context in which list created
2732* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
2733* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
2734* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
2735* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
2736* [Observation](observation.html): Encounter related to the observation
2737* [Procedure](procedure.html): The Encounter during which this Procedure was created
2738* [Provenance](provenance.html): Encounter related to the Provenance
2739* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
2740* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
2741* [RiskAssessment](riskassessment.html): Where was assessment performed?
2742* [ServiceRequest](servicerequest.html): An encounter in which this request is made
2743* [Task](task.html): Search by encounter
2744* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
2745</b><br>
2746   * Type: <b>reference</b><br>
2747   * Path: <b>AuditEvent.encounter | CarePlan.encounter | ChargeItem.encounter | Claim.item.encounter | ClinicalImpression.encounter | Communication.encounter | CommunicationRequest.encounter | Composition.encounter | Condition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | EncounterHistory.encounter | ExplanationOfBenefit.item.encounter | Flag.encounter | ImagingStudy.encounter | List.encounter | MedicationDispense.encounter | MedicationStatement.encounter | NutritionIntake.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | Provenance.encounter | QuestionnaireResponse.encounter | RequestOrchestration.encounter | RiskAssessment.encounter | ServiceRequest.encounter | Task.encounter | VisionPrescription.encounter</b><br>
2748   * </p>
2749   */
2750  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
2751
2752/**
2753   * Constant for fluent queries to be used to add include statements. Specifies
2754   * the path value of "<b>DeviceRequest:encounter</b>".
2755   */
2756  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("DeviceRequest:encounter").toLocked();
2757
2758 /**
2759   * Search parameter: <b>identifier</b>
2760   * <p>
2761   * Description: <b>Multiple Resources: 
2762
2763* [Account](account.html): Account number
2764* [AdverseEvent](adverseevent.html): Business identifier for the event
2765* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2766* [Appointment](appointment.html): An Identifier of the Appointment
2767* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
2768* [Basic](basic.html): Business identifier
2769* [BodyStructure](bodystructure.html): Bodystructure identifier
2770* [CarePlan](careplan.html): External Ids for this plan
2771* [CareTeam](careteam.html): External Ids for this team
2772* [ChargeItem](chargeitem.html): Business Identifier for item
2773* [Claim](claim.html): The primary identifier of the financial resource
2774* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
2775* [ClinicalImpression](clinicalimpression.html): Business identifier
2776* [Communication](communication.html): Unique identifier
2777* [CommunicationRequest](communicationrequest.html): Unique identifier
2778* [Composition](composition.html): Version-independent identifier for the Composition
2779* [Condition](condition.html): A unique identifier of the condition record
2780* [Consent](consent.html): Identifier for this record (external references)
2781* [Contract](contract.html): The identity of the contract
2782* [Coverage](coverage.html): The primary identifier of the insured and the coverage
2783* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
2784* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
2785* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2786* [DeviceRequest](devicerequest.html): Business identifier for request/order
2787* [DeviceUsage](deviceusage.html): Search by identifier
2788* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2789* [DocumentReference](documentreference.html): Identifier of the attachment binary
2790* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2791* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
2792* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2793* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
2794* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2795* [Flag](flag.html): Business identifier
2796* [Goal](goal.html): External Ids for this goal
2797* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
2798* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
2799* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
2800* [Immunization](immunization.html): Business identifier
2801* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
2802* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
2803* [Invoice](invoice.html): Business Identifier for item
2804* [List](list.html): Business identifier
2805* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
2806* [Medication](medication.html): Returns medications with this external identifier
2807* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2808* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2809* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2810* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
2811* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
2812* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
2813* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2814* [Observation](observation.html): The unique id for a particular observation
2815* [Person](person.html): A person Identifier
2816* [Procedure](procedure.html): A unique identifier for a procedure
2817* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
2818* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
2819* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
2820* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
2821* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2822* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2823* [Specimen](specimen.html): The unique identifier associated with the specimen
2824* [SupplyDelivery](supplydelivery.html): External identifier
2825* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2826* [Task](task.html): Search for a task instance by its business identifier
2827* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2828</b><br>
2829   * Type: <b>token</b><br>
2830   * Path: <b>Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier</b><br>
2831   * </p>
2832   */
2833  @SearchParamDefinition(name="identifier", path="Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier", description="Multiple Resources: \r\n\r\n* [Account](account.html): Account number\r\n* [AdverseEvent](adverseevent.html): Business identifier for the event\r\n* [AllergyIntolerance](allergyintolerance.html): External ids for this item\r\n* [Appointment](appointment.html): An Identifier of the Appointment\r\n* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response\r\n* [Basic](basic.html): Business identifier\r\n* [BodyStructure](bodystructure.html): Bodystructure identifier\r\n* [CarePlan](careplan.html): External Ids for this plan\r\n* [CareTeam](careteam.html): External Ids for this team\r\n* [ChargeItem](chargeitem.html): Business Identifier for item\r\n* [Claim](claim.html): The primary identifier of the financial resource\r\n* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse\r\n* [ClinicalImpression](clinicalimpression.html): Business identifier\r\n* [Communication](communication.html): Unique identifier\r\n* [CommunicationRequest](communicationrequest.html): Unique identifier\r\n* [Composition](composition.html): Version-independent identifier for the Composition\r\n* [Condition](condition.html): A unique identifier of the condition record\r\n* [Consent](consent.html): Identifier for this record (external references)\r\n* [Contract](contract.html): The identity of the contract\r\n* [Coverage](coverage.html): The primary identifier of the insured and the coverage\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier\r\n* [DetectedIssue](detectedissue.html): Unique id for the detected issue\r\n* [DeviceRequest](devicerequest.html): Business identifier for request/order\r\n* [DeviceUsage](deviceusage.html): Search by identifier\r\n* [DiagnosticReport](diagnosticreport.html): An identifier for the report\r\n* [DocumentReference](documentreference.html): Identifier of the attachment binary\r\n* [Encounter](encounter.html): Identifier(s) by which this encounter is known\r\n* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment\r\n* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier\r\n* [Flag](flag.html): Business identifier\r\n* [Goal](goal.html): External Ids for this goal\r\n* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response\r\n* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection\r\n* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID\r\n* [Immunization](immunization.html): Business identifier\r\n* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier\r\n* [Invoice](invoice.html): Business Identifier for item\r\n* [List](list.html): Business identifier\r\n* [MeasureReport](measurereport.html): External identifier of the measure report to be returned\r\n* [Medication](medication.html): Returns medications with this external identifier\r\n* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier\r\n* [MedicationStatement](medicationstatement.html): Return statements with this external identifier\r\n* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence\r\n* [NutritionIntake](nutritionintake.html): Return statements with this external identifier\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier\r\n* [Observation](observation.html): The unique id for a particular observation\r\n* [Person](person.html): A person Identifier\r\n* [Procedure](procedure.html): A unique identifier for a procedure\r\n* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response\r\n* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson\r\n* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration\r\n* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study\r\n* [RiskAssessment](riskassessment.html): Unique identifier for the assessment\r\n* [ServiceRequest](servicerequest.html): Identifiers assigned to this order\r\n* [Specimen](specimen.html): The unique identifier associated with the specimen\r\n* [SupplyDelivery](supplydelivery.html): External identifier\r\n* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest\r\n* [Task](task.html): Search for a task instance by its business identifier\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier\r\n", type="token" )
2834  public static final String SP_IDENTIFIER = "identifier";
2835 /**
2836   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2837   * <p>
2838   * Description: <b>Multiple Resources: 
2839
2840* [Account](account.html): Account number
2841* [AdverseEvent](adverseevent.html): Business identifier for the event
2842* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2843* [Appointment](appointment.html): An Identifier of the Appointment
2844* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
2845* [Basic](basic.html): Business identifier
2846* [BodyStructure](bodystructure.html): Bodystructure identifier
2847* [CarePlan](careplan.html): External Ids for this plan
2848* [CareTeam](careteam.html): External Ids for this team
2849* [ChargeItem](chargeitem.html): Business Identifier for item
2850* [Claim](claim.html): The primary identifier of the financial resource
2851* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
2852* [ClinicalImpression](clinicalimpression.html): Business identifier
2853* [Communication](communication.html): Unique identifier
2854* [CommunicationRequest](communicationrequest.html): Unique identifier
2855* [Composition](composition.html): Version-independent identifier for the Composition
2856* [Condition](condition.html): A unique identifier of the condition record
2857* [Consent](consent.html): Identifier for this record (external references)
2858* [Contract](contract.html): The identity of the contract
2859* [Coverage](coverage.html): The primary identifier of the insured and the coverage
2860* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
2861* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
2862* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2863* [DeviceRequest](devicerequest.html): Business identifier for request/order
2864* [DeviceUsage](deviceusage.html): Search by identifier
2865* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2866* [DocumentReference](documentreference.html): Identifier of the attachment binary
2867* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2868* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
2869* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2870* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
2871* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2872* [Flag](flag.html): Business identifier
2873* [Goal](goal.html): External Ids for this goal
2874* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
2875* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
2876* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
2877* [Immunization](immunization.html): Business identifier
2878* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
2879* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
2880* [Invoice](invoice.html): Business Identifier for item
2881* [List](list.html): Business identifier
2882* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
2883* [Medication](medication.html): Returns medications with this external identifier
2884* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2885* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2886* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2887* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
2888* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
2889* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
2890* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2891* [Observation](observation.html): The unique id for a particular observation
2892* [Person](person.html): A person Identifier
2893* [Procedure](procedure.html): A unique identifier for a procedure
2894* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
2895* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
2896* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
2897* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
2898* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2899* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2900* [Specimen](specimen.html): The unique identifier associated with the specimen
2901* [SupplyDelivery](supplydelivery.html): External identifier
2902* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2903* [Task](task.html): Search for a task instance by its business identifier
2904* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2905</b><br>
2906   * Type: <b>token</b><br>
2907   * Path: <b>Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier</b><br>
2908   * </p>
2909   */
2910  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2911
2912 /**
2913   * Search parameter: <b>patient</b>
2914   * <p>
2915   * Description: <b>Multiple Resources: 
2916
2917* [Account](account.html): The entity that caused the expenses
2918* [AdverseEvent](adverseevent.html): Subject impacted by event
2919* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2920* [Appointment](appointment.html): One of the individuals of the appointment is this patient
2921* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
2922* [AuditEvent](auditevent.html): Where the activity involved patient data
2923* [Basic](basic.html): Identifies the focus of this resource
2924* [BodyStructure](bodystructure.html): Who this is about
2925* [CarePlan](careplan.html): Who the care plan is for
2926* [CareTeam](careteam.html): Who care team is for
2927* [ChargeItem](chargeitem.html): Individual service was done for/to
2928* [Claim](claim.html): Patient receiving the products or services
2929* [ClaimResponse](claimresponse.html): The subject of care
2930* [ClinicalImpression](clinicalimpression.html): Patient assessed
2931* [Communication](communication.html): Focus of message
2932* [CommunicationRequest](communicationrequest.html): Focus of message
2933* [Composition](composition.html): Who and/or what the composition is about
2934* [Condition](condition.html): Who has the condition?
2935* [Consent](consent.html): Who the consent applies to
2936* [Contract](contract.html): The identity of the subject of the contract (if a patient)
2937* [Coverage](coverage.html): Retrieve coverages for a patient
2938* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
2939* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
2940* [DetectedIssue](detectedissue.html): Associated patient
2941* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2942* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
2943* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2944* [DocumentReference](documentreference.html): Who/what is the subject of the document
2945* [Encounter](encounter.html): The patient present at the encounter
2946* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
2947* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2948* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
2949* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2950* [Flag](flag.html): The identity of a subject to list flags for
2951* [Goal](goal.html): Who this goal is intended for
2952* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
2953* [ImagingSelection](imagingselection.html): Who the study is about
2954* [ImagingStudy](imagingstudy.html): Who the study is about
2955* [Immunization](immunization.html): The patient for the vaccination record
2956* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
2957* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
2958* [Invoice](invoice.html): Recipient(s) of goods and services
2959* [List](list.html): If all resources have the same subject
2960* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
2961* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2962* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2963* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2964* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2965* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
2966* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
2967* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
2968* [Observation](observation.html): The subject that the observation is about (if patient)
2969* [Person](person.html): The Person links to this Patient
2970* [Procedure](procedure.html): Search by subject - a patient
2971* [Provenance](provenance.html): Where the activity involved patient data
2972* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
2973* [RelatedPerson](relatedperson.html): The patient this related person is related to
2974* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
2975* [ResearchSubject](researchsubject.html): Who or what is part of study
2976* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2977* [ServiceRequest](servicerequest.html): Search by subject - a patient
2978* [Specimen](specimen.html): The patient the specimen comes from
2979* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2980* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
2981* [Task](task.html): Search by patient
2982* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2983</b><br>
2984   * Type: <b>reference</b><br>
2985   * Path: <b>Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient</b><br>
2986   * </p>
2987   */
2988  @SearchParamDefinition(name="patient", path="Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [Account](account.html): The entity that caused the expenses\r\n* [AdverseEvent](adverseevent.html): Subject impacted by event\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [Appointment](appointment.html): One of the individuals of the appointment is this patient\r\n* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient\r\n* [AuditEvent](auditevent.html): Where the activity involved patient data\r\n* [Basic](basic.html): Identifies the focus of this resource\r\n* [BodyStructure](bodystructure.html): Who this is about\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ChargeItem](chargeitem.html): Individual service was done for/to\r\n* [Claim](claim.html): Patient receiving the products or services\r\n* [ClaimResponse](claimresponse.html): The subject of care\r\n* [ClinicalImpression](clinicalimpression.html): Patient assessed\r\n* [Communication](communication.html): Focus of message\r\n* [CommunicationRequest](communicationrequest.html): Focus of message\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [Contract](contract.html): The identity of the subject of the contract (if a patient)\r\n* [Coverage](coverage.html): Retrieve coverages for a patient\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient present at the encounter\r\n* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results\r\n* [ImagingSelection](imagingselection.html): Who the study is about\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for\r\n* [Invoice](invoice.html): Recipient(s) of goods and services\r\n* [List](list.html): If all resources have the same subject\r\n* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.\r\n* [MolecularSequence](molecularsequence.html): The subject that the sequence is about\r\n* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Person](person.html): The Person links to this Patient\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [Provenance](provenance.html): Where the activity involved patient data\r\n* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response\r\n* [RelatedPerson](relatedperson.html): The patient this related person is related to\r\n* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations\r\n* [ResearchSubject](researchsubject.html): Who or what is part of study\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [Specimen](specimen.html): The patient the specimen comes from\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined\r\n* [Task](task.html): Search by patient\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", target={Patient.class } )
2989  public static final String SP_PATIENT = "patient";
2990 /**
2991   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
2992   * <p>
2993   * Description: <b>Multiple Resources: 
2994
2995* [Account](account.html): The entity that caused the expenses
2996* [AdverseEvent](adverseevent.html): Subject impacted by event
2997* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2998* [Appointment](appointment.html): One of the individuals of the appointment is this patient
2999* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
3000* [AuditEvent](auditevent.html): Where the activity involved patient data
3001* [Basic](basic.html): Identifies the focus of this resource
3002* [BodyStructure](bodystructure.html): Who this is about
3003* [CarePlan](careplan.html): Who the care plan is for
3004* [CareTeam](careteam.html): Who care team is for
3005* [ChargeItem](chargeitem.html): Individual service was done for/to
3006* [Claim](claim.html): Patient receiving the products or services
3007* [ClaimResponse](claimresponse.html): The subject of care
3008* [ClinicalImpression](clinicalimpression.html): Patient assessed
3009* [Communication](communication.html): Focus of message
3010* [CommunicationRequest](communicationrequest.html): Focus of message
3011* [Composition](composition.html): Who and/or what the composition is about
3012* [Condition](condition.html): Who has the condition?
3013* [Consent](consent.html): Who the consent applies to
3014* [Contract](contract.html): The identity of the subject of the contract (if a patient)
3015* [Coverage](coverage.html): Retrieve coverages for a patient
3016* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
3017* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
3018* [DetectedIssue](detectedissue.html): Associated patient
3019* [DeviceRequest](devicerequest.html): Individual the service is ordered for
3020* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
3021* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
3022* [DocumentReference](documentreference.html): Who/what is the subject of the document
3023* [Encounter](encounter.html): The patient present at the encounter
3024* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
3025* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
3026* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
3027* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
3028* [Flag](flag.html): The identity of a subject to list flags for
3029* [Goal](goal.html): Who this goal is intended for
3030* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
3031* [ImagingSelection](imagingselection.html): Who the study is about
3032* [ImagingStudy](imagingstudy.html): Who the study is about
3033* [Immunization](immunization.html): The patient for the vaccination record
3034* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
3035* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
3036* [Invoice](invoice.html): Recipient(s) of goods and services
3037* [List](list.html): If all resources have the same subject
3038* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
3039* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
3040* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
3041* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
3042* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
3043* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
3044* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
3045* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
3046* [Observation](observation.html): The subject that the observation is about (if patient)
3047* [Person](person.html): The Person links to this Patient
3048* [Procedure](procedure.html): Search by subject - a patient
3049* [Provenance](provenance.html): Where the activity involved patient data
3050* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
3051* [RelatedPerson](relatedperson.html): The patient this related person is related to
3052* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
3053* [ResearchSubject](researchsubject.html): Who or what is part of study
3054* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
3055* [ServiceRequest](servicerequest.html): Search by subject - a patient
3056* [Specimen](specimen.html): The patient the specimen comes from
3057* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
3058* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
3059* [Task](task.html): Search by patient
3060* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
3061</b><br>
3062   * Type: <b>reference</b><br>
3063   * Path: <b>Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient</b><br>
3064   * </p>
3065   */
3066  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
3067
3068/**
3069   * Constant for fluent queries to be used to add include statements. Specifies
3070   * the path value of "<b>DeviceRequest:patient</b>".
3071   */
3072  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("DeviceRequest:patient").toLocked();
3073
3074
3075}
3076