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