001package org.hl7.fhir.r4b.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 Fri, Dec 31, 2021 05:58+1100 for FHIR v4.3.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r4b.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 for a patient to employ a medical device. The device may be an implantable device, or an external assistive device, such as a walker.
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 Error("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 = "priorRequest", type = {Reference.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> priorRequest;
366
367    /**
368     * Composite request this is part of.
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="Composite request this is part of." )
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 device 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 device 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     * The details of the device to be used.
400     */
401    @Child(name = "code", type = {Device.class, CodeableConcept.class}, order=9, min=1, max=1, modifier=false, summary=true)
402    @Description(shortDefinition="Device requested", formalDefinition="The details of the device to be used." )
403    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/device-kind")
404    protected DataType code;
405
406    /**
407     * Specific parameters for the ordered item.  For example, the prism value for lenses.
408     */
409    @Child(name = "parameter", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
410    @Description(shortDefinition="Device details", formalDefinition="Specific parameters for the ordered item.  For example, the prism value for lenses." )
411    protected List<DeviceRequestParameterComponent> parameter;
412
413    /**
414     * The patient who will use the device.
415     */
416    @Child(name = "subject", type = {Patient.class, Group.class, Location.class, Device.class}, order=11, min=1, max=1, modifier=false, summary=true)
417    @Description(shortDefinition="Focus of request", formalDefinition="The patient who will use the device." )
418    protected Reference subject;
419
420    /**
421     * An encounter that provides additional context in which this request is made.
422     */
423    @Child(name = "encounter", type = {Encounter.class}, order=12, min=0, max=1, modifier=false, summary=true)
424    @Description(shortDefinition="Encounter motivating request", formalDefinition="An encounter that provides additional context in which this request is made." )
425    protected Reference encounter;
426
427    /**
428     * 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".
429     */
430    @Child(name = "occurrence", type = {DateTimeType.class, Period.class, Timing.class}, order=13, min=0, max=1, modifier=false, summary=true)
431    @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\"." )
432    protected DataType occurrence;
433
434    /**
435     * When the request transitioned to being actionable.
436     */
437    @Child(name = "authoredOn", type = {DateTimeType.class}, order=14, min=0, max=1, modifier=false, summary=true)
438    @Description(shortDefinition="When recorded", formalDefinition="When the request transitioned to being actionable." )
439    protected DateTimeType authoredOn;
440
441    /**
442     * The individual who initiated the request and has responsibility for its activation.
443     */
444    @Child(name = "requester", type = {Device.class, Practitioner.class, PractitionerRole.class, Organization.class}, order=15, min=0, max=1, modifier=false, summary=true)
445    @Description(shortDefinition="Who/what is requesting diagnostics", formalDefinition="The individual who initiated the request and has responsibility for its activation." )
446    protected Reference requester;
447
448    /**
449     * Desired type of performer for doing the diagnostic testing.
450     */
451    @Child(name = "performerType", type = {CodeableConcept.class}, order=16, min=0, max=1, modifier=false, summary=true)
452    @Description(shortDefinition="Filler role", formalDefinition="Desired type of performer for doing the diagnostic testing." )
453    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/participant-role")
454    protected CodeableConcept performerType;
455
456    /**
457     * The desired performer for doing the diagnostic testing.
458     */
459    @Child(name = "performer", type = {Practitioner.class, PractitionerRole.class, Organization.class, CareTeam.class, HealthcareService.class, Patient.class, Device.class, RelatedPerson.class}, order=17, min=0, max=1, modifier=false, summary=true)
460    @Description(shortDefinition="Requested Filler", formalDefinition="The desired performer for doing the diagnostic testing." )
461    protected Reference performer;
462
463    /**
464     * Reason or justification for the use of this device.
465     */
466    @Child(name = "reasonCode", type = {CodeableConcept.class}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
467    @Description(shortDefinition="Coded Reason for request", formalDefinition="Reason or justification for the use of this device." )
468    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-code")
469    protected List<CodeableConcept> reasonCode;
470
471    /**
472     * Reason or justification for the use of this device.
473     */
474    @Child(name = "reasonReference", type = {Condition.class, Observation.class, DiagnosticReport.class, DocumentReference.class}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
475    @Description(shortDefinition="Linked Reason for request", formalDefinition="Reason or justification for the use of this device." )
476    protected List<Reference> reasonReference;
477
478    /**
479     * Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be required for delivering the requested service.
480     */
481    @Child(name = "insurance", type = {Coverage.class, ClaimResponse.class}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
482    @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." )
483    protected List<Reference> insurance;
484
485    /**
486     * 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).
487     */
488    @Child(name = "supportingInfo", type = {Reference.class}, order=21, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
489    @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)." )
490    protected List<Reference> supportingInfo;
491
492    /**
493     * 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.
494     */
495    @Child(name = "note", type = {Annotation.class}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
496    @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." )
497    protected List<Annotation> note;
498
499    /**
500     * Key events in the history of the request.
501     */
502    @Child(name = "relevantHistory", type = {Provenance.class}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
503    @Description(shortDefinition="Request provenance", formalDefinition="Key events in the history of the request." )
504    protected List<Reference> relevantHistory;
505
506    private static final long serialVersionUID = 1859846276L;
507
508  /**
509   * Constructor
510   */
511    public DeviceRequest() {
512      super();
513    }
514
515  /**
516   * Constructor
517   */
518    public DeviceRequest(RequestIntent intent, DataType code, Reference subject) {
519      super();
520      this.setIntent(intent);
521      this.setCode(code);
522      this.setSubject(subject);
523    }
524
525    /**
526     * @return {@link #identifier} (Identifiers assigned to this order by the orderer or by the receiver.)
527     */
528    public List<Identifier> getIdentifier() { 
529      if (this.identifier == null)
530        this.identifier = new ArrayList<Identifier>();
531      return this.identifier;
532    }
533
534    /**
535     * @return Returns a reference to <code>this</code> for easy method chaining
536     */
537    public DeviceRequest setIdentifier(List<Identifier> theIdentifier) { 
538      this.identifier = theIdentifier;
539      return this;
540    }
541
542    public boolean hasIdentifier() { 
543      if (this.identifier == null)
544        return false;
545      for (Identifier item : this.identifier)
546        if (!item.isEmpty())
547          return true;
548      return false;
549    }
550
551    public Identifier addIdentifier() { //3
552      Identifier t = new Identifier();
553      if (this.identifier == null)
554        this.identifier = new ArrayList<Identifier>();
555      this.identifier.add(t);
556      return t;
557    }
558
559    public DeviceRequest addIdentifier(Identifier t) { //3
560      if (t == null)
561        return this;
562      if (this.identifier == null)
563        this.identifier = new ArrayList<Identifier>();
564      this.identifier.add(t);
565      return this;
566    }
567
568    /**
569     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
570     */
571    public Identifier getIdentifierFirstRep() { 
572      if (getIdentifier().isEmpty()) {
573        addIdentifier();
574      }
575      return getIdentifier().get(0);
576    }
577
578    /**
579     * @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.)
580     */
581    public List<CanonicalType> getInstantiatesCanonical() { 
582      if (this.instantiatesCanonical == null)
583        this.instantiatesCanonical = new ArrayList<CanonicalType>();
584      return this.instantiatesCanonical;
585    }
586
587    /**
588     * @return Returns a reference to <code>this</code> for easy method chaining
589     */
590    public DeviceRequest setInstantiatesCanonical(List<CanonicalType> theInstantiatesCanonical) { 
591      this.instantiatesCanonical = theInstantiatesCanonical;
592      return this;
593    }
594
595    public boolean hasInstantiatesCanonical() { 
596      if (this.instantiatesCanonical == null)
597        return false;
598      for (CanonicalType item : this.instantiatesCanonical)
599        if (!item.isEmpty())
600          return true;
601      return false;
602    }
603
604    /**
605     * @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.)
606     */
607    public CanonicalType addInstantiatesCanonicalElement() {//2 
608      CanonicalType t = new CanonicalType();
609      if (this.instantiatesCanonical == null)
610        this.instantiatesCanonical = new ArrayList<CanonicalType>();
611      this.instantiatesCanonical.add(t);
612      return t;
613    }
614
615    /**
616     * @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.)
617     */
618    public DeviceRequest addInstantiatesCanonical(String value) { //1
619      CanonicalType t = new CanonicalType();
620      t.setValue(value);
621      if (this.instantiatesCanonical == null)
622        this.instantiatesCanonical = new ArrayList<CanonicalType>();
623      this.instantiatesCanonical.add(t);
624      return this;
625    }
626
627    /**
628     * @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.)
629     */
630    public boolean hasInstantiatesCanonical(String value) { 
631      if (this.instantiatesCanonical == null)
632        return false;
633      for (CanonicalType v : this.instantiatesCanonical)
634        if (v.getValue().equals(value)) // canonical
635          return true;
636      return false;
637    }
638
639    /**
640     * @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.)
641     */
642    public List<UriType> getInstantiatesUri() { 
643      if (this.instantiatesUri == null)
644        this.instantiatesUri = new ArrayList<UriType>();
645      return this.instantiatesUri;
646    }
647
648    /**
649     * @return Returns a reference to <code>this</code> for easy method chaining
650     */
651    public DeviceRequest setInstantiatesUri(List<UriType> theInstantiatesUri) { 
652      this.instantiatesUri = theInstantiatesUri;
653      return this;
654    }
655
656    public boolean hasInstantiatesUri() { 
657      if (this.instantiatesUri == null)
658        return false;
659      for (UriType item : this.instantiatesUri)
660        if (!item.isEmpty())
661          return true;
662      return false;
663    }
664
665    /**
666     * @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.)
667     */
668    public UriType addInstantiatesUriElement() {//2 
669      UriType t = new UriType();
670      if (this.instantiatesUri == null)
671        this.instantiatesUri = new ArrayList<UriType>();
672      this.instantiatesUri.add(t);
673      return t;
674    }
675
676    /**
677     * @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.)
678     */
679    public DeviceRequest addInstantiatesUri(String value) { //1
680      UriType t = new UriType();
681      t.setValue(value);
682      if (this.instantiatesUri == null)
683        this.instantiatesUri = new ArrayList<UriType>();
684      this.instantiatesUri.add(t);
685      return this;
686    }
687
688    /**
689     * @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.)
690     */
691    public boolean hasInstantiatesUri(String value) { 
692      if (this.instantiatesUri == null)
693        return false;
694      for (UriType v : this.instantiatesUri)
695        if (v.getValue().equals(value)) // uri
696          return true;
697      return false;
698    }
699
700    /**
701     * @return {@link #basedOn} (Plan/proposal/order fulfilled by this request.)
702     */
703    public List<Reference> getBasedOn() { 
704      if (this.basedOn == null)
705        this.basedOn = new ArrayList<Reference>();
706      return this.basedOn;
707    }
708
709    /**
710     * @return Returns a reference to <code>this</code> for easy method chaining
711     */
712    public DeviceRequest setBasedOn(List<Reference> theBasedOn) { 
713      this.basedOn = theBasedOn;
714      return this;
715    }
716
717    public boolean hasBasedOn() { 
718      if (this.basedOn == null)
719        return false;
720      for (Reference item : this.basedOn)
721        if (!item.isEmpty())
722          return true;
723      return false;
724    }
725
726    public Reference addBasedOn() { //3
727      Reference t = new Reference();
728      if (this.basedOn == null)
729        this.basedOn = new ArrayList<Reference>();
730      this.basedOn.add(t);
731      return t;
732    }
733
734    public DeviceRequest addBasedOn(Reference t) { //3
735      if (t == null)
736        return this;
737      if (this.basedOn == null)
738        this.basedOn = new ArrayList<Reference>();
739      this.basedOn.add(t);
740      return this;
741    }
742
743    /**
744     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
745     */
746    public Reference getBasedOnFirstRep() { 
747      if (getBasedOn().isEmpty()) {
748        addBasedOn();
749      }
750      return getBasedOn().get(0);
751    }
752
753    /**
754     * @return {@link #priorRequest} (The request takes the place of the referenced completed or terminated request(s).)
755     */
756    public List<Reference> getPriorRequest() { 
757      if (this.priorRequest == null)
758        this.priorRequest = new ArrayList<Reference>();
759      return this.priorRequest;
760    }
761
762    /**
763     * @return Returns a reference to <code>this</code> for easy method chaining
764     */
765    public DeviceRequest setPriorRequest(List<Reference> thePriorRequest) { 
766      this.priorRequest = thePriorRequest;
767      return this;
768    }
769
770    public boolean hasPriorRequest() { 
771      if (this.priorRequest == null)
772        return false;
773      for (Reference item : this.priorRequest)
774        if (!item.isEmpty())
775          return true;
776      return false;
777    }
778
779    public Reference addPriorRequest() { //3
780      Reference t = new Reference();
781      if (this.priorRequest == null)
782        this.priorRequest = new ArrayList<Reference>();
783      this.priorRequest.add(t);
784      return t;
785    }
786
787    public DeviceRequest addPriorRequest(Reference t) { //3
788      if (t == null)
789        return this;
790      if (this.priorRequest == null)
791        this.priorRequest = new ArrayList<Reference>();
792      this.priorRequest.add(t);
793      return this;
794    }
795
796    /**
797     * @return The first repetition of repeating field {@link #priorRequest}, creating it if it does not already exist {3}
798     */
799    public Reference getPriorRequestFirstRep() { 
800      if (getPriorRequest().isEmpty()) {
801        addPriorRequest();
802      }
803      return getPriorRequest().get(0);
804    }
805
806    /**
807     * @return {@link #groupIdentifier} (Composite request this is part of.)
808     */
809    public Identifier getGroupIdentifier() { 
810      if (this.groupIdentifier == null)
811        if (Configuration.errorOnAutoCreate())
812          throw new Error("Attempt to auto-create DeviceRequest.groupIdentifier");
813        else if (Configuration.doAutoCreate())
814          this.groupIdentifier = new Identifier(); // cc
815      return this.groupIdentifier;
816    }
817
818    public boolean hasGroupIdentifier() { 
819      return this.groupIdentifier != null && !this.groupIdentifier.isEmpty();
820    }
821
822    /**
823     * @param value {@link #groupIdentifier} (Composite request this is part of.)
824     */
825    public DeviceRequest setGroupIdentifier(Identifier value) { 
826      this.groupIdentifier = value;
827      return this;
828    }
829
830    /**
831     * @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
832     */
833    public Enumeration<RequestStatus> getStatusElement() { 
834      if (this.status == null)
835        if (Configuration.errorOnAutoCreate())
836          throw new Error("Attempt to auto-create DeviceRequest.status");
837        else if (Configuration.doAutoCreate())
838          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory()); // bb
839      return this.status;
840    }
841
842    public boolean hasStatusElement() { 
843      return this.status != null && !this.status.isEmpty();
844    }
845
846    public boolean hasStatus() { 
847      return this.status != null && !this.status.isEmpty();
848    }
849
850    /**
851     * @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
852     */
853    public DeviceRequest setStatusElement(Enumeration<RequestStatus> value) { 
854      this.status = value;
855      return this;
856    }
857
858    /**
859     * @return The status of the request.
860     */
861    public RequestStatus getStatus() { 
862      return this.status == null ? null : this.status.getValue();
863    }
864
865    /**
866     * @param value The status of the request.
867     */
868    public DeviceRequest setStatus(RequestStatus value) { 
869      if (value == null)
870        this.status = null;
871      else {
872        if (this.status == null)
873          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory());
874        this.status.setValue(value);
875      }
876      return this;
877    }
878
879    /**
880     * @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
881     */
882    public Enumeration<RequestIntent> getIntentElement() { 
883      if (this.intent == null)
884        if (Configuration.errorOnAutoCreate())
885          throw new Error("Attempt to auto-create DeviceRequest.intent");
886        else if (Configuration.doAutoCreate())
887          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory()); // bb
888      return this.intent;
889    }
890
891    public boolean hasIntentElement() { 
892      return this.intent != null && !this.intent.isEmpty();
893    }
894
895    public boolean hasIntent() { 
896      return this.intent != null && !this.intent.isEmpty();
897    }
898
899    /**
900     * @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
901     */
902    public DeviceRequest setIntentElement(Enumeration<RequestIntent> value) { 
903      this.intent = value;
904      return this;
905    }
906
907    /**
908     * @return Whether the request is a proposal, plan, an original order or a reflex order.
909     */
910    public RequestIntent getIntent() { 
911      return this.intent == null ? null : this.intent.getValue();
912    }
913
914    /**
915     * @param value Whether the request is a proposal, plan, an original order or a reflex order.
916     */
917    public DeviceRequest setIntent(RequestIntent value) { 
918        if (this.intent == null)
919          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory());
920        this.intent.setValue(value);
921      return this;
922    }
923
924    /**
925     * @return {@link #priority} (Indicates how quickly the device 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
926     */
927    public Enumeration<RequestPriority> getPriorityElement() { 
928      if (this.priority == null)
929        if (Configuration.errorOnAutoCreate())
930          throw new Error("Attempt to auto-create DeviceRequest.priority");
931        else if (Configuration.doAutoCreate())
932          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory()); // bb
933      return this.priority;
934    }
935
936    public boolean hasPriorityElement() { 
937      return this.priority != null && !this.priority.isEmpty();
938    }
939
940    public boolean hasPriority() { 
941      return this.priority != null && !this.priority.isEmpty();
942    }
943
944    /**
945     * @param value {@link #priority} (Indicates how quickly the device 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
946     */
947    public DeviceRequest setPriorityElement(Enumeration<RequestPriority> value) { 
948      this.priority = value;
949      return this;
950    }
951
952    /**
953     * @return Indicates how quickly the device request should be addressed with respect to other requests.
954     */
955    public RequestPriority getPriority() { 
956      return this.priority == null ? null : this.priority.getValue();
957    }
958
959    /**
960     * @param value Indicates how quickly the device request should be addressed with respect to other requests.
961     */
962    public DeviceRequest setPriority(RequestPriority value) { 
963      if (value == null)
964        this.priority = null;
965      else {
966        if (this.priority == null)
967          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory());
968        this.priority.setValue(value);
969      }
970      return this;
971    }
972
973    /**
974     * @return {@link #code} (The details of the device to be used.)
975     */
976    public DataType getCode() { 
977      return this.code;
978    }
979
980    /**
981     * @return {@link #code} (The details of the device to be used.)
982     */
983    public Reference getCodeReference() throws FHIRException { 
984      if (this.code == null)
985        this.code = new Reference();
986      if (!(this.code instanceof Reference))
987        throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.code.getClass().getName()+" was encountered");
988      return (Reference) this.code;
989    }
990
991    public boolean hasCodeReference() { 
992      return this != null && this.code instanceof Reference;
993    }
994
995    /**
996     * @return {@link #code} (The details of the device to be used.)
997     */
998    public CodeableConcept getCodeCodeableConcept() throws FHIRException { 
999      if (this.code == null)
1000        this.code = new CodeableConcept();
1001      if (!(this.code instanceof CodeableConcept))
1002        throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.code.getClass().getName()+" was encountered");
1003      return (CodeableConcept) this.code;
1004    }
1005
1006    public boolean hasCodeCodeableConcept() { 
1007      return this != null && this.code instanceof CodeableConcept;
1008    }
1009
1010    public boolean hasCode() { 
1011      return this.code != null && !this.code.isEmpty();
1012    }
1013
1014    /**
1015     * @param value {@link #code} (The details of the device to be used.)
1016     */
1017    public DeviceRequest setCode(DataType value) { 
1018      if (value != null && !(value instanceof Reference || value instanceof CodeableConcept))
1019        throw new Error("Not the right type for DeviceRequest.code[x]: "+value.fhirType());
1020      this.code = value;
1021      return this;
1022    }
1023
1024    /**
1025     * @return {@link #parameter} (Specific parameters for the ordered item.  For example, the prism value for lenses.)
1026     */
1027    public List<DeviceRequestParameterComponent> getParameter() { 
1028      if (this.parameter == null)
1029        this.parameter = new ArrayList<DeviceRequestParameterComponent>();
1030      return this.parameter;
1031    }
1032
1033    /**
1034     * @return Returns a reference to <code>this</code> for easy method chaining
1035     */
1036    public DeviceRequest setParameter(List<DeviceRequestParameterComponent> theParameter) { 
1037      this.parameter = theParameter;
1038      return this;
1039    }
1040
1041    public boolean hasParameter() { 
1042      if (this.parameter == null)
1043        return false;
1044      for (DeviceRequestParameterComponent item : this.parameter)
1045        if (!item.isEmpty())
1046          return true;
1047      return false;
1048    }
1049
1050    public DeviceRequestParameterComponent addParameter() { //3
1051      DeviceRequestParameterComponent t = new DeviceRequestParameterComponent();
1052      if (this.parameter == null)
1053        this.parameter = new ArrayList<DeviceRequestParameterComponent>();
1054      this.parameter.add(t);
1055      return t;
1056    }
1057
1058    public DeviceRequest addParameter(DeviceRequestParameterComponent t) { //3
1059      if (t == null)
1060        return this;
1061      if (this.parameter == null)
1062        this.parameter = new ArrayList<DeviceRequestParameterComponent>();
1063      this.parameter.add(t);
1064      return this;
1065    }
1066
1067    /**
1068     * @return The first repetition of repeating field {@link #parameter}, creating it if it does not already exist {3}
1069     */
1070    public DeviceRequestParameterComponent getParameterFirstRep() { 
1071      if (getParameter().isEmpty()) {
1072        addParameter();
1073      }
1074      return getParameter().get(0);
1075    }
1076
1077    /**
1078     * @return {@link #subject} (The patient who will use the device.)
1079     */
1080    public Reference getSubject() { 
1081      if (this.subject == null)
1082        if (Configuration.errorOnAutoCreate())
1083          throw new Error("Attempt to auto-create DeviceRequest.subject");
1084        else if (Configuration.doAutoCreate())
1085          this.subject = new Reference(); // cc
1086      return this.subject;
1087    }
1088
1089    public boolean hasSubject() { 
1090      return this.subject != null && !this.subject.isEmpty();
1091    }
1092
1093    /**
1094     * @param value {@link #subject} (The patient who will use the device.)
1095     */
1096    public DeviceRequest setSubject(Reference value) { 
1097      this.subject = value;
1098      return this;
1099    }
1100
1101    /**
1102     * @return {@link #encounter} (An encounter that provides additional context in which this request is made.)
1103     */
1104    public Reference getEncounter() { 
1105      if (this.encounter == null)
1106        if (Configuration.errorOnAutoCreate())
1107          throw new Error("Attempt to auto-create DeviceRequest.encounter");
1108        else if (Configuration.doAutoCreate())
1109          this.encounter = new Reference(); // cc
1110      return this.encounter;
1111    }
1112
1113    public boolean hasEncounter() { 
1114      return this.encounter != null && !this.encounter.isEmpty();
1115    }
1116
1117    /**
1118     * @param value {@link #encounter} (An encounter that provides additional context in which this request is made.)
1119     */
1120    public DeviceRequest setEncounter(Reference value) { 
1121      this.encounter = value;
1122      return this;
1123    }
1124
1125    /**
1126     * @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".)
1127     */
1128    public DataType getOccurrence() { 
1129      return this.occurrence;
1130    }
1131
1132    /**
1133     * @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".)
1134     */
1135    public DateTimeType getOccurrenceDateTimeType() throws FHIRException { 
1136      if (this.occurrence == null)
1137        this.occurrence = new DateTimeType();
1138      if (!(this.occurrence instanceof DateTimeType))
1139        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1140      return (DateTimeType) this.occurrence;
1141    }
1142
1143    public boolean hasOccurrenceDateTimeType() { 
1144      return this != null && this.occurrence instanceof DateTimeType;
1145    }
1146
1147    /**
1148     * @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".)
1149     */
1150    public Period getOccurrencePeriod() throws FHIRException { 
1151      if (this.occurrence == null)
1152        this.occurrence = new Period();
1153      if (!(this.occurrence instanceof Period))
1154        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1155      return (Period) this.occurrence;
1156    }
1157
1158    public boolean hasOccurrencePeriod() { 
1159      return this != null && this.occurrence instanceof Period;
1160    }
1161
1162    /**
1163     * @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".)
1164     */
1165    public Timing getOccurrenceTiming() throws FHIRException { 
1166      if (this.occurrence == null)
1167        this.occurrence = new Timing();
1168      if (!(this.occurrence instanceof Timing))
1169        throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1170      return (Timing) this.occurrence;
1171    }
1172
1173    public boolean hasOccurrenceTiming() { 
1174      return this != null && this.occurrence instanceof Timing;
1175    }
1176
1177    public boolean hasOccurrence() { 
1178      return this.occurrence != null && !this.occurrence.isEmpty();
1179    }
1180
1181    /**
1182     * @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".)
1183     */
1184    public DeviceRequest setOccurrence(DataType value) { 
1185      if (value != null && !(value instanceof DateTimeType || value instanceof Period || value instanceof Timing))
1186        throw new Error("Not the right type for DeviceRequest.occurrence[x]: "+value.fhirType());
1187      this.occurrence = value;
1188      return this;
1189    }
1190
1191    /**
1192     * @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
1193     */
1194    public DateTimeType getAuthoredOnElement() { 
1195      if (this.authoredOn == null)
1196        if (Configuration.errorOnAutoCreate())
1197          throw new Error("Attempt to auto-create DeviceRequest.authoredOn");
1198        else if (Configuration.doAutoCreate())
1199          this.authoredOn = new DateTimeType(); // bb
1200      return this.authoredOn;
1201    }
1202
1203    public boolean hasAuthoredOnElement() { 
1204      return this.authoredOn != null && !this.authoredOn.isEmpty();
1205    }
1206
1207    public boolean hasAuthoredOn() { 
1208      return this.authoredOn != null && !this.authoredOn.isEmpty();
1209    }
1210
1211    /**
1212     * @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
1213     */
1214    public DeviceRequest setAuthoredOnElement(DateTimeType value) { 
1215      this.authoredOn = value;
1216      return this;
1217    }
1218
1219    /**
1220     * @return When the request transitioned to being actionable.
1221     */
1222    public Date getAuthoredOn() { 
1223      return this.authoredOn == null ? null : this.authoredOn.getValue();
1224    }
1225
1226    /**
1227     * @param value When the request transitioned to being actionable.
1228     */
1229    public DeviceRequest setAuthoredOn(Date value) { 
1230      if (value == null)
1231        this.authoredOn = null;
1232      else {
1233        if (this.authoredOn == null)
1234          this.authoredOn = new DateTimeType();
1235        this.authoredOn.setValue(value);
1236      }
1237      return this;
1238    }
1239
1240    /**
1241     * @return {@link #requester} (The individual who initiated the request and has responsibility for its activation.)
1242     */
1243    public Reference getRequester() { 
1244      if (this.requester == null)
1245        if (Configuration.errorOnAutoCreate())
1246          throw new Error("Attempt to auto-create DeviceRequest.requester");
1247        else if (Configuration.doAutoCreate())
1248          this.requester = new Reference(); // cc
1249      return this.requester;
1250    }
1251
1252    public boolean hasRequester() { 
1253      return this.requester != null && !this.requester.isEmpty();
1254    }
1255
1256    /**
1257     * @param value {@link #requester} (The individual who initiated the request and has responsibility for its activation.)
1258     */
1259    public DeviceRequest setRequester(Reference value) { 
1260      this.requester = value;
1261      return this;
1262    }
1263
1264    /**
1265     * @return {@link #performerType} (Desired type of performer for doing the diagnostic testing.)
1266     */
1267    public CodeableConcept getPerformerType() { 
1268      if (this.performerType == null)
1269        if (Configuration.errorOnAutoCreate())
1270          throw new Error("Attempt to auto-create DeviceRequest.performerType");
1271        else if (Configuration.doAutoCreate())
1272          this.performerType = new CodeableConcept(); // cc
1273      return this.performerType;
1274    }
1275
1276    public boolean hasPerformerType() { 
1277      return this.performerType != null && !this.performerType.isEmpty();
1278    }
1279
1280    /**
1281     * @param value {@link #performerType} (Desired type of performer for doing the diagnostic testing.)
1282     */
1283    public DeviceRequest setPerformerType(CodeableConcept value) { 
1284      this.performerType = value;
1285      return this;
1286    }
1287
1288    /**
1289     * @return {@link #performer} (The desired performer for doing the diagnostic testing.)
1290     */
1291    public Reference getPerformer() { 
1292      if (this.performer == null)
1293        if (Configuration.errorOnAutoCreate())
1294          throw new Error("Attempt to auto-create DeviceRequest.performer");
1295        else if (Configuration.doAutoCreate())
1296          this.performer = new Reference(); // cc
1297      return this.performer;
1298    }
1299
1300    public boolean hasPerformer() { 
1301      return this.performer != null && !this.performer.isEmpty();
1302    }
1303
1304    /**
1305     * @param value {@link #performer} (The desired performer for doing the diagnostic testing.)
1306     */
1307    public DeviceRequest setPerformer(Reference value) { 
1308      this.performer = value;
1309      return this;
1310    }
1311
1312    /**
1313     * @return {@link #reasonCode} (Reason or justification for the use of this device.)
1314     */
1315    public List<CodeableConcept> getReasonCode() { 
1316      if (this.reasonCode == null)
1317        this.reasonCode = new ArrayList<CodeableConcept>();
1318      return this.reasonCode;
1319    }
1320
1321    /**
1322     * @return Returns a reference to <code>this</code> for easy method chaining
1323     */
1324    public DeviceRequest setReasonCode(List<CodeableConcept> theReasonCode) { 
1325      this.reasonCode = theReasonCode;
1326      return this;
1327    }
1328
1329    public boolean hasReasonCode() { 
1330      if (this.reasonCode == null)
1331        return false;
1332      for (CodeableConcept item : this.reasonCode)
1333        if (!item.isEmpty())
1334          return true;
1335      return false;
1336    }
1337
1338    public CodeableConcept addReasonCode() { //3
1339      CodeableConcept t = new CodeableConcept();
1340      if (this.reasonCode == null)
1341        this.reasonCode = new ArrayList<CodeableConcept>();
1342      this.reasonCode.add(t);
1343      return t;
1344    }
1345
1346    public DeviceRequest addReasonCode(CodeableConcept t) { //3
1347      if (t == null)
1348        return this;
1349      if (this.reasonCode == null)
1350        this.reasonCode = new ArrayList<CodeableConcept>();
1351      this.reasonCode.add(t);
1352      return this;
1353    }
1354
1355    /**
1356     * @return The first repetition of repeating field {@link #reasonCode}, creating it if it does not already exist {3}
1357     */
1358    public CodeableConcept getReasonCodeFirstRep() { 
1359      if (getReasonCode().isEmpty()) {
1360        addReasonCode();
1361      }
1362      return getReasonCode().get(0);
1363    }
1364
1365    /**
1366     * @return {@link #reasonReference} (Reason or justification for the use of this device.)
1367     */
1368    public List<Reference> getReasonReference() { 
1369      if (this.reasonReference == null)
1370        this.reasonReference = new ArrayList<Reference>();
1371      return this.reasonReference;
1372    }
1373
1374    /**
1375     * @return Returns a reference to <code>this</code> for easy method chaining
1376     */
1377    public DeviceRequest setReasonReference(List<Reference> theReasonReference) { 
1378      this.reasonReference = theReasonReference;
1379      return this;
1380    }
1381
1382    public boolean hasReasonReference() { 
1383      if (this.reasonReference == null)
1384        return false;
1385      for (Reference item : this.reasonReference)
1386        if (!item.isEmpty())
1387          return true;
1388      return false;
1389    }
1390
1391    public Reference addReasonReference() { //3
1392      Reference t = new Reference();
1393      if (this.reasonReference == null)
1394        this.reasonReference = new ArrayList<Reference>();
1395      this.reasonReference.add(t);
1396      return t;
1397    }
1398
1399    public DeviceRequest addReasonReference(Reference t) { //3
1400      if (t == null)
1401        return this;
1402      if (this.reasonReference == null)
1403        this.reasonReference = new ArrayList<Reference>();
1404      this.reasonReference.add(t);
1405      return this;
1406    }
1407
1408    /**
1409     * @return The first repetition of repeating field {@link #reasonReference}, creating it if it does not already exist {3}
1410     */
1411    public Reference getReasonReferenceFirstRep() { 
1412      if (getReasonReference().isEmpty()) {
1413        addReasonReference();
1414      }
1415      return getReasonReference().get(0);
1416    }
1417
1418    /**
1419     * @return {@link #insurance} (Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be required for delivering the requested service.)
1420     */
1421    public List<Reference> getInsurance() { 
1422      if (this.insurance == null)
1423        this.insurance = new ArrayList<Reference>();
1424      return this.insurance;
1425    }
1426
1427    /**
1428     * @return Returns a reference to <code>this</code> for easy method chaining
1429     */
1430    public DeviceRequest setInsurance(List<Reference> theInsurance) { 
1431      this.insurance = theInsurance;
1432      return this;
1433    }
1434
1435    public boolean hasInsurance() { 
1436      if (this.insurance == null)
1437        return false;
1438      for (Reference item : this.insurance)
1439        if (!item.isEmpty())
1440          return true;
1441      return false;
1442    }
1443
1444    public Reference addInsurance() { //3
1445      Reference t = new Reference();
1446      if (this.insurance == null)
1447        this.insurance = new ArrayList<Reference>();
1448      this.insurance.add(t);
1449      return t;
1450    }
1451
1452    public DeviceRequest addInsurance(Reference t) { //3
1453      if (t == null)
1454        return this;
1455      if (this.insurance == null)
1456        this.insurance = new ArrayList<Reference>();
1457      this.insurance.add(t);
1458      return this;
1459    }
1460
1461    /**
1462     * @return The first repetition of repeating field {@link #insurance}, creating it if it does not already exist {3}
1463     */
1464    public Reference getInsuranceFirstRep() { 
1465      if (getInsurance().isEmpty()) {
1466        addInsurance();
1467      }
1468      return getInsurance().get(0);
1469    }
1470
1471    /**
1472     * @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).)
1473     */
1474    public List<Reference> getSupportingInfo() { 
1475      if (this.supportingInfo == null)
1476        this.supportingInfo = new ArrayList<Reference>();
1477      return this.supportingInfo;
1478    }
1479
1480    /**
1481     * @return Returns a reference to <code>this</code> for easy method chaining
1482     */
1483    public DeviceRequest setSupportingInfo(List<Reference> theSupportingInfo) { 
1484      this.supportingInfo = theSupportingInfo;
1485      return this;
1486    }
1487
1488    public boolean hasSupportingInfo() { 
1489      if (this.supportingInfo == null)
1490        return false;
1491      for (Reference item : this.supportingInfo)
1492        if (!item.isEmpty())
1493          return true;
1494      return false;
1495    }
1496
1497    public Reference addSupportingInfo() { //3
1498      Reference t = new Reference();
1499      if (this.supportingInfo == null)
1500        this.supportingInfo = new ArrayList<Reference>();
1501      this.supportingInfo.add(t);
1502      return t;
1503    }
1504
1505    public DeviceRequest addSupportingInfo(Reference t) { //3
1506      if (t == null)
1507        return this;
1508      if (this.supportingInfo == null)
1509        this.supportingInfo = new ArrayList<Reference>();
1510      this.supportingInfo.add(t);
1511      return this;
1512    }
1513
1514    /**
1515     * @return The first repetition of repeating field {@link #supportingInfo}, creating it if it does not already exist {3}
1516     */
1517    public Reference getSupportingInfoFirstRep() { 
1518      if (getSupportingInfo().isEmpty()) {
1519        addSupportingInfo();
1520      }
1521      return getSupportingInfo().get(0);
1522    }
1523
1524    /**
1525     * @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.)
1526     */
1527    public List<Annotation> getNote() { 
1528      if (this.note == null)
1529        this.note = new ArrayList<Annotation>();
1530      return this.note;
1531    }
1532
1533    /**
1534     * @return Returns a reference to <code>this</code> for easy method chaining
1535     */
1536    public DeviceRequest setNote(List<Annotation> theNote) { 
1537      this.note = theNote;
1538      return this;
1539    }
1540
1541    public boolean hasNote() { 
1542      if (this.note == null)
1543        return false;
1544      for (Annotation item : this.note)
1545        if (!item.isEmpty())
1546          return true;
1547      return false;
1548    }
1549
1550    public Annotation addNote() { //3
1551      Annotation t = new Annotation();
1552      if (this.note == null)
1553        this.note = new ArrayList<Annotation>();
1554      this.note.add(t);
1555      return t;
1556    }
1557
1558    public DeviceRequest addNote(Annotation t) { //3
1559      if (t == null)
1560        return this;
1561      if (this.note == null)
1562        this.note = new ArrayList<Annotation>();
1563      this.note.add(t);
1564      return this;
1565    }
1566
1567    /**
1568     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
1569     */
1570    public Annotation getNoteFirstRep() { 
1571      if (getNote().isEmpty()) {
1572        addNote();
1573      }
1574      return getNote().get(0);
1575    }
1576
1577    /**
1578     * @return {@link #relevantHistory} (Key events in the history of the request.)
1579     */
1580    public List<Reference> getRelevantHistory() { 
1581      if (this.relevantHistory == null)
1582        this.relevantHistory = new ArrayList<Reference>();
1583      return this.relevantHistory;
1584    }
1585
1586    /**
1587     * @return Returns a reference to <code>this</code> for easy method chaining
1588     */
1589    public DeviceRequest setRelevantHistory(List<Reference> theRelevantHistory) { 
1590      this.relevantHistory = theRelevantHistory;
1591      return this;
1592    }
1593
1594    public boolean hasRelevantHistory() { 
1595      if (this.relevantHistory == null)
1596        return false;
1597      for (Reference item : this.relevantHistory)
1598        if (!item.isEmpty())
1599          return true;
1600      return false;
1601    }
1602
1603    public Reference addRelevantHistory() { //3
1604      Reference t = new Reference();
1605      if (this.relevantHistory == null)
1606        this.relevantHistory = new ArrayList<Reference>();
1607      this.relevantHistory.add(t);
1608      return t;
1609    }
1610
1611    public DeviceRequest addRelevantHistory(Reference t) { //3
1612      if (t == null)
1613        return this;
1614      if (this.relevantHistory == null)
1615        this.relevantHistory = new ArrayList<Reference>();
1616      this.relevantHistory.add(t);
1617      return this;
1618    }
1619
1620    /**
1621     * @return The first repetition of repeating field {@link #relevantHistory}, creating it if it does not already exist {3}
1622     */
1623    public Reference getRelevantHistoryFirstRep() { 
1624      if (getRelevantHistory().isEmpty()) {
1625        addRelevantHistory();
1626      }
1627      return getRelevantHistory().get(0);
1628    }
1629
1630      protected void listChildren(List<Property> children) {
1631        super.listChildren(children);
1632        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));
1633        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));
1634        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));
1635        children.add(new Property("basedOn", "Reference(Any)", "Plan/proposal/order fulfilled by this request.", 0, java.lang.Integer.MAX_VALUE, basedOn));
1636        children.add(new Property("priorRequest", "Reference(Any)", "The request takes the place of the referenced completed or terminated request(s).", 0, java.lang.Integer.MAX_VALUE, priorRequest));
1637        children.add(new Property("groupIdentifier", "Identifier", "Composite request this is part of.", 0, 1, groupIdentifier));
1638        children.add(new Property("status", "code", "The status of the request.", 0, 1, status));
1639        children.add(new Property("intent", "code", "Whether the request is a proposal, plan, an original order or a reflex order.", 0, 1, intent));
1640        children.add(new Property("priority", "code", "Indicates how quickly the device request should be addressed with respect to other requests.", 0, 1, priority));
1641        children.add(new Property("code[x]", "Reference(Device)|CodeableConcept", "The details of the device to be used.", 0, 1, code));
1642        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));
1643        children.add(new Property("subject", "Reference(Patient|Group|Location|Device)", "The patient who will use the device.", 0, 1, subject));
1644        children.add(new Property("encounter", "Reference(Encounter)", "An encounter that provides additional context in which this request is made.", 0, 1, encounter));
1645        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));
1646        children.add(new Property("authoredOn", "dateTime", "When the request transitioned to being actionable.", 0, 1, authoredOn));
1647        children.add(new Property("requester", "Reference(Device|Practitioner|PractitionerRole|Organization)", "The individual who initiated the request and has responsibility for its activation.", 0, 1, requester));
1648        children.add(new Property("performerType", "CodeableConcept", "Desired type of performer for doing the diagnostic testing.", 0, 1, performerType));
1649        children.add(new Property("performer", "Reference(Practitioner|PractitionerRole|Organization|CareTeam|HealthcareService|Patient|Device|RelatedPerson)", "The desired performer for doing the diagnostic testing.", 0, 1, performer));
1650        children.add(new Property("reasonCode", "CodeableConcept", "Reason or justification for the use of this device.", 0, java.lang.Integer.MAX_VALUE, reasonCode));
1651        children.add(new Property("reasonReference", "Reference(Condition|Observation|DiagnosticReport|DocumentReference)", "Reason or justification for the use of this device.", 0, java.lang.Integer.MAX_VALUE, reasonReference));
1652        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));
1653        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));
1654        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));
1655        children.add(new Property("relevantHistory", "Reference(Provenance)", "Key events in the history of the request.", 0, java.lang.Integer.MAX_VALUE, relevantHistory));
1656      }
1657
1658      @Override
1659      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1660        switch (_hash) {
1661        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);
1662        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);
1663        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);
1664        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(Any)", "Plan/proposal/order fulfilled by this request.", 0, java.lang.Integer.MAX_VALUE, basedOn);
1665        case 237568101: /*priorRequest*/  return new Property("priorRequest", "Reference(Any)", "The request takes the place of the referenced completed or terminated request(s).", 0, java.lang.Integer.MAX_VALUE, priorRequest);
1666        case -445338488: /*groupIdentifier*/  return new Property("groupIdentifier", "Identifier", "Composite request this is part of.", 0, 1, groupIdentifier);
1667        case -892481550: /*status*/  return new Property("status", "code", "The status of the request.", 0, 1, status);
1668        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);
1669        case -1165461084: /*priority*/  return new Property("priority", "code", "Indicates how quickly the device request should be addressed with respect to other requests.", 0, 1, priority);
1670        case 941839219: /*code[x]*/  return new Property("code[x]", "Reference(Device)|CodeableConcept", "The details of the device to be used.", 0, 1, code);
1671        case 3059181: /*code*/  return new Property("code[x]", "Reference(Device)|CodeableConcept", "The details of the device to be used.", 0, 1, code);
1672        case 1565461470: /*codeReference*/  return new Property("code[x]", "Reference(Device)", "The details of the device to be used.", 0, 1, code);
1673        case 4899316: /*codeCodeableConcept*/  return new Property("code[x]", "CodeableConcept", "The details of the device to be used.", 0, 1, code);
1674        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);
1675        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group|Location|Device)", "The patient who will use the device.", 0, 1, subject);
1676        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "An encounter that provides additional context in which this request is made.", 0, 1, encounter);
1677        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);
1678        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);
1679        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);
1680        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);
1681        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);
1682        case -1500852503: /*authoredOn*/  return new Property("authoredOn", "dateTime", "When the request transitioned to being actionable.", 0, 1, authoredOn);
1683        case 693933948: /*requester*/  return new Property("requester", "Reference(Device|Practitioner|PractitionerRole|Organization)", "The individual who initiated the request and has responsibility for its activation.", 0, 1, requester);
1684        case -901444568: /*performerType*/  return new Property("performerType", "CodeableConcept", "Desired type of performer for doing the diagnostic testing.", 0, 1, performerType);
1685        case 481140686: /*performer*/  return new Property("performer", "Reference(Practitioner|PractitionerRole|Organization|CareTeam|HealthcareService|Patient|Device|RelatedPerson)", "The desired performer for doing the diagnostic testing.", 0, 1, performer);
1686        case 722137681: /*reasonCode*/  return new Property("reasonCode", "CodeableConcept", "Reason or justification for the use of this device.", 0, java.lang.Integer.MAX_VALUE, reasonCode);
1687        case -1146218137: /*reasonReference*/  return new Property("reasonReference", "Reference(Condition|Observation|DiagnosticReport|DocumentReference)", "Reason or justification for the use of this device.", 0, java.lang.Integer.MAX_VALUE, reasonReference);
1688        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);
1689        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);
1690        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);
1691        case 1538891575: /*relevantHistory*/  return new Property("relevantHistory", "Reference(Provenance)", "Key events in the history of the request.", 0, java.lang.Integer.MAX_VALUE, relevantHistory);
1692        default: return super.getNamedProperty(_hash, _name, _checkValid);
1693        }
1694
1695      }
1696
1697      @Override
1698      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1699        switch (hash) {
1700        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1701        case 8911915: /*instantiatesCanonical*/ return this.instantiatesCanonical == null ? new Base[0] : this.instantiatesCanonical.toArray(new Base[this.instantiatesCanonical.size()]); // CanonicalType
1702        case -1926393373: /*instantiatesUri*/ return this.instantiatesUri == null ? new Base[0] : this.instantiatesUri.toArray(new Base[this.instantiatesUri.size()]); // UriType
1703        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
1704        case 237568101: /*priorRequest*/ return this.priorRequest == null ? new Base[0] : this.priorRequest.toArray(new Base[this.priorRequest.size()]); // Reference
1705        case -445338488: /*groupIdentifier*/ return this.groupIdentifier == null ? new Base[0] : new Base[] {this.groupIdentifier}; // Identifier
1706        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<RequestStatus>
1707        case -1183762788: /*intent*/ return this.intent == null ? new Base[0] : new Base[] {this.intent}; // Enumeration<RequestIntent>
1708        case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // Enumeration<RequestPriority>
1709        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // DataType
1710        case 1954460585: /*parameter*/ return this.parameter == null ? new Base[0] : this.parameter.toArray(new Base[this.parameter.size()]); // DeviceRequestParameterComponent
1711        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1712        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
1713        case 1687874001: /*occurrence*/ return this.occurrence == null ? new Base[0] : new Base[] {this.occurrence}; // DataType
1714        case -1500852503: /*authoredOn*/ return this.authoredOn == null ? new Base[0] : new Base[] {this.authoredOn}; // DateTimeType
1715        case 693933948: /*requester*/ return this.requester == null ? new Base[0] : new Base[] {this.requester}; // Reference
1716        case -901444568: /*performerType*/ return this.performerType == null ? new Base[0] : new Base[] {this.performerType}; // CodeableConcept
1717        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : new Base[] {this.performer}; // Reference
1718        case 722137681: /*reasonCode*/ return this.reasonCode == null ? new Base[0] : this.reasonCode.toArray(new Base[this.reasonCode.size()]); // CodeableConcept
1719        case -1146218137: /*reasonReference*/ return this.reasonReference == null ? new Base[0] : this.reasonReference.toArray(new Base[this.reasonReference.size()]); // Reference
1720        case 73049818: /*insurance*/ return this.insurance == null ? new Base[0] : this.insurance.toArray(new Base[this.insurance.size()]); // Reference
1721        case 1922406657: /*supportingInfo*/ return this.supportingInfo == null ? new Base[0] : this.supportingInfo.toArray(new Base[this.supportingInfo.size()]); // Reference
1722        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1723        case 1538891575: /*relevantHistory*/ return this.relevantHistory == null ? new Base[0] : this.relevantHistory.toArray(new Base[this.relevantHistory.size()]); // Reference
1724        default: return super.getProperty(hash, name, checkValid);
1725        }
1726
1727      }
1728
1729      @Override
1730      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1731        switch (hash) {
1732        case -1618432855: // identifier
1733          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1734          return value;
1735        case 8911915: // instantiatesCanonical
1736          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value)); // CanonicalType
1737          return value;
1738        case -1926393373: // instantiatesUri
1739          this.getInstantiatesUri().add(TypeConvertor.castToUri(value)); // UriType
1740          return value;
1741        case -332612366: // basedOn
1742          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
1743          return value;
1744        case 237568101: // priorRequest
1745          this.getPriorRequest().add(TypeConvertor.castToReference(value)); // Reference
1746          return value;
1747        case -445338488: // groupIdentifier
1748          this.groupIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
1749          return value;
1750        case -892481550: // status
1751          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1752          this.status = (Enumeration) value; // Enumeration<RequestStatus>
1753          return value;
1754        case -1183762788: // intent
1755          value = new RequestIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
1756          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
1757          return value;
1758        case -1165461084: // priority
1759          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
1760          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
1761          return value;
1762        case 3059181: // code
1763          this.code = TypeConvertor.castToType(value); // DataType
1764          return value;
1765        case 1954460585: // parameter
1766          this.getParameter().add((DeviceRequestParameterComponent) value); // DeviceRequestParameterComponent
1767          return value;
1768        case -1867885268: // subject
1769          this.subject = TypeConvertor.castToReference(value); // Reference
1770          return value;
1771        case 1524132147: // encounter
1772          this.encounter = TypeConvertor.castToReference(value); // Reference
1773          return value;
1774        case 1687874001: // occurrence
1775          this.occurrence = TypeConvertor.castToType(value); // DataType
1776          return value;
1777        case -1500852503: // authoredOn
1778          this.authoredOn = TypeConvertor.castToDateTime(value); // DateTimeType
1779          return value;
1780        case 693933948: // requester
1781          this.requester = TypeConvertor.castToReference(value); // Reference
1782          return value;
1783        case -901444568: // performerType
1784          this.performerType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1785          return value;
1786        case 481140686: // performer
1787          this.performer = TypeConvertor.castToReference(value); // Reference
1788          return value;
1789        case 722137681: // reasonCode
1790          this.getReasonCode().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1791          return value;
1792        case -1146218137: // reasonReference
1793          this.getReasonReference().add(TypeConvertor.castToReference(value)); // Reference
1794          return value;
1795        case 73049818: // insurance
1796          this.getInsurance().add(TypeConvertor.castToReference(value)); // Reference
1797          return value;
1798        case 1922406657: // supportingInfo
1799          this.getSupportingInfo().add(TypeConvertor.castToReference(value)); // Reference
1800          return value;
1801        case 3387378: // note
1802          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
1803          return value;
1804        case 1538891575: // relevantHistory
1805          this.getRelevantHistory().add(TypeConvertor.castToReference(value)); // Reference
1806          return value;
1807        default: return super.setProperty(hash, name, value);
1808        }
1809
1810      }
1811
1812      @Override
1813      public Base setProperty(String name, Base value) throws FHIRException {
1814        if (name.equals("identifier")) {
1815          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1816        } else if (name.equals("instantiatesCanonical")) {
1817          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value));
1818        } else if (name.equals("instantiatesUri")) {
1819          this.getInstantiatesUri().add(TypeConvertor.castToUri(value));
1820        } else if (name.equals("basedOn")) {
1821          this.getBasedOn().add(TypeConvertor.castToReference(value));
1822        } else if (name.equals("priorRequest")) {
1823          this.getPriorRequest().add(TypeConvertor.castToReference(value));
1824        } else if (name.equals("groupIdentifier")) {
1825          this.groupIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
1826        } else if (name.equals("status")) {
1827          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1828          this.status = (Enumeration) value; // Enumeration<RequestStatus>
1829        } else if (name.equals("intent")) {
1830          value = new RequestIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
1831          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
1832        } else if (name.equals("priority")) {
1833          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
1834          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
1835        } else if (name.equals("code[x]")) {
1836          this.code = TypeConvertor.castToType(value); // DataType
1837        } else if (name.equals("parameter")) {
1838          this.getParameter().add((DeviceRequestParameterComponent) value);
1839        } else if (name.equals("subject")) {
1840          this.subject = TypeConvertor.castToReference(value); // Reference
1841        } else if (name.equals("encounter")) {
1842          this.encounter = TypeConvertor.castToReference(value); // Reference
1843        } else if (name.equals("occurrence[x]")) {
1844          this.occurrence = TypeConvertor.castToType(value); // DataType
1845        } else if (name.equals("authoredOn")) {
1846          this.authoredOn = TypeConvertor.castToDateTime(value); // DateTimeType
1847        } else if (name.equals("requester")) {
1848          this.requester = TypeConvertor.castToReference(value); // Reference
1849        } else if (name.equals("performerType")) {
1850          this.performerType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1851        } else if (name.equals("performer")) {
1852          this.performer = TypeConvertor.castToReference(value); // Reference
1853        } else if (name.equals("reasonCode")) {
1854          this.getReasonCode().add(TypeConvertor.castToCodeableConcept(value));
1855        } else if (name.equals("reasonReference")) {
1856          this.getReasonReference().add(TypeConvertor.castToReference(value));
1857        } else if (name.equals("insurance")) {
1858          this.getInsurance().add(TypeConvertor.castToReference(value));
1859        } else if (name.equals("supportingInfo")) {
1860          this.getSupportingInfo().add(TypeConvertor.castToReference(value));
1861        } else if (name.equals("note")) {
1862          this.getNote().add(TypeConvertor.castToAnnotation(value));
1863        } else if (name.equals("relevantHistory")) {
1864          this.getRelevantHistory().add(TypeConvertor.castToReference(value));
1865        } else
1866          return super.setProperty(name, value);
1867        return value;
1868      }
1869
1870      @Override
1871      public Base makeProperty(int hash, String name) throws FHIRException {
1872        switch (hash) {
1873        case -1618432855:  return addIdentifier(); 
1874        case 8911915:  return addInstantiatesCanonicalElement();
1875        case -1926393373:  return addInstantiatesUriElement();
1876        case -332612366:  return addBasedOn(); 
1877        case 237568101:  return addPriorRequest(); 
1878        case -445338488:  return getGroupIdentifier();
1879        case -892481550:  return getStatusElement();
1880        case -1183762788:  return getIntentElement();
1881        case -1165461084:  return getPriorityElement();
1882        case 941839219:  return getCode();
1883        case 3059181:  return getCode();
1884        case 1954460585:  return addParameter(); 
1885        case -1867885268:  return getSubject();
1886        case 1524132147:  return getEncounter();
1887        case -2022646513:  return getOccurrence();
1888        case 1687874001:  return getOccurrence();
1889        case -1500852503:  return getAuthoredOnElement();
1890        case 693933948:  return getRequester();
1891        case -901444568:  return getPerformerType();
1892        case 481140686:  return getPerformer();
1893        case 722137681:  return addReasonCode(); 
1894        case -1146218137:  return addReasonReference(); 
1895        case 73049818:  return addInsurance(); 
1896        case 1922406657:  return addSupportingInfo(); 
1897        case 3387378:  return addNote(); 
1898        case 1538891575:  return addRelevantHistory(); 
1899        default: return super.makeProperty(hash, name);
1900        }
1901
1902      }
1903
1904      @Override
1905      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1906        switch (hash) {
1907        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1908        case 8911915: /*instantiatesCanonical*/ return new String[] {"canonical"};
1909        case -1926393373: /*instantiatesUri*/ return new String[] {"uri"};
1910        case -332612366: /*basedOn*/ return new String[] {"Reference"};
1911        case 237568101: /*priorRequest*/ return new String[] {"Reference"};
1912        case -445338488: /*groupIdentifier*/ return new String[] {"Identifier"};
1913        case -892481550: /*status*/ return new String[] {"code"};
1914        case -1183762788: /*intent*/ return new String[] {"code"};
1915        case -1165461084: /*priority*/ return new String[] {"code"};
1916        case 3059181: /*code*/ return new String[] {"Reference", "CodeableConcept"};
1917        case 1954460585: /*parameter*/ return new String[] {};
1918        case -1867885268: /*subject*/ return new String[] {"Reference"};
1919        case 1524132147: /*encounter*/ return new String[] {"Reference"};
1920        case 1687874001: /*occurrence*/ return new String[] {"dateTime", "Period", "Timing"};
1921        case -1500852503: /*authoredOn*/ return new String[] {"dateTime"};
1922        case 693933948: /*requester*/ return new String[] {"Reference"};
1923        case -901444568: /*performerType*/ return new String[] {"CodeableConcept"};
1924        case 481140686: /*performer*/ return new String[] {"Reference"};
1925        case 722137681: /*reasonCode*/ return new String[] {"CodeableConcept"};
1926        case -1146218137: /*reasonReference*/ return new String[] {"Reference"};
1927        case 73049818: /*insurance*/ return new String[] {"Reference"};
1928        case 1922406657: /*supportingInfo*/ return new String[] {"Reference"};
1929        case 3387378: /*note*/ return new String[] {"Annotation"};
1930        case 1538891575: /*relevantHistory*/ return new String[] {"Reference"};
1931        default: return super.getTypesForProperty(hash, name);
1932        }
1933
1934      }
1935
1936      @Override
1937      public Base addChild(String name) throws FHIRException {
1938        if (name.equals("identifier")) {
1939          return addIdentifier();
1940        }
1941        else if (name.equals("instantiatesCanonical")) {
1942          throw new FHIRException("Cannot call addChild on a primitive type DeviceRequest.instantiatesCanonical");
1943        }
1944        else if (name.equals("instantiatesUri")) {
1945          throw new FHIRException("Cannot call addChild on a primitive type DeviceRequest.instantiatesUri");
1946        }
1947        else if (name.equals("basedOn")) {
1948          return addBasedOn();
1949        }
1950        else if (name.equals("priorRequest")) {
1951          return addPriorRequest();
1952        }
1953        else if (name.equals("groupIdentifier")) {
1954          this.groupIdentifier = new Identifier();
1955          return this.groupIdentifier;
1956        }
1957        else if (name.equals("status")) {
1958          throw new FHIRException("Cannot call addChild on a primitive type DeviceRequest.status");
1959        }
1960        else if (name.equals("intent")) {
1961          throw new FHIRException("Cannot call addChild on a primitive type DeviceRequest.intent");
1962        }
1963        else if (name.equals("priority")) {
1964          throw new FHIRException("Cannot call addChild on a primitive type DeviceRequest.priority");
1965        }
1966        else if (name.equals("codeReference")) {
1967          this.code = new Reference();
1968          return this.code;
1969        }
1970        else if (name.equals("codeCodeableConcept")) {
1971          this.code = new CodeableConcept();
1972          return this.code;
1973        }
1974        else if (name.equals("parameter")) {
1975          return addParameter();
1976        }
1977        else if (name.equals("subject")) {
1978          this.subject = new Reference();
1979          return this.subject;
1980        }
1981        else if (name.equals("encounter")) {
1982          this.encounter = new Reference();
1983          return this.encounter;
1984        }
1985        else if (name.equals("occurrenceDateTime")) {
1986          this.occurrence = new DateTimeType();
1987          return this.occurrence;
1988        }
1989        else if (name.equals("occurrencePeriod")) {
1990          this.occurrence = new Period();
1991          return this.occurrence;
1992        }
1993        else if (name.equals("occurrenceTiming")) {
1994          this.occurrence = new Timing();
1995          return this.occurrence;
1996        }
1997        else if (name.equals("authoredOn")) {
1998          throw new FHIRException("Cannot call addChild on a primitive type DeviceRequest.authoredOn");
1999        }
2000        else if (name.equals("requester")) {
2001          this.requester = new Reference();
2002          return this.requester;
2003        }
2004        else if (name.equals("performerType")) {
2005          this.performerType = new CodeableConcept();
2006          return this.performerType;
2007        }
2008        else if (name.equals("performer")) {
2009          this.performer = new Reference();
2010          return this.performer;
2011        }
2012        else if (name.equals("reasonCode")) {
2013          return addReasonCode();
2014        }
2015        else if (name.equals("reasonReference")) {
2016          return addReasonReference();
2017        }
2018        else if (name.equals("insurance")) {
2019          return addInsurance();
2020        }
2021        else if (name.equals("supportingInfo")) {
2022          return addSupportingInfo();
2023        }
2024        else if (name.equals("note")) {
2025          return addNote();
2026        }
2027        else if (name.equals("relevantHistory")) {
2028          return addRelevantHistory();
2029        }
2030        else
2031          return super.addChild(name);
2032      }
2033
2034  public String fhirType() {
2035    return "DeviceRequest";
2036
2037  }
2038
2039      public DeviceRequest copy() {
2040        DeviceRequest dst = new DeviceRequest();
2041        copyValues(dst);
2042        return dst;
2043      }
2044
2045      public void copyValues(DeviceRequest dst) {
2046        super.copyValues(dst);
2047        if (identifier != null) {
2048          dst.identifier = new ArrayList<Identifier>();
2049          for (Identifier i : identifier)
2050            dst.identifier.add(i.copy());
2051        };
2052        if (instantiatesCanonical != null) {
2053          dst.instantiatesCanonical = new ArrayList<CanonicalType>();
2054          for (CanonicalType i : instantiatesCanonical)
2055            dst.instantiatesCanonical.add(i.copy());
2056        };
2057        if (instantiatesUri != null) {
2058          dst.instantiatesUri = new ArrayList<UriType>();
2059          for (UriType i : instantiatesUri)
2060            dst.instantiatesUri.add(i.copy());
2061        };
2062        if (basedOn != null) {
2063          dst.basedOn = new ArrayList<Reference>();
2064          for (Reference i : basedOn)
2065            dst.basedOn.add(i.copy());
2066        };
2067        if (priorRequest != null) {
2068          dst.priorRequest = new ArrayList<Reference>();
2069          for (Reference i : priorRequest)
2070            dst.priorRequest.add(i.copy());
2071        };
2072        dst.groupIdentifier = groupIdentifier == null ? null : groupIdentifier.copy();
2073        dst.status = status == null ? null : status.copy();
2074        dst.intent = intent == null ? null : intent.copy();
2075        dst.priority = priority == null ? null : priority.copy();
2076        dst.code = code == null ? null : code.copy();
2077        if (parameter != null) {
2078          dst.parameter = new ArrayList<DeviceRequestParameterComponent>();
2079          for (DeviceRequestParameterComponent i : parameter)
2080            dst.parameter.add(i.copy());
2081        };
2082        dst.subject = subject == null ? null : subject.copy();
2083        dst.encounter = encounter == null ? null : encounter.copy();
2084        dst.occurrence = occurrence == null ? null : occurrence.copy();
2085        dst.authoredOn = authoredOn == null ? null : authoredOn.copy();
2086        dst.requester = requester == null ? null : requester.copy();
2087        dst.performerType = performerType == null ? null : performerType.copy();
2088        dst.performer = performer == null ? null : performer.copy();
2089        if (reasonCode != null) {
2090          dst.reasonCode = new ArrayList<CodeableConcept>();
2091          for (CodeableConcept i : reasonCode)
2092            dst.reasonCode.add(i.copy());
2093        };
2094        if (reasonReference != null) {
2095          dst.reasonReference = new ArrayList<Reference>();
2096          for (Reference i : reasonReference)
2097            dst.reasonReference.add(i.copy());
2098        };
2099        if (insurance != null) {
2100          dst.insurance = new ArrayList<Reference>();
2101          for (Reference i : insurance)
2102            dst.insurance.add(i.copy());
2103        };
2104        if (supportingInfo != null) {
2105          dst.supportingInfo = new ArrayList<Reference>();
2106          for (Reference i : supportingInfo)
2107            dst.supportingInfo.add(i.copy());
2108        };
2109        if (note != null) {
2110          dst.note = new ArrayList<Annotation>();
2111          for (Annotation i : note)
2112            dst.note.add(i.copy());
2113        };
2114        if (relevantHistory != null) {
2115          dst.relevantHistory = new ArrayList<Reference>();
2116          for (Reference i : relevantHistory)
2117            dst.relevantHistory.add(i.copy());
2118        };
2119      }
2120
2121      protected DeviceRequest typedCopy() {
2122        return copy();
2123      }
2124
2125      @Override
2126      public boolean equalsDeep(Base other_) {
2127        if (!super.equalsDeep(other_))
2128          return false;
2129        if (!(other_ instanceof DeviceRequest))
2130          return false;
2131        DeviceRequest o = (DeviceRequest) other_;
2132        return compareDeep(identifier, o.identifier, true) && compareDeep(instantiatesCanonical, o.instantiatesCanonical, true)
2133           && compareDeep(instantiatesUri, o.instantiatesUri, true) && compareDeep(basedOn, o.basedOn, true)
2134           && compareDeep(priorRequest, o.priorRequest, true) && compareDeep(groupIdentifier, o.groupIdentifier, true)
2135           && compareDeep(status, o.status, true) && compareDeep(intent, o.intent, true) && compareDeep(priority, o.priority, true)
2136           && compareDeep(code, o.code, true) && compareDeep(parameter, o.parameter, true) && compareDeep(subject, o.subject, true)
2137           && compareDeep(encounter, o.encounter, true) && compareDeep(occurrence, o.occurrence, true) && compareDeep(authoredOn, o.authoredOn, true)
2138           && compareDeep(requester, o.requester, true) && compareDeep(performerType, o.performerType, true)
2139           && compareDeep(performer, o.performer, true) && compareDeep(reasonCode, o.reasonCode, true) && compareDeep(reasonReference, o.reasonReference, true)
2140           && compareDeep(insurance, o.insurance, true) && compareDeep(supportingInfo, o.supportingInfo, true)
2141           && compareDeep(note, o.note, true) && compareDeep(relevantHistory, o.relevantHistory, true);
2142      }
2143
2144      @Override
2145      public boolean equalsShallow(Base other_) {
2146        if (!super.equalsShallow(other_))
2147          return false;
2148        if (!(other_ instanceof DeviceRequest))
2149          return false;
2150        DeviceRequest o = (DeviceRequest) other_;
2151        return compareValues(instantiatesCanonical, o.instantiatesCanonical, true) && compareValues(instantiatesUri, o.instantiatesUri, true)
2152           && compareValues(status, o.status, true) && compareValues(intent, o.intent, true) && compareValues(priority, o.priority, true)
2153           && compareValues(authoredOn, o.authoredOn, true);
2154      }
2155
2156      public boolean isEmpty() {
2157        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, instantiatesCanonical
2158          , instantiatesUri, basedOn, priorRequest, groupIdentifier, status, intent, priority
2159          , code, parameter, subject, encounter, occurrence, authoredOn, requester, performerType
2160          , performer, reasonCode, reasonReference, insurance, supportingInfo, note, relevantHistory
2161          );
2162      }
2163
2164  @Override
2165  public ResourceType getResourceType() {
2166    return ResourceType.DeviceRequest;
2167   }
2168
2169 /**
2170   * Search parameter: <b>authored-on</b>
2171   * <p>
2172   * Description: <b>When the request transitioned to being actionable</b><br>
2173   * Type: <b>date</b><br>
2174   * Path: <b>DeviceRequest.authoredOn</b><br>
2175   * </p>
2176   */
2177  @SearchParamDefinition(name="authored-on", path="DeviceRequest.authoredOn", description="When the request transitioned to being actionable", type="date" )
2178  public static final String SP_AUTHORED_ON = "authored-on";
2179 /**
2180   * <b>Fluent Client</b> search parameter constant for <b>authored-on</b>
2181   * <p>
2182   * Description: <b>When the request transitioned to being actionable</b><br>
2183   * Type: <b>date</b><br>
2184   * Path: <b>DeviceRequest.authoredOn</b><br>
2185   * </p>
2186   */
2187  public static final ca.uhn.fhir.rest.gclient.DateClientParam AUTHORED_ON = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_AUTHORED_ON);
2188
2189 /**
2190   * Search parameter: <b>based-on</b>
2191   * <p>
2192   * Description: <b>Plan/proposal/order fulfilled by this request</b><br>
2193   * Type: <b>reference</b><br>
2194   * Path: <b>DeviceRequest.basedOn</b><br>
2195   * </p>
2196   */
2197  @SearchParamDefinition(name="based-on", path="DeviceRequest.basedOn", description="Plan/proposal/order fulfilled by this request", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, CatalogEntry.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, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceMetric.class, DeviceRequest.class, DeviceUseStatement.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.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, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Media.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchDefinition.class, ResearchElementDefinition.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, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2198  public static final String SP_BASED_ON = "based-on";
2199 /**
2200   * <b>Fluent Client</b> search parameter constant for <b>based-on</b>
2201   * <p>
2202   * Description: <b>Plan/proposal/order fulfilled by this request</b><br>
2203   * Type: <b>reference</b><br>
2204   * Path: <b>DeviceRequest.basedOn</b><br>
2205   * </p>
2206   */
2207  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASED_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASED_ON);
2208
2209/**
2210   * Constant for fluent queries to be used to add include statements. Specifies
2211   * the path value of "<b>DeviceRequest:based-on</b>".
2212   */
2213  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASED_ON = new ca.uhn.fhir.model.api.Include("DeviceRequest:based-on").toLocked();
2214
2215 /**
2216   * Search parameter: <b>device</b>
2217   * <p>
2218   * Description: <b>Reference to resource that is being requested/ordered</b><br>
2219   * Type: <b>reference</b><br>
2220   * Path: <b>(DeviceRequest.code as Reference)</b><br>
2221   * </p>
2222   */
2223  @SearchParamDefinition(name="device", path="(DeviceRequest.code as Reference)", description="Reference to resource that is being requested/ordered", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Device") }, target={Device.class } )
2224  public static final String SP_DEVICE = "device";
2225 /**
2226   * <b>Fluent Client</b> search parameter constant for <b>device</b>
2227   * <p>
2228   * Description: <b>Reference to resource that is being requested/ordered</b><br>
2229   * Type: <b>reference</b><br>
2230   * Path: <b>(DeviceRequest.code as Reference)</b><br>
2231   * </p>
2232   */
2233  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEVICE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DEVICE);
2234
2235/**
2236   * Constant for fluent queries to be used to add include statements. Specifies
2237   * the path value of "<b>DeviceRequest:device</b>".
2238   */
2239  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEVICE = new ca.uhn.fhir.model.api.Include("DeviceRequest:device").toLocked();
2240
2241 /**
2242   * Search parameter: <b>event-date</b>
2243   * <p>
2244   * Description: <b>When service should occur</b><br>
2245   * Type: <b>date</b><br>
2246   * Path: <b>(DeviceRequest.occurrence as dateTime) | (DeviceRequest.occurrence as Period)</b><br>
2247   * </p>
2248   */
2249  @SearchParamDefinition(name="event-date", path="(DeviceRequest.occurrence as dateTime) | (DeviceRequest.occurrence as Period)", description="When service should occur", type="date" )
2250  public static final String SP_EVENT_DATE = "event-date";
2251 /**
2252   * <b>Fluent Client</b> search parameter constant for <b>event-date</b>
2253   * <p>
2254   * Description: <b>When service should occur</b><br>
2255   * Type: <b>date</b><br>
2256   * Path: <b>(DeviceRequest.occurrence as dateTime) | (DeviceRequest.occurrence as Period)</b><br>
2257   * </p>
2258   */
2259  public static final ca.uhn.fhir.rest.gclient.DateClientParam EVENT_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_EVENT_DATE);
2260
2261 /**
2262   * Search parameter: <b>group-identifier</b>
2263   * <p>
2264   * Description: <b>Composite request this is part of</b><br>
2265   * Type: <b>token</b><br>
2266   * Path: <b>DeviceRequest.groupIdentifier</b><br>
2267   * </p>
2268   */
2269  @SearchParamDefinition(name="group-identifier", path="DeviceRequest.groupIdentifier", description="Composite request this is part of", type="token" )
2270  public static final String SP_GROUP_IDENTIFIER = "group-identifier";
2271 /**
2272   * <b>Fluent Client</b> search parameter constant for <b>group-identifier</b>
2273   * <p>
2274   * Description: <b>Composite request this is part of</b><br>
2275   * Type: <b>token</b><br>
2276   * Path: <b>DeviceRequest.groupIdentifier</b><br>
2277   * </p>
2278   */
2279  public static final ca.uhn.fhir.rest.gclient.TokenClientParam GROUP_IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_GROUP_IDENTIFIER);
2280
2281 /**
2282   * Search parameter: <b>instantiates-canonical</b>
2283   * <p>
2284   * Description: <b>Instantiates FHIR protocol or definition</b><br>
2285   * Type: <b>reference</b><br>
2286   * Path: <b>DeviceRequest.instantiatesCanonical</b><br>
2287   * </p>
2288   */
2289  @SearchParamDefinition(name="instantiates-canonical", path="DeviceRequest.instantiatesCanonical", description="Instantiates FHIR protocol or definition", type="reference", target={ActivityDefinition.class, PlanDefinition.class } )
2290  public static final String SP_INSTANTIATES_CANONICAL = "instantiates-canonical";
2291 /**
2292   * <b>Fluent Client</b> search parameter constant for <b>instantiates-canonical</b>
2293   * <p>
2294   * Description: <b>Instantiates FHIR protocol or definition</b><br>
2295   * Type: <b>reference</b><br>
2296   * Path: <b>DeviceRequest.instantiatesCanonical</b><br>
2297   * </p>
2298   */
2299  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INSTANTIATES_CANONICAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INSTANTIATES_CANONICAL);
2300
2301/**
2302   * Constant for fluent queries to be used to add include statements. Specifies
2303   * the path value of "<b>DeviceRequest:instantiates-canonical</b>".
2304   */
2305  public static final ca.uhn.fhir.model.api.Include INCLUDE_INSTANTIATES_CANONICAL = new ca.uhn.fhir.model.api.Include("DeviceRequest:instantiates-canonical").toLocked();
2306
2307 /**
2308   * Search parameter: <b>instantiates-uri</b>
2309   * <p>
2310   * Description: <b>Instantiates external protocol or definition</b><br>
2311   * Type: <b>uri</b><br>
2312   * Path: <b>DeviceRequest.instantiatesUri</b><br>
2313   * </p>
2314   */
2315  @SearchParamDefinition(name="instantiates-uri", path="DeviceRequest.instantiatesUri", description="Instantiates external protocol or definition", type="uri" )
2316  public static final String SP_INSTANTIATES_URI = "instantiates-uri";
2317 /**
2318   * <b>Fluent Client</b> search parameter constant for <b>instantiates-uri</b>
2319   * <p>
2320   * Description: <b>Instantiates external protocol or definition</b><br>
2321   * Type: <b>uri</b><br>
2322   * Path: <b>DeviceRequest.instantiatesUri</b><br>
2323   * </p>
2324   */
2325  public static final ca.uhn.fhir.rest.gclient.UriClientParam INSTANTIATES_URI = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_INSTANTIATES_URI);
2326
2327 /**
2328   * Search parameter: <b>insurance</b>
2329   * <p>
2330   * Description: <b>Associated insurance coverage</b><br>
2331   * Type: <b>reference</b><br>
2332   * Path: <b>DeviceRequest.insurance</b><br>
2333   * </p>
2334   */
2335  @SearchParamDefinition(name="insurance", path="DeviceRequest.insurance", description="Associated insurance coverage", type="reference", target={ClaimResponse.class, Coverage.class } )
2336  public static final String SP_INSURANCE = "insurance";
2337 /**
2338   * <b>Fluent Client</b> search parameter constant for <b>insurance</b>
2339   * <p>
2340   * Description: <b>Associated insurance coverage</b><br>
2341   * Type: <b>reference</b><br>
2342   * Path: <b>DeviceRequest.insurance</b><br>
2343   * </p>
2344   */
2345  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INSURANCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INSURANCE);
2346
2347/**
2348   * Constant for fluent queries to be used to add include statements. Specifies
2349   * the path value of "<b>DeviceRequest:insurance</b>".
2350   */
2351  public static final ca.uhn.fhir.model.api.Include INCLUDE_INSURANCE = new ca.uhn.fhir.model.api.Include("DeviceRequest:insurance").toLocked();
2352
2353 /**
2354   * Search parameter: <b>intent</b>
2355   * <p>
2356   * Description: <b>proposal | plan | original-order |reflex-order</b><br>
2357   * Type: <b>token</b><br>
2358   * Path: <b>DeviceRequest.intent</b><br>
2359   * </p>
2360   */
2361  @SearchParamDefinition(name="intent", path="DeviceRequest.intent", description="proposal | plan | original-order |reflex-order", type="token" )
2362  public static final String SP_INTENT = "intent";
2363 /**
2364   * <b>Fluent Client</b> search parameter constant for <b>intent</b>
2365   * <p>
2366   * Description: <b>proposal | plan | original-order |reflex-order</b><br>
2367   * Type: <b>token</b><br>
2368   * Path: <b>DeviceRequest.intent</b><br>
2369   * </p>
2370   */
2371  public static final ca.uhn.fhir.rest.gclient.TokenClientParam INTENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_INTENT);
2372
2373 /**
2374   * Search parameter: <b>performer</b>
2375   * <p>
2376   * Description: <b>Desired performer for service</b><br>
2377   * Type: <b>reference</b><br>
2378   * Path: <b>DeviceRequest.performer</b><br>
2379   * </p>
2380   */
2381  @SearchParamDefinition(name="performer", path="DeviceRequest.performer", 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 } )
2382  public static final String SP_PERFORMER = "performer";
2383 /**
2384   * <b>Fluent Client</b> search parameter constant for <b>performer</b>
2385   * <p>
2386   * Description: <b>Desired performer for service</b><br>
2387   * Type: <b>reference</b><br>
2388   * Path: <b>DeviceRequest.performer</b><br>
2389   * </p>
2390   */
2391  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PERFORMER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PERFORMER);
2392
2393/**
2394   * Constant for fluent queries to be used to add include statements. Specifies
2395   * the path value of "<b>DeviceRequest:performer</b>".
2396   */
2397  public static final ca.uhn.fhir.model.api.Include INCLUDE_PERFORMER = new ca.uhn.fhir.model.api.Include("DeviceRequest:performer").toLocked();
2398
2399 /**
2400   * Search parameter: <b>prior-request</b>
2401   * <p>
2402   * Description: <b>Request takes the place of referenced completed or terminated requests</b><br>
2403   * Type: <b>reference</b><br>
2404   * Path: <b>DeviceRequest.priorRequest</b><br>
2405   * </p>
2406   */
2407  @SearchParamDefinition(name="prior-request", path="DeviceRequest.priorRequest", description="Request takes the place of referenced completed or terminated requests", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, CatalogEntry.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, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceMetric.class, DeviceRequest.class, DeviceUseStatement.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.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, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Media.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchDefinition.class, ResearchElementDefinition.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, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2408  public static final String SP_PRIOR_REQUEST = "prior-request";
2409 /**
2410   * <b>Fluent Client</b> search parameter constant for <b>prior-request</b>
2411   * <p>
2412   * Description: <b>Request takes the place of referenced completed or terminated requests</b><br>
2413   * Type: <b>reference</b><br>
2414   * Path: <b>DeviceRequest.priorRequest</b><br>
2415   * </p>
2416   */
2417  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PRIOR_REQUEST = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PRIOR_REQUEST);
2418
2419/**
2420   * Constant for fluent queries to be used to add include statements. Specifies
2421   * the path value of "<b>DeviceRequest:prior-request</b>".
2422   */
2423  public static final ca.uhn.fhir.model.api.Include INCLUDE_PRIOR_REQUEST = new ca.uhn.fhir.model.api.Include("DeviceRequest:prior-request").toLocked();
2424
2425 /**
2426   * Search parameter: <b>requester</b>
2427   * <p>
2428   * Description: <b>Who/what is requesting service</b><br>
2429   * Type: <b>reference</b><br>
2430   * Path: <b>DeviceRequest.requester</b><br>
2431   * </p>
2432   */
2433  @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 } )
2434  public static final String SP_REQUESTER = "requester";
2435 /**
2436   * <b>Fluent Client</b> search parameter constant for <b>requester</b>
2437   * <p>
2438   * Description: <b>Who/what is requesting service</b><br>
2439   * Type: <b>reference</b><br>
2440   * Path: <b>DeviceRequest.requester</b><br>
2441   * </p>
2442   */
2443  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REQUESTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REQUESTER);
2444
2445/**
2446   * Constant for fluent queries to be used to add include statements. Specifies
2447   * the path value of "<b>DeviceRequest:requester</b>".
2448   */
2449  public static final ca.uhn.fhir.model.api.Include INCLUDE_REQUESTER = new ca.uhn.fhir.model.api.Include("DeviceRequest:requester").toLocked();
2450
2451 /**
2452   * Search parameter: <b>status</b>
2453   * <p>
2454   * Description: <b>entered-in-error | draft | active |suspended | completed</b><br>
2455   * Type: <b>token</b><br>
2456   * Path: <b>DeviceRequest.status</b><br>
2457   * </p>
2458   */
2459  @SearchParamDefinition(name="status", path="DeviceRequest.status", description="entered-in-error | draft | active |suspended | completed", type="token" )
2460  public static final String SP_STATUS = "status";
2461 /**
2462   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2463   * <p>
2464   * Description: <b>entered-in-error | draft | active |suspended | completed</b><br>
2465   * Type: <b>token</b><br>
2466   * Path: <b>DeviceRequest.status</b><br>
2467   * </p>
2468   */
2469  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2470
2471 /**
2472   * Search parameter: <b>subject</b>
2473   * <p>
2474   * Description: <b>Individual the service is ordered for</b><br>
2475   * Type: <b>reference</b><br>
2476   * Path: <b>DeviceRequest.subject</b><br>
2477   * </p>
2478   */
2479  @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 } )
2480  public static final String SP_SUBJECT = "subject";
2481 /**
2482   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
2483   * <p>
2484   * Description: <b>Individual the service is ordered for</b><br>
2485   * Type: <b>reference</b><br>
2486   * Path: <b>DeviceRequest.subject</b><br>
2487   * </p>
2488   */
2489  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
2490
2491/**
2492   * Constant for fluent queries to be used to add include statements. Specifies
2493   * the path value of "<b>DeviceRequest:subject</b>".
2494   */
2495  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("DeviceRequest:subject").toLocked();
2496
2497 /**
2498   * Search parameter: <b>code</b>
2499   * <p>
2500   * Description: <b>Multiple Resources: 
2501
2502* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
2503* [Condition](condition.html): Code for the condition
2504* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
2505* [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
2506* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
2507* [List](list.html): What the purpose of this list is
2508* [Medication](medication.html): Returns medications for a specific code
2509* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
2510* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
2511* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
2512* [MedicationStatement](medicationstatement.html): Return statements of this medication code
2513* [Observation](observation.html): The code of the observation type
2514* [Procedure](procedure.html): A code to identify a  procedure
2515* [ServiceRequest](servicerequest.html): What is being requested/ordered
2516</b><br>
2517   * Type: <b>token</b><br>
2518   * Path: <b>AllergyIntolerance.code | AllergyIntolerance.reaction.substance | Condition.code | (DeviceRequest.code as CodeableConcept) | DiagnosticReport.code | FamilyMemberHistory.condition.code | List.code | Medication.code | (MedicationAdministration.medication as CodeableConcept) | (MedicationDispense.medication as CodeableConcept) | (MedicationRequest.medication as CodeableConcept) | (MedicationStatement.medication as CodeableConcept) | Observation.code | Procedure.code | ServiceRequest.code</b><br>
2519   * </p>
2520   */
2521  @SearchParamDefinition(name="code", path="AllergyIntolerance.code | AllergyIntolerance.reaction.substance | Condition.code | (DeviceRequest.code as CodeableConcept) | DiagnosticReport.code | FamilyMemberHistory.condition.code | List.code | Medication.code | (MedicationAdministration.medication as CodeableConcept) | (MedicationDispense.medication as CodeableConcept) | (MedicationRequest.medication as CodeableConcept) | (MedicationStatement.medication as CodeableConcept) | Observation.code | Procedure.code | ServiceRequest.code", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance\r\n* [Condition](condition.html): Code for the condition\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* [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* [Observation](observation.html): The code of the observation type\r\n* [Procedure](procedure.html): A code to identify a  procedure\r\n* [ServiceRequest](servicerequest.html): What is being requested/ordered\r\n", type="token" )
2522  public static final String SP_CODE = "code";
2523 /**
2524   * <b>Fluent Client</b> search parameter constant for <b>code</b>
2525   * <p>
2526   * Description: <b>Multiple Resources: 
2527
2528* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
2529* [Condition](condition.html): Code for the condition
2530* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
2531* [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
2532* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
2533* [List](list.html): What the purpose of this list is
2534* [Medication](medication.html): Returns medications for a specific code
2535* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
2536* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
2537* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
2538* [MedicationStatement](medicationstatement.html): Return statements of this medication code
2539* [Observation](observation.html): The code of the observation type
2540* [Procedure](procedure.html): A code to identify a  procedure
2541* [ServiceRequest](servicerequest.html): What is being requested/ordered
2542</b><br>
2543   * Type: <b>token</b><br>
2544   * Path: <b>AllergyIntolerance.code | AllergyIntolerance.reaction.substance | Condition.code | (DeviceRequest.code as CodeableConcept) | DiagnosticReport.code | FamilyMemberHistory.condition.code | List.code | Medication.code | (MedicationAdministration.medication as CodeableConcept) | (MedicationDispense.medication as CodeableConcept) | (MedicationRequest.medication as CodeableConcept) | (MedicationStatement.medication as CodeableConcept) | Observation.code | Procedure.code | ServiceRequest.code</b><br>
2545   * </p>
2546   */
2547  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
2548
2549 /**
2550   * Search parameter: <b>encounter</b>
2551   * <p>
2552   * Description: <b>Multiple Resources: 
2553
2554* [Composition](composition.html): Context of the Composition
2555* [DeviceRequest](devicerequest.html): Encounter during which request was created
2556* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
2557* [DocumentReference](documentreference.html): Context of the document  content
2558* [Flag](flag.html): Alert relevant during encounter
2559* [List](list.html): Context in which list created
2560* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
2561* [Observation](observation.html): Encounter related to the observation
2562* [Procedure](procedure.html): Encounter created as part of
2563* [RiskAssessment](riskassessment.html): Where was assessment performed?
2564* [ServiceRequest](servicerequest.html): An encounter in which this request is made
2565* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
2566</b><br>
2567   * Type: <b>reference</b><br>
2568   * Path: <b>Composition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | DocumentReference.context.encounter | Flag.encounter | List.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | RiskAssessment.encounter | ServiceRequest.encounter | VisionPrescription.encounter</b><br>
2569   * </p>
2570   */
2571  @SearchParamDefinition(name="encounter", path="Composition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | DocumentReference.context.encounter | Flag.encounter | List.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | RiskAssessment.encounter | ServiceRequest.encounter | VisionPrescription.encounter", description="Multiple Resources: \r\n\r\n* [Composition](composition.html): Context of the Composition\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* [DocumentReference](documentreference.html): Context of the document  content\r\n* [Flag](flag.html): Alert relevant during encounter\r\n* [List](list.html): Context in which list created\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): Encounter created as part of\r\n* [RiskAssessment](riskassessment.html): Where was assessment performed?\r\n* [ServiceRequest](servicerequest.html): An encounter in which this request is made\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, EpisodeOfCare.class } )
2572  public static final String SP_ENCOUNTER = "encounter";
2573 /**
2574   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
2575   * <p>
2576   * Description: <b>Multiple Resources: 
2577
2578* [Composition](composition.html): Context of the Composition
2579* [DeviceRequest](devicerequest.html): Encounter during which request was created
2580* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
2581* [DocumentReference](documentreference.html): Context of the document  content
2582* [Flag](flag.html): Alert relevant during encounter
2583* [List](list.html): Context in which list created
2584* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
2585* [Observation](observation.html): Encounter related to the observation
2586* [Procedure](procedure.html): Encounter created as part of
2587* [RiskAssessment](riskassessment.html): Where was assessment performed?
2588* [ServiceRequest](servicerequest.html): An encounter in which this request is made
2589* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
2590</b><br>
2591   * Type: <b>reference</b><br>
2592   * Path: <b>Composition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | DocumentReference.context.encounter | Flag.encounter | List.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | RiskAssessment.encounter | ServiceRequest.encounter | VisionPrescription.encounter</b><br>
2593   * </p>
2594   */
2595  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
2596
2597/**
2598   * Constant for fluent queries to be used to add include statements. Specifies
2599   * the path value of "<b>DeviceRequest:encounter</b>".
2600   */
2601  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("DeviceRequest:encounter").toLocked();
2602
2603 /**
2604   * Search parameter: <b>identifier</b>
2605   * <p>
2606   * Description: <b>Multiple Resources: 
2607
2608* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2609* [CarePlan](careplan.html): External Ids for this plan
2610* [CareTeam](careteam.html): External Ids for this team
2611* [Composition](composition.html): Version-independent identifier for the Composition
2612* [Condition](condition.html): A unique identifier of the condition record
2613* [Consent](consent.html): Identifier for this record (external references)
2614* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2615* [DeviceRequest](devicerequest.html): Business identifier for request/order
2616* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2617* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
2618* [DocumentReference](documentreference.html): Master Version Specific Identifier
2619* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2620* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2621* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2622* [Goal](goal.html): External Ids for this goal
2623* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID and Accession number
2624* [Immunization](immunization.html): Business identifier
2625* [List](list.html): Business identifier
2626* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2627* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2628* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2629* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
2630* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2631* [Observation](observation.html): The unique id for a particular observation
2632* [Procedure](procedure.html): A unique identifier for a procedure
2633* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2634* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2635* [SupplyDelivery](supplydelivery.html): External identifier
2636* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2637* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2638</b><br>
2639   * Type: <b>token</b><br>
2640   * Path: <b>AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.masterIdentifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier</b><br>
2641   * </p>
2642   */
2643  @SearchParamDefinition(name="identifier", path="AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.masterIdentifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): External ids for this item\r\n* [CarePlan](careplan.html): External Ids for this plan\r\n* [CareTeam](careteam.html): External Ids for this team\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* [DetectedIssue](detectedissue.html): Unique id for the detected issue\r\n* [DeviceRequest](devicerequest.html): Business identifier for request/order\r\n* [DiagnosticReport](diagnosticreport.html): An identifier for the report\r\n* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents\r\n* [DocumentReference](documentreference.html): Master Version Specific Identifier\r\n* [Encounter](encounter.html): Identifier(s) by which this encounter is known\r\n* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier\r\n* [Goal](goal.html): External Ids for this goal\r\n* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID and Accession number\r\n* [Immunization](immunization.html): Business identifier\r\n* [List](list.html): Business 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* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier\r\n* [Observation](observation.html): The unique id for a particular observation\r\n* [Procedure](procedure.html): A unique identifier for a procedure\r\n* [RiskAssessment](riskassessment.html): Unique identifier for the assessment\r\n* [ServiceRequest](servicerequest.html): Identifiers assigned to this order\r\n* [SupplyDelivery](supplydelivery.html): External identifier\r\n* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier\r\n", type="token" )
2644  public static final String SP_IDENTIFIER = "identifier";
2645 /**
2646   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2647   * <p>
2648   * Description: <b>Multiple Resources: 
2649
2650* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2651* [CarePlan](careplan.html): External Ids for this plan
2652* [CareTeam](careteam.html): External Ids for this team
2653* [Composition](composition.html): Version-independent identifier for the Composition
2654* [Condition](condition.html): A unique identifier of the condition record
2655* [Consent](consent.html): Identifier for this record (external references)
2656* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2657* [DeviceRequest](devicerequest.html): Business identifier for request/order
2658* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2659* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
2660* [DocumentReference](documentreference.html): Master Version Specific Identifier
2661* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2662* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2663* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2664* [Goal](goal.html): External Ids for this goal
2665* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID and Accession number
2666* [Immunization](immunization.html): Business identifier
2667* [List](list.html): Business identifier
2668* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2669* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2670* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2671* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
2672* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2673* [Observation](observation.html): The unique id for a particular observation
2674* [Procedure](procedure.html): A unique identifier for a procedure
2675* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2676* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2677* [SupplyDelivery](supplydelivery.html): External identifier
2678* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2679* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2680</b><br>
2681   * Type: <b>token</b><br>
2682   * Path: <b>AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.masterIdentifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier</b><br>
2683   * </p>
2684   */
2685  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2686
2687 /**
2688   * Search parameter: <b>patient</b>
2689   * <p>
2690   * Description: <b>Multiple Resources: 
2691
2692* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2693* [CarePlan](careplan.html): Who the care plan is for
2694* [CareTeam](careteam.html): Who care team is for
2695* [ClinicalImpression](clinicalimpression.html): Patient or group assessed
2696* [Composition](composition.html): Who and/or what the composition is about
2697* [Condition](condition.html): Who has the condition?
2698* [Consent](consent.html): Who the consent applies to
2699* [DetectedIssue](detectedissue.html): Associated patient
2700* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2701* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient
2702* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2703* [DocumentManifest](documentmanifest.html): The subject of the set of documents
2704* [DocumentReference](documentreference.html): Who/what is the subject of the document
2705* [Encounter](encounter.html): The patient or group present at the encounter
2706* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2707* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2708* [Flag](flag.html): The identity of a subject to list flags for
2709* [Goal](goal.html): Who this goal is intended for
2710* [ImagingStudy](imagingstudy.html): Who the study is about
2711* [Immunization](immunization.html): The patient for the vaccination record
2712* [List](list.html): If all resources have the same subject
2713* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2714* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2715* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2716* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2717* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
2718* [Observation](observation.html): The subject that the observation is about (if patient)
2719* [Procedure](procedure.html): Search by subject - a patient
2720* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2721* [ServiceRequest](servicerequest.html): Search by subject - a patient
2722* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2723* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2724</b><br>
2725   * Type: <b>reference</b><br>
2726   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.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) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
2727   * </p>
2728   */
2729  @SearchParamDefinition(name="patient", path="AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.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) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ClinicalImpression](clinicalimpression.html): Patient or group assessed\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* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentManifest](documentmanifest.html): The subject of the set of documents\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient or group present at the encounter\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\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* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [List](list.html): If all resources have the same subject\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* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, CatalogEntry.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, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceMetric.class, DeviceRequest.class, DeviceUseStatement.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.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, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Media.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchDefinition.class, ResearchElementDefinition.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, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2730  public static final String SP_PATIENT = "patient";
2731 /**
2732   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
2733   * <p>
2734   * Description: <b>Multiple Resources: 
2735
2736* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2737* [CarePlan](careplan.html): Who the care plan is for
2738* [CareTeam](careteam.html): Who care team is for
2739* [ClinicalImpression](clinicalimpression.html): Patient or group assessed
2740* [Composition](composition.html): Who and/or what the composition is about
2741* [Condition](condition.html): Who has the condition?
2742* [Consent](consent.html): Who the consent applies to
2743* [DetectedIssue](detectedissue.html): Associated patient
2744* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2745* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient
2746* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2747* [DocumentManifest](documentmanifest.html): The subject of the set of documents
2748* [DocumentReference](documentreference.html): Who/what is the subject of the document
2749* [Encounter](encounter.html): The patient or group present at the encounter
2750* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2751* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2752* [Flag](flag.html): The identity of a subject to list flags for
2753* [Goal](goal.html): Who this goal is intended for
2754* [ImagingStudy](imagingstudy.html): Who the study is about
2755* [Immunization](immunization.html): The patient for the vaccination record
2756* [List](list.html): If all resources have the same subject
2757* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2758* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2759* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2760* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2761* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
2762* [Observation](observation.html): The subject that the observation is about (if patient)
2763* [Procedure](procedure.html): Search by subject - a patient
2764* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2765* [ServiceRequest](servicerequest.html): Search by subject - a patient
2766* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2767* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2768</b><br>
2769   * Type: <b>reference</b><br>
2770   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.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) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
2771   * </p>
2772   */
2773  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
2774
2775/**
2776   * Constant for fluent queries to be used to add include statements. Specifies
2777   * the path value of "<b>DeviceRequest:patient</b>".
2778   */
2779  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("DeviceRequest:patient").toLocked();
2780
2781
2782}
2783