001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * A record of a device being used by a patient where the record is the result of a report from the patient or a clinician.
052 */
053@ResourceDef(name="DeviceUsage", profile="http://hl7.org/fhir/StructureDefinition/DeviceUsage")
054public class DeviceUsage extends DomainResource {
055
056    public enum DeviceUsageStatus {
057        /**
058         * The device is still being used.
059         */
060        ACTIVE, 
061        /**
062         * The device is no longer being used.
063         */
064        COMPLETED, 
065        /**
066         * The device was not used.
067         */
068        NOTDONE, 
069        /**
070         * The statement was recorded incorrectly.
071         */
072        ENTEREDINERROR, 
073        /**
074         * The device may be used at some time in the future.
075         */
076        INTENDED, 
077        /**
078         * Actions implied by the statement have been permanently halted, before all of them occurred.
079         */
080        STOPPED, 
081        /**
082         * Actions implied by the statement have been temporarily halted, but are expected to continue later. May also be called \"suspended\".
083         */
084        ONHOLD, 
085        /**
086         * added to help the parsers with the generic types
087         */
088        NULL;
089        public static DeviceUsageStatus fromCode(String codeString) throws FHIRException {
090            if (codeString == null || "".equals(codeString))
091                return null;
092        if ("active".equals(codeString))
093          return ACTIVE;
094        if ("completed".equals(codeString))
095          return COMPLETED;
096        if ("not-done".equals(codeString))
097          return NOTDONE;
098        if ("entered-in-error".equals(codeString))
099          return ENTEREDINERROR;
100        if ("intended".equals(codeString))
101          return INTENDED;
102        if ("stopped".equals(codeString))
103          return STOPPED;
104        if ("on-hold".equals(codeString))
105          return ONHOLD;
106        if (Configuration.isAcceptInvalidEnums())
107          return null;
108        else
109          throw new FHIRException("Unknown DeviceUsageStatus code '"+codeString+"'");
110        }
111        public String toCode() {
112          switch (this) {
113            case ACTIVE: return "active";
114            case COMPLETED: return "completed";
115            case NOTDONE: return "not-done";
116            case ENTEREDINERROR: return "entered-in-error";
117            case INTENDED: return "intended";
118            case STOPPED: return "stopped";
119            case ONHOLD: return "on-hold";
120            case NULL: return null;
121            default: return "?";
122          }
123        }
124        public String getSystem() {
125          switch (this) {
126            case ACTIVE: return "http://hl7.org/fhir/deviceusage-status";
127            case COMPLETED: return "http://hl7.org/fhir/deviceusage-status";
128            case NOTDONE: return "http://hl7.org/fhir/deviceusage-status";
129            case ENTEREDINERROR: return "http://hl7.org/fhir/deviceusage-status";
130            case INTENDED: return "http://hl7.org/fhir/deviceusage-status";
131            case STOPPED: return "http://hl7.org/fhir/deviceusage-status";
132            case ONHOLD: return "http://hl7.org/fhir/deviceusage-status";
133            case NULL: return null;
134            default: return "?";
135          }
136        }
137        public String getDefinition() {
138          switch (this) {
139            case ACTIVE: return "The device is still being used.";
140            case COMPLETED: return "The device is no longer being used.";
141            case NOTDONE: return "The device was not used.";
142            case ENTEREDINERROR: return "The statement was recorded incorrectly.";
143            case INTENDED: return "The device may be used at some time in the future.";
144            case STOPPED: return "Actions implied by the statement have been permanently halted, before all of them occurred.";
145            case ONHOLD: return "Actions implied by the statement have been temporarily halted, but are expected to continue later. May also be called \"suspended\".";
146            case NULL: return null;
147            default: return "?";
148          }
149        }
150        public String getDisplay() {
151          switch (this) {
152            case ACTIVE: return "Active";
153            case COMPLETED: return "Completed";
154            case NOTDONE: return "Not done";
155            case ENTEREDINERROR: return "Entered in Error";
156            case INTENDED: return "Intended";
157            case STOPPED: return "Stopped";
158            case ONHOLD: return "On Hold";
159            case NULL: return null;
160            default: return "?";
161          }
162        }
163    }
164
165  public static class DeviceUsageStatusEnumFactory implements EnumFactory<DeviceUsageStatus> {
166    public DeviceUsageStatus fromCode(String codeString) throws IllegalArgumentException {
167      if (codeString == null || "".equals(codeString))
168            if (codeString == null || "".equals(codeString))
169                return null;
170        if ("active".equals(codeString))
171          return DeviceUsageStatus.ACTIVE;
172        if ("completed".equals(codeString))
173          return DeviceUsageStatus.COMPLETED;
174        if ("not-done".equals(codeString))
175          return DeviceUsageStatus.NOTDONE;
176        if ("entered-in-error".equals(codeString))
177          return DeviceUsageStatus.ENTEREDINERROR;
178        if ("intended".equals(codeString))
179          return DeviceUsageStatus.INTENDED;
180        if ("stopped".equals(codeString))
181          return DeviceUsageStatus.STOPPED;
182        if ("on-hold".equals(codeString))
183          return DeviceUsageStatus.ONHOLD;
184        throw new IllegalArgumentException("Unknown DeviceUsageStatus code '"+codeString+"'");
185        }
186        public Enumeration<DeviceUsageStatus> fromType(PrimitiveType<?> code) throws FHIRException {
187          if (code == null)
188            return null;
189          if (code.isEmpty())
190            return new Enumeration<DeviceUsageStatus>(this, DeviceUsageStatus.NULL, code);
191          String codeString = ((PrimitiveType) code).asStringValue();
192          if (codeString == null || "".equals(codeString))
193            return new Enumeration<DeviceUsageStatus>(this, DeviceUsageStatus.NULL, code);
194        if ("active".equals(codeString))
195          return new Enumeration<DeviceUsageStatus>(this, DeviceUsageStatus.ACTIVE, code);
196        if ("completed".equals(codeString))
197          return new Enumeration<DeviceUsageStatus>(this, DeviceUsageStatus.COMPLETED, code);
198        if ("not-done".equals(codeString))
199          return new Enumeration<DeviceUsageStatus>(this, DeviceUsageStatus.NOTDONE, code);
200        if ("entered-in-error".equals(codeString))
201          return new Enumeration<DeviceUsageStatus>(this, DeviceUsageStatus.ENTEREDINERROR, code);
202        if ("intended".equals(codeString))
203          return new Enumeration<DeviceUsageStatus>(this, DeviceUsageStatus.INTENDED, code);
204        if ("stopped".equals(codeString))
205          return new Enumeration<DeviceUsageStatus>(this, DeviceUsageStatus.STOPPED, code);
206        if ("on-hold".equals(codeString))
207          return new Enumeration<DeviceUsageStatus>(this, DeviceUsageStatus.ONHOLD, code);
208        throw new FHIRException("Unknown DeviceUsageStatus code '"+codeString+"'");
209        }
210    public String toCode(DeviceUsageStatus code) {
211       if (code == DeviceUsageStatus.NULL)
212           return null;
213       if (code == DeviceUsageStatus.ACTIVE)
214        return "active";
215      if (code == DeviceUsageStatus.COMPLETED)
216        return "completed";
217      if (code == DeviceUsageStatus.NOTDONE)
218        return "not-done";
219      if (code == DeviceUsageStatus.ENTEREDINERROR)
220        return "entered-in-error";
221      if (code == DeviceUsageStatus.INTENDED)
222        return "intended";
223      if (code == DeviceUsageStatus.STOPPED)
224        return "stopped";
225      if (code == DeviceUsageStatus.ONHOLD)
226        return "on-hold";
227      return "?";
228   }
229    public String toSystem(DeviceUsageStatus code) {
230      return code.getSystem();
231      }
232    }
233
234    @Block()
235    public static class DeviceUsageAdherenceComponent extends BackboneElement implements IBaseBackboneElement {
236        /**
237         * Type of adherence.
238         */
239        @Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
240        @Description(shortDefinition="always | never | sometimes", formalDefinition="Type of adherence." )
241        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/deviceusage-adherence-code")
242        protected CodeableConcept code;
243
244        /**
245         * Reason for adherence type.
246         */
247        @Child(name = "reason", type = {CodeableConcept.class}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
248        @Description(shortDefinition="lost | stolen | prescribed | broken | burned | forgot", formalDefinition="Reason for adherence type." )
249        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/deviceusage-adherence-reason")
250        protected List<CodeableConcept> reason;
251
252        private static final long serialVersionUID = -1932336797L;
253
254    /**
255     * Constructor
256     */
257      public DeviceUsageAdherenceComponent() {
258        super();
259      }
260
261    /**
262     * Constructor
263     */
264      public DeviceUsageAdherenceComponent(CodeableConcept code, CodeableConcept reason) {
265        super();
266        this.setCode(code);
267        this.addReason(reason);
268      }
269
270        /**
271         * @return {@link #code} (Type of adherence.)
272         */
273        public CodeableConcept getCode() { 
274          if (this.code == null)
275            if (Configuration.errorOnAutoCreate())
276              throw new Error("Attempt to auto-create DeviceUsageAdherenceComponent.code");
277            else if (Configuration.doAutoCreate())
278              this.code = new CodeableConcept(); // cc
279          return this.code;
280        }
281
282        public boolean hasCode() { 
283          return this.code != null && !this.code.isEmpty();
284        }
285
286        /**
287         * @param value {@link #code} (Type of adherence.)
288         */
289        public DeviceUsageAdherenceComponent setCode(CodeableConcept value) { 
290          this.code = value;
291          return this;
292        }
293
294        /**
295         * @return {@link #reason} (Reason for adherence type.)
296         */
297        public List<CodeableConcept> getReason() { 
298          if (this.reason == null)
299            this.reason = new ArrayList<CodeableConcept>();
300          return this.reason;
301        }
302
303        /**
304         * @return Returns a reference to <code>this</code> for easy method chaining
305         */
306        public DeviceUsageAdherenceComponent setReason(List<CodeableConcept> theReason) { 
307          this.reason = theReason;
308          return this;
309        }
310
311        public boolean hasReason() { 
312          if (this.reason == null)
313            return false;
314          for (CodeableConcept item : this.reason)
315            if (!item.isEmpty())
316              return true;
317          return false;
318        }
319
320        public CodeableConcept addReason() { //3
321          CodeableConcept t = new CodeableConcept();
322          if (this.reason == null)
323            this.reason = new ArrayList<CodeableConcept>();
324          this.reason.add(t);
325          return t;
326        }
327
328        public DeviceUsageAdherenceComponent addReason(CodeableConcept t) { //3
329          if (t == null)
330            return this;
331          if (this.reason == null)
332            this.reason = new ArrayList<CodeableConcept>();
333          this.reason.add(t);
334          return this;
335        }
336
337        /**
338         * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3}
339         */
340        public CodeableConcept getReasonFirstRep() { 
341          if (getReason().isEmpty()) {
342            addReason();
343          }
344          return getReason().get(0);
345        }
346
347        protected void listChildren(List<Property> children) {
348          super.listChildren(children);
349          children.add(new Property("code", "CodeableConcept", "Type of adherence.", 0, 1, code));
350          children.add(new Property("reason", "CodeableConcept", "Reason for adherence type.", 0, java.lang.Integer.MAX_VALUE, reason));
351        }
352
353        @Override
354        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
355          switch (_hash) {
356          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "Type of adherence.", 0, 1, code);
357          case -934964668: /*reason*/  return new Property("reason", "CodeableConcept", "Reason for adherence type.", 0, java.lang.Integer.MAX_VALUE, reason);
358          default: return super.getNamedProperty(_hash, _name, _checkValid);
359          }
360
361        }
362
363      @Override
364      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
365        switch (hash) {
366        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
367        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableConcept
368        default: return super.getProperty(hash, name, checkValid);
369        }
370
371      }
372
373      @Override
374      public Base setProperty(int hash, String name, Base value) throws FHIRException {
375        switch (hash) {
376        case 3059181: // code
377          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
378          return value;
379        case -934964668: // reason
380          this.getReason().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
381          return value;
382        default: return super.setProperty(hash, name, value);
383        }
384
385      }
386
387      @Override
388      public Base setProperty(String name, Base value) throws FHIRException {
389        if (name.equals("code")) {
390          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
391        } else if (name.equals("reason")) {
392          this.getReason().add(TypeConvertor.castToCodeableConcept(value));
393        } else
394          return super.setProperty(name, value);
395        return value;
396      }
397
398  @Override
399  public void removeChild(String name, Base value) throws FHIRException {
400        if (name.equals("code")) {
401          this.code = null;
402        } else if (name.equals("reason")) {
403          this.getReason().remove(value);
404        } else
405          super.removeChild(name, value);
406        
407      }
408
409      @Override
410      public Base makeProperty(int hash, String name) throws FHIRException {
411        switch (hash) {
412        case 3059181:  return getCode();
413        case -934964668:  return addReason(); 
414        default: return super.makeProperty(hash, name);
415        }
416
417      }
418
419      @Override
420      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
421        switch (hash) {
422        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
423        case -934964668: /*reason*/ return new String[] {"CodeableConcept"};
424        default: return super.getTypesForProperty(hash, name);
425        }
426
427      }
428
429      @Override
430      public Base addChild(String name) throws FHIRException {
431        if (name.equals("code")) {
432          this.code = new CodeableConcept();
433          return this.code;
434        }
435        else if (name.equals("reason")) {
436          return addReason();
437        }
438        else
439          return super.addChild(name);
440      }
441
442      public DeviceUsageAdherenceComponent copy() {
443        DeviceUsageAdherenceComponent dst = new DeviceUsageAdherenceComponent();
444        copyValues(dst);
445        return dst;
446      }
447
448      public void copyValues(DeviceUsageAdherenceComponent dst) {
449        super.copyValues(dst);
450        dst.code = code == null ? null : code.copy();
451        if (reason != null) {
452          dst.reason = new ArrayList<CodeableConcept>();
453          for (CodeableConcept i : reason)
454            dst.reason.add(i.copy());
455        };
456      }
457
458      @Override
459      public boolean equalsDeep(Base other_) {
460        if (!super.equalsDeep(other_))
461          return false;
462        if (!(other_ instanceof DeviceUsageAdherenceComponent))
463          return false;
464        DeviceUsageAdherenceComponent o = (DeviceUsageAdherenceComponent) other_;
465        return compareDeep(code, o.code, true) && compareDeep(reason, o.reason, true);
466      }
467
468      @Override
469      public boolean equalsShallow(Base other_) {
470        if (!super.equalsShallow(other_))
471          return false;
472        if (!(other_ instanceof DeviceUsageAdherenceComponent))
473          return false;
474        DeviceUsageAdherenceComponent o = (DeviceUsageAdherenceComponent) other_;
475        return true;
476      }
477
478      public boolean isEmpty() {
479        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, reason);
480      }
481
482  public String fhirType() {
483    return "DeviceUsage.adherence";
484
485  }
486
487  }
488
489    /**
490     * An external identifier for this statement such as an IRI.
491     */
492    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
493    @Description(shortDefinition="External identifier for this record", formalDefinition="An external identifier for this statement such as an IRI." )
494    protected List<Identifier> identifier;
495
496    /**
497     * A plan, proposal or order that is fulfilled in whole or in part by this DeviceUsage.
498     */
499    @Child(name = "basedOn", type = {ServiceRequest.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
500    @Description(shortDefinition="Fulfills plan, proposal or order", formalDefinition="A plan, proposal or order that is fulfilled in whole or in part by this DeviceUsage." )
501    protected List<Reference> basedOn;
502
503    /**
504     * A code representing the patient or other source's judgment about the state of the device used that this statement is about.  Generally this will be active or completed.
505     */
506    @Child(name = "status", type = {CodeType.class}, order=2, min=1, max=1, modifier=true, summary=true)
507    @Description(shortDefinition="active | completed | not-done | entered-in-error +", formalDefinition="A code representing the patient or other source's judgment about the state of the device used that this statement is about.  Generally this will be active or completed." )
508    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/deviceusage-status")
509    protected Enumeration<DeviceUsageStatus> status;
510
511    /**
512     * This attribute indicates a category for the statement - The device statement may be made in an inpatient or outpatient settting (inpatient | outpatient | community | patientspecified).
513     */
514    @Child(name = "category", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
515    @Description(shortDefinition="The category of the statement - classifying how the statement is made", formalDefinition="This attribute indicates a category for the statement - The device statement may be made in an inpatient or outpatient settting (inpatient | outpatient | community | patientspecified)." )
516    protected List<CodeableConcept> category;
517
518    /**
519     * The patient who used the device.
520     */
521    @Child(name = "patient", type = {Patient.class}, order=4, min=1, max=1, modifier=false, summary=true)
522    @Description(shortDefinition="Patient using device", formalDefinition="The patient who used the device." )
523    protected Reference patient;
524
525    /**
526     * Allows linking the DeviceUsage to the underlying Request, or to other information that supports or is used to derive the DeviceUsage.
527     */
528    @Child(name = "derivedFrom", type = {ServiceRequest.class, Procedure.class, Claim.class, Observation.class, QuestionnaireResponse.class, DocumentReference.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
529    @Description(shortDefinition="Supporting information", formalDefinition="Allows linking the DeviceUsage to the underlying Request, or to other information that supports or is used to derive the DeviceUsage." )
530    protected List<Reference> derivedFrom;
531
532    /**
533     * The encounter or episode of care that establishes the context for this device use statement.
534     */
535    @Child(name = "context", type = {Encounter.class, EpisodeOfCare.class}, order=6, min=0, max=1, modifier=false, summary=true)
536    @Description(shortDefinition="The encounter or episode of care that establishes the context for this device use statement", formalDefinition="The encounter or episode of care that establishes the context for this device use statement." )
537    protected Reference context;
538
539    /**
540     * How often the device was used.
541     */
542    @Child(name = "timing", type = {Timing.class, Period.class, DateTimeType.class}, order=7, min=0, max=1, modifier=false, summary=true)
543    @Description(shortDefinition="How often  the device was used", formalDefinition="How often the device was used." )
544    protected DataType timing;
545
546    /**
547     * The time at which the statement was recorded by informationSource.
548     */
549    @Child(name = "dateAsserted", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
550    @Description(shortDefinition="When the statement was made (and recorded)", formalDefinition="The time at which the statement was recorded by informationSource." )
551    protected DateTimeType dateAsserted;
552
553    /**
554     * The status of the device usage, for example always, sometimes, never. This is not the same as the status of the statement.
555     */
556    @Child(name = "usageStatus", type = {CodeableConcept.class}, order=9, min=0, max=1, modifier=false, summary=false)
557    @Description(shortDefinition="The status of the device usage, for example always, sometimes, never. This is not the same as the status of the statement", formalDefinition="The status of the device usage, for example always, sometimes, never. This is not the same as the status of the statement." )
558    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/deviceusage-status")
559    protected CodeableConcept usageStatus;
560
561    /**
562     * The reason for asserting the usage status - for example forgot, lost, stolen, broken.
563     */
564    @Child(name = "usageReason", type = {CodeableConcept.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
565    @Description(shortDefinition="The reason for asserting the usage status - for example forgot, lost, stolen, broken", formalDefinition="The reason for asserting the usage status - for example forgot, lost, stolen, broken." )
566    protected List<CodeableConcept> usageReason;
567
568    /**
569     * This indicates how or if the device is being used.
570     */
571    @Child(name = "adherence", type = {}, order=11, min=0, max=1, modifier=false, summary=false)
572    @Description(shortDefinition="How device is being used", formalDefinition="This indicates how or if the device is being used." )
573    protected DeviceUsageAdherenceComponent adherence;
574
575    /**
576     * Who reported the device was being used by the patient.
577     */
578    @Child(name = "informationSource", type = {Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class, Organization.class}, order=12, min=0, max=1, modifier=false, summary=true)
579    @Description(shortDefinition="Who made the statement", formalDefinition="Who reported the device was being used by the patient." )
580    protected Reference informationSource;
581
582    /**
583     * Code or Reference to device used.
584     */
585    @Child(name = "device", type = {CodeableReference.class}, order=13, min=1, max=1, modifier=false, summary=true)
586    @Description(shortDefinition="Code or Reference to device used", formalDefinition="Code or Reference to device used." )
587    protected CodeableReference device;
588
589    /**
590     * Reason or justification for the use of the device. A coded concept, or another resource whose existence justifies this DeviceUsage.
591     */
592    @Child(name = "reason", type = {CodeableReference.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
593    @Description(shortDefinition="Why device was used", formalDefinition="Reason or justification for the use of the device. A coded concept, or another resource whose existence justifies this DeviceUsage." )
594    protected List<CodeableReference> reason;
595
596    /**
597     * Indicates the anotomic location on the subject's body where the device was used ( i.e. the target).
598     */
599    @Child(name = "bodySite", type = {CodeableReference.class}, order=15, min=0, max=1, modifier=false, summary=true)
600    @Description(shortDefinition="Target body site", formalDefinition="Indicates the anotomic location on the subject's body where the device was used ( i.e. the target)." )
601    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/body-site")
602    protected CodeableReference bodySite;
603
604    /**
605     * Details about the device statement 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.
606     */
607    @Child(name = "note", type = {Annotation.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
608    @Description(shortDefinition="Addition details (comments, instructions)", formalDefinition="Details about the device statement 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." )
609    protected List<Annotation> note;
610
611    private static final long serialVersionUID = -10803928L;
612
613  /**
614   * Constructor
615   */
616    public DeviceUsage() {
617      super();
618    }
619
620  /**
621   * Constructor
622   */
623    public DeviceUsage(DeviceUsageStatus status, Reference patient, CodeableReference device) {
624      super();
625      this.setStatus(status);
626      this.setPatient(patient);
627      this.setDevice(device);
628    }
629
630    /**
631     * @return {@link #identifier} (An external identifier for this statement such as an IRI.)
632     */
633    public List<Identifier> getIdentifier() { 
634      if (this.identifier == null)
635        this.identifier = new ArrayList<Identifier>();
636      return this.identifier;
637    }
638
639    /**
640     * @return Returns a reference to <code>this</code> for easy method chaining
641     */
642    public DeviceUsage setIdentifier(List<Identifier> theIdentifier) { 
643      this.identifier = theIdentifier;
644      return this;
645    }
646
647    public boolean hasIdentifier() { 
648      if (this.identifier == null)
649        return false;
650      for (Identifier item : this.identifier)
651        if (!item.isEmpty())
652          return true;
653      return false;
654    }
655
656    public Identifier addIdentifier() { //3
657      Identifier t = new Identifier();
658      if (this.identifier == null)
659        this.identifier = new ArrayList<Identifier>();
660      this.identifier.add(t);
661      return t;
662    }
663
664    public DeviceUsage addIdentifier(Identifier t) { //3
665      if (t == null)
666        return this;
667      if (this.identifier == null)
668        this.identifier = new ArrayList<Identifier>();
669      this.identifier.add(t);
670      return this;
671    }
672
673    /**
674     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
675     */
676    public Identifier getIdentifierFirstRep() { 
677      if (getIdentifier().isEmpty()) {
678        addIdentifier();
679      }
680      return getIdentifier().get(0);
681    }
682
683    /**
684     * @return {@link #basedOn} (A plan, proposal or order that is fulfilled in whole or in part by this DeviceUsage.)
685     */
686    public List<Reference> getBasedOn() { 
687      if (this.basedOn == null)
688        this.basedOn = new ArrayList<Reference>();
689      return this.basedOn;
690    }
691
692    /**
693     * @return Returns a reference to <code>this</code> for easy method chaining
694     */
695    public DeviceUsage setBasedOn(List<Reference> theBasedOn) { 
696      this.basedOn = theBasedOn;
697      return this;
698    }
699
700    public boolean hasBasedOn() { 
701      if (this.basedOn == null)
702        return false;
703      for (Reference item : this.basedOn)
704        if (!item.isEmpty())
705          return true;
706      return false;
707    }
708
709    public Reference addBasedOn() { //3
710      Reference t = new Reference();
711      if (this.basedOn == null)
712        this.basedOn = new ArrayList<Reference>();
713      this.basedOn.add(t);
714      return t;
715    }
716
717    public DeviceUsage addBasedOn(Reference t) { //3
718      if (t == null)
719        return this;
720      if (this.basedOn == null)
721        this.basedOn = new ArrayList<Reference>();
722      this.basedOn.add(t);
723      return this;
724    }
725
726    /**
727     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
728     */
729    public Reference getBasedOnFirstRep() { 
730      if (getBasedOn().isEmpty()) {
731        addBasedOn();
732      }
733      return getBasedOn().get(0);
734    }
735
736    /**
737     * @return {@link #status} (A code representing the patient or other source's judgment about the state of the device used that this statement is about.  Generally this will be active or completed.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
738     */
739    public Enumeration<DeviceUsageStatus> getStatusElement() { 
740      if (this.status == null)
741        if (Configuration.errorOnAutoCreate())
742          throw new Error("Attempt to auto-create DeviceUsage.status");
743        else if (Configuration.doAutoCreate())
744          this.status = new Enumeration<DeviceUsageStatus>(new DeviceUsageStatusEnumFactory()); // bb
745      return this.status;
746    }
747
748    public boolean hasStatusElement() { 
749      return this.status != null && !this.status.isEmpty();
750    }
751
752    public boolean hasStatus() { 
753      return this.status != null && !this.status.isEmpty();
754    }
755
756    /**
757     * @param value {@link #status} (A code representing the patient or other source's judgment about the state of the device used that this statement is about.  Generally this will be active or completed.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
758     */
759    public DeviceUsage setStatusElement(Enumeration<DeviceUsageStatus> value) { 
760      this.status = value;
761      return this;
762    }
763
764    /**
765     * @return A code representing the patient or other source's judgment about the state of the device used that this statement is about.  Generally this will be active or completed.
766     */
767    public DeviceUsageStatus getStatus() { 
768      return this.status == null ? null : this.status.getValue();
769    }
770
771    /**
772     * @param value A code representing the patient or other source's judgment about the state of the device used that this statement is about.  Generally this will be active or completed.
773     */
774    public DeviceUsage setStatus(DeviceUsageStatus value) { 
775        if (this.status == null)
776          this.status = new Enumeration<DeviceUsageStatus>(new DeviceUsageStatusEnumFactory());
777        this.status.setValue(value);
778      return this;
779    }
780
781    /**
782     * @return {@link #category} (This attribute indicates a category for the statement - The device statement may be made in an inpatient or outpatient settting (inpatient | outpatient | community | patientspecified).)
783     */
784    public List<CodeableConcept> getCategory() { 
785      if (this.category == null)
786        this.category = new ArrayList<CodeableConcept>();
787      return this.category;
788    }
789
790    /**
791     * @return Returns a reference to <code>this</code> for easy method chaining
792     */
793    public DeviceUsage setCategory(List<CodeableConcept> theCategory) { 
794      this.category = theCategory;
795      return this;
796    }
797
798    public boolean hasCategory() { 
799      if (this.category == null)
800        return false;
801      for (CodeableConcept item : this.category)
802        if (!item.isEmpty())
803          return true;
804      return false;
805    }
806
807    public CodeableConcept addCategory() { //3
808      CodeableConcept t = new CodeableConcept();
809      if (this.category == null)
810        this.category = new ArrayList<CodeableConcept>();
811      this.category.add(t);
812      return t;
813    }
814
815    public DeviceUsage addCategory(CodeableConcept t) { //3
816      if (t == null)
817        return this;
818      if (this.category == null)
819        this.category = new ArrayList<CodeableConcept>();
820      this.category.add(t);
821      return this;
822    }
823
824    /**
825     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
826     */
827    public CodeableConcept getCategoryFirstRep() { 
828      if (getCategory().isEmpty()) {
829        addCategory();
830      }
831      return getCategory().get(0);
832    }
833
834    /**
835     * @return {@link #patient} (The patient who used the device.)
836     */
837    public Reference getPatient() { 
838      if (this.patient == null)
839        if (Configuration.errorOnAutoCreate())
840          throw new Error("Attempt to auto-create DeviceUsage.patient");
841        else if (Configuration.doAutoCreate())
842          this.patient = new Reference(); // cc
843      return this.patient;
844    }
845
846    public boolean hasPatient() { 
847      return this.patient != null && !this.patient.isEmpty();
848    }
849
850    /**
851     * @param value {@link #patient} (The patient who used the device.)
852     */
853    public DeviceUsage setPatient(Reference value) { 
854      this.patient = value;
855      return this;
856    }
857
858    /**
859     * @return {@link #derivedFrom} (Allows linking the DeviceUsage to the underlying Request, or to other information that supports or is used to derive the DeviceUsage.)
860     */
861    public List<Reference> getDerivedFrom() { 
862      if (this.derivedFrom == null)
863        this.derivedFrom = new ArrayList<Reference>();
864      return this.derivedFrom;
865    }
866
867    /**
868     * @return Returns a reference to <code>this</code> for easy method chaining
869     */
870    public DeviceUsage setDerivedFrom(List<Reference> theDerivedFrom) { 
871      this.derivedFrom = theDerivedFrom;
872      return this;
873    }
874
875    public boolean hasDerivedFrom() { 
876      if (this.derivedFrom == null)
877        return false;
878      for (Reference item : this.derivedFrom)
879        if (!item.isEmpty())
880          return true;
881      return false;
882    }
883
884    public Reference addDerivedFrom() { //3
885      Reference t = new Reference();
886      if (this.derivedFrom == null)
887        this.derivedFrom = new ArrayList<Reference>();
888      this.derivedFrom.add(t);
889      return t;
890    }
891
892    public DeviceUsage addDerivedFrom(Reference t) { //3
893      if (t == null)
894        return this;
895      if (this.derivedFrom == null)
896        this.derivedFrom = new ArrayList<Reference>();
897      this.derivedFrom.add(t);
898      return this;
899    }
900
901    /**
902     * @return The first repetition of repeating field {@link #derivedFrom}, creating it if it does not already exist {3}
903     */
904    public Reference getDerivedFromFirstRep() { 
905      if (getDerivedFrom().isEmpty()) {
906        addDerivedFrom();
907      }
908      return getDerivedFrom().get(0);
909    }
910
911    /**
912     * @return {@link #context} (The encounter or episode of care that establishes the context for this device use statement.)
913     */
914    public Reference getContext() { 
915      if (this.context == null)
916        if (Configuration.errorOnAutoCreate())
917          throw new Error("Attempt to auto-create DeviceUsage.context");
918        else if (Configuration.doAutoCreate())
919          this.context = new Reference(); // cc
920      return this.context;
921    }
922
923    public boolean hasContext() { 
924      return this.context != null && !this.context.isEmpty();
925    }
926
927    /**
928     * @param value {@link #context} (The encounter or episode of care that establishes the context for this device use statement.)
929     */
930    public DeviceUsage setContext(Reference value) { 
931      this.context = value;
932      return this;
933    }
934
935    /**
936     * @return {@link #timing} (How often the device was used.)
937     */
938    public DataType getTiming() { 
939      return this.timing;
940    }
941
942    /**
943     * @return {@link #timing} (How often the device was used.)
944     */
945    public Timing getTimingTiming() throws FHIRException { 
946      if (this.timing == null)
947        this.timing = new Timing();
948      if (!(this.timing instanceof Timing))
949        throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.timing.getClass().getName()+" was encountered");
950      return (Timing) this.timing;
951    }
952
953    public boolean hasTimingTiming() { 
954      return this != null && this.timing instanceof Timing;
955    }
956
957    /**
958     * @return {@link #timing} (How often the device was used.)
959     */
960    public Period getTimingPeriod() throws FHIRException { 
961      if (this.timing == null)
962        this.timing = new Period();
963      if (!(this.timing instanceof Period))
964        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.timing.getClass().getName()+" was encountered");
965      return (Period) this.timing;
966    }
967
968    public boolean hasTimingPeriod() { 
969      return this != null && this.timing instanceof Period;
970    }
971
972    /**
973     * @return {@link #timing} (How often the device was used.)
974     */
975    public DateTimeType getTimingDateTimeType() throws FHIRException { 
976      if (this.timing == null)
977        this.timing = new DateTimeType();
978      if (!(this.timing instanceof DateTimeType))
979        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.timing.getClass().getName()+" was encountered");
980      return (DateTimeType) this.timing;
981    }
982
983    public boolean hasTimingDateTimeType() { 
984      return this != null && this.timing instanceof DateTimeType;
985    }
986
987    public boolean hasTiming() { 
988      return this.timing != null && !this.timing.isEmpty();
989    }
990
991    /**
992     * @param value {@link #timing} (How often the device was used.)
993     */
994    public DeviceUsage setTiming(DataType value) { 
995      if (value != null && !(value instanceof Timing || value instanceof Period || value instanceof DateTimeType))
996        throw new FHIRException("Not the right type for DeviceUsage.timing[x]: "+value.fhirType());
997      this.timing = value;
998      return this;
999    }
1000
1001    /**
1002     * @return {@link #dateAsserted} (The time at which the statement was recorded by informationSource.). This is the underlying object with id, value and extensions. The accessor "getDateAsserted" gives direct access to the value
1003     */
1004    public DateTimeType getDateAssertedElement() { 
1005      if (this.dateAsserted == null)
1006        if (Configuration.errorOnAutoCreate())
1007          throw new Error("Attempt to auto-create DeviceUsage.dateAsserted");
1008        else if (Configuration.doAutoCreate())
1009          this.dateAsserted = new DateTimeType(); // bb
1010      return this.dateAsserted;
1011    }
1012
1013    public boolean hasDateAssertedElement() { 
1014      return this.dateAsserted != null && !this.dateAsserted.isEmpty();
1015    }
1016
1017    public boolean hasDateAsserted() { 
1018      return this.dateAsserted != null && !this.dateAsserted.isEmpty();
1019    }
1020
1021    /**
1022     * @param value {@link #dateAsserted} (The time at which the statement was recorded by informationSource.). This is the underlying object with id, value and extensions. The accessor "getDateAsserted" gives direct access to the value
1023     */
1024    public DeviceUsage setDateAssertedElement(DateTimeType value) { 
1025      this.dateAsserted = value;
1026      return this;
1027    }
1028
1029    /**
1030     * @return The time at which the statement was recorded by informationSource.
1031     */
1032    public Date getDateAsserted() { 
1033      return this.dateAsserted == null ? null : this.dateAsserted.getValue();
1034    }
1035
1036    /**
1037     * @param value The time at which the statement was recorded by informationSource.
1038     */
1039    public DeviceUsage setDateAsserted(Date value) { 
1040      if (value == null)
1041        this.dateAsserted = null;
1042      else {
1043        if (this.dateAsserted == null)
1044          this.dateAsserted = new DateTimeType();
1045        this.dateAsserted.setValue(value);
1046      }
1047      return this;
1048    }
1049
1050    /**
1051     * @return {@link #usageStatus} (The status of the device usage, for example always, sometimes, never. This is not the same as the status of the statement.)
1052     */
1053    public CodeableConcept getUsageStatus() { 
1054      if (this.usageStatus == null)
1055        if (Configuration.errorOnAutoCreate())
1056          throw new Error("Attempt to auto-create DeviceUsage.usageStatus");
1057        else if (Configuration.doAutoCreate())
1058          this.usageStatus = new CodeableConcept(); // cc
1059      return this.usageStatus;
1060    }
1061
1062    public boolean hasUsageStatus() { 
1063      return this.usageStatus != null && !this.usageStatus.isEmpty();
1064    }
1065
1066    /**
1067     * @param value {@link #usageStatus} (The status of the device usage, for example always, sometimes, never. This is not the same as the status of the statement.)
1068     */
1069    public DeviceUsage setUsageStatus(CodeableConcept value) { 
1070      this.usageStatus = value;
1071      return this;
1072    }
1073
1074    /**
1075     * @return {@link #usageReason} (The reason for asserting the usage status - for example forgot, lost, stolen, broken.)
1076     */
1077    public List<CodeableConcept> getUsageReason() { 
1078      if (this.usageReason == null)
1079        this.usageReason = new ArrayList<CodeableConcept>();
1080      return this.usageReason;
1081    }
1082
1083    /**
1084     * @return Returns a reference to <code>this</code> for easy method chaining
1085     */
1086    public DeviceUsage setUsageReason(List<CodeableConcept> theUsageReason) { 
1087      this.usageReason = theUsageReason;
1088      return this;
1089    }
1090
1091    public boolean hasUsageReason() { 
1092      if (this.usageReason == null)
1093        return false;
1094      for (CodeableConcept item : this.usageReason)
1095        if (!item.isEmpty())
1096          return true;
1097      return false;
1098    }
1099
1100    public CodeableConcept addUsageReason() { //3
1101      CodeableConcept t = new CodeableConcept();
1102      if (this.usageReason == null)
1103        this.usageReason = new ArrayList<CodeableConcept>();
1104      this.usageReason.add(t);
1105      return t;
1106    }
1107
1108    public DeviceUsage addUsageReason(CodeableConcept t) { //3
1109      if (t == null)
1110        return this;
1111      if (this.usageReason == null)
1112        this.usageReason = new ArrayList<CodeableConcept>();
1113      this.usageReason.add(t);
1114      return this;
1115    }
1116
1117    /**
1118     * @return The first repetition of repeating field {@link #usageReason}, creating it if it does not already exist {3}
1119     */
1120    public CodeableConcept getUsageReasonFirstRep() { 
1121      if (getUsageReason().isEmpty()) {
1122        addUsageReason();
1123      }
1124      return getUsageReason().get(0);
1125    }
1126
1127    /**
1128     * @return {@link #adherence} (This indicates how or if the device is being used.)
1129     */
1130    public DeviceUsageAdherenceComponent getAdherence() { 
1131      if (this.adherence == null)
1132        if (Configuration.errorOnAutoCreate())
1133          throw new Error("Attempt to auto-create DeviceUsage.adherence");
1134        else if (Configuration.doAutoCreate())
1135          this.adherence = new DeviceUsageAdherenceComponent(); // cc
1136      return this.adherence;
1137    }
1138
1139    public boolean hasAdherence() { 
1140      return this.adherence != null && !this.adherence.isEmpty();
1141    }
1142
1143    /**
1144     * @param value {@link #adherence} (This indicates how or if the device is being used.)
1145     */
1146    public DeviceUsage setAdherence(DeviceUsageAdherenceComponent value) { 
1147      this.adherence = value;
1148      return this;
1149    }
1150
1151    /**
1152     * @return {@link #informationSource} (Who reported the device was being used by the patient.)
1153     */
1154    public Reference getInformationSource() { 
1155      if (this.informationSource == null)
1156        if (Configuration.errorOnAutoCreate())
1157          throw new Error("Attempt to auto-create DeviceUsage.informationSource");
1158        else if (Configuration.doAutoCreate())
1159          this.informationSource = new Reference(); // cc
1160      return this.informationSource;
1161    }
1162
1163    public boolean hasInformationSource() { 
1164      return this.informationSource != null && !this.informationSource.isEmpty();
1165    }
1166
1167    /**
1168     * @param value {@link #informationSource} (Who reported the device was being used by the patient.)
1169     */
1170    public DeviceUsage setInformationSource(Reference value) { 
1171      this.informationSource = value;
1172      return this;
1173    }
1174
1175    /**
1176     * @return {@link #device} (Code or Reference to device used.)
1177     */
1178    public CodeableReference getDevice() { 
1179      if (this.device == null)
1180        if (Configuration.errorOnAutoCreate())
1181          throw new Error("Attempt to auto-create DeviceUsage.device");
1182        else if (Configuration.doAutoCreate())
1183          this.device = new CodeableReference(); // cc
1184      return this.device;
1185    }
1186
1187    public boolean hasDevice() { 
1188      return this.device != null && !this.device.isEmpty();
1189    }
1190
1191    /**
1192     * @param value {@link #device} (Code or Reference to device used.)
1193     */
1194    public DeviceUsage setDevice(CodeableReference value) { 
1195      this.device = value;
1196      return this;
1197    }
1198
1199    /**
1200     * @return {@link #reason} (Reason or justification for the use of the device. A coded concept, or another resource whose existence justifies this DeviceUsage.)
1201     */
1202    public List<CodeableReference> getReason() { 
1203      if (this.reason == null)
1204        this.reason = new ArrayList<CodeableReference>();
1205      return this.reason;
1206    }
1207
1208    /**
1209     * @return Returns a reference to <code>this</code> for easy method chaining
1210     */
1211    public DeviceUsage setReason(List<CodeableReference> theReason) { 
1212      this.reason = theReason;
1213      return this;
1214    }
1215
1216    public boolean hasReason() { 
1217      if (this.reason == null)
1218        return false;
1219      for (CodeableReference item : this.reason)
1220        if (!item.isEmpty())
1221          return true;
1222      return false;
1223    }
1224
1225    public CodeableReference addReason() { //3
1226      CodeableReference t = new CodeableReference();
1227      if (this.reason == null)
1228        this.reason = new ArrayList<CodeableReference>();
1229      this.reason.add(t);
1230      return t;
1231    }
1232
1233    public DeviceUsage addReason(CodeableReference t) { //3
1234      if (t == null)
1235        return this;
1236      if (this.reason == null)
1237        this.reason = new ArrayList<CodeableReference>();
1238      this.reason.add(t);
1239      return this;
1240    }
1241
1242    /**
1243     * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3}
1244     */
1245    public CodeableReference getReasonFirstRep() { 
1246      if (getReason().isEmpty()) {
1247        addReason();
1248      }
1249      return getReason().get(0);
1250    }
1251
1252    /**
1253     * @return {@link #bodySite} (Indicates the anotomic location on the subject's body where the device was used ( i.e. the target).)
1254     */
1255    public CodeableReference getBodySite() { 
1256      if (this.bodySite == null)
1257        if (Configuration.errorOnAutoCreate())
1258          throw new Error("Attempt to auto-create DeviceUsage.bodySite");
1259        else if (Configuration.doAutoCreate())
1260          this.bodySite = new CodeableReference(); // cc
1261      return this.bodySite;
1262    }
1263
1264    public boolean hasBodySite() { 
1265      return this.bodySite != null && !this.bodySite.isEmpty();
1266    }
1267
1268    /**
1269     * @param value {@link #bodySite} (Indicates the anotomic location on the subject's body where the device was used ( i.e. the target).)
1270     */
1271    public DeviceUsage setBodySite(CodeableReference value) { 
1272      this.bodySite = value;
1273      return this;
1274    }
1275
1276    /**
1277     * @return {@link #note} (Details about the device statement 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.)
1278     */
1279    public List<Annotation> getNote() { 
1280      if (this.note == null)
1281        this.note = new ArrayList<Annotation>();
1282      return this.note;
1283    }
1284
1285    /**
1286     * @return Returns a reference to <code>this</code> for easy method chaining
1287     */
1288    public DeviceUsage setNote(List<Annotation> theNote) { 
1289      this.note = theNote;
1290      return this;
1291    }
1292
1293    public boolean hasNote() { 
1294      if (this.note == null)
1295        return false;
1296      for (Annotation item : this.note)
1297        if (!item.isEmpty())
1298          return true;
1299      return false;
1300    }
1301
1302    public Annotation addNote() { //3
1303      Annotation t = new Annotation();
1304      if (this.note == null)
1305        this.note = new ArrayList<Annotation>();
1306      this.note.add(t);
1307      return t;
1308    }
1309
1310    public DeviceUsage addNote(Annotation t) { //3
1311      if (t == null)
1312        return this;
1313      if (this.note == null)
1314        this.note = new ArrayList<Annotation>();
1315      this.note.add(t);
1316      return this;
1317    }
1318
1319    /**
1320     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
1321     */
1322    public Annotation getNoteFirstRep() { 
1323      if (getNote().isEmpty()) {
1324        addNote();
1325      }
1326      return getNote().get(0);
1327    }
1328
1329      protected void listChildren(List<Property> children) {
1330        super.listChildren(children);
1331        children.add(new Property("identifier", "Identifier", "An external identifier for this statement such as an IRI.", 0, java.lang.Integer.MAX_VALUE, identifier));
1332        children.add(new Property("basedOn", "Reference(ServiceRequest)", "A plan, proposal or order that is fulfilled in whole or in part by this DeviceUsage.", 0, java.lang.Integer.MAX_VALUE, basedOn));
1333        children.add(new Property("status", "code", "A code representing the patient or other source's judgment about the state of the device used that this statement is about.  Generally this will be active or completed.", 0, 1, status));
1334        children.add(new Property("category", "CodeableConcept", "This attribute indicates a category for the statement - The device statement may be made in an inpatient or outpatient settting (inpatient | outpatient | community | patientspecified).", 0, java.lang.Integer.MAX_VALUE, category));
1335        children.add(new Property("patient", "Reference(Patient)", "The patient who used the device.", 0, 1, patient));
1336        children.add(new Property("derivedFrom", "Reference(ServiceRequest|Procedure|Claim|Observation|QuestionnaireResponse|DocumentReference)", "Allows linking the DeviceUsage to the underlying Request, or to other information that supports or is used to derive the DeviceUsage.", 0, java.lang.Integer.MAX_VALUE, derivedFrom));
1337        children.add(new Property("context", "Reference(Encounter|EpisodeOfCare)", "The encounter or episode of care that establishes the context for this device use statement.", 0, 1, context));
1338        children.add(new Property("timing[x]", "Timing|Period|dateTime", "How often the device was used.", 0, 1, timing));
1339        children.add(new Property("dateAsserted", "dateTime", "The time at which the statement was recorded by informationSource.", 0, 1, dateAsserted));
1340        children.add(new Property("usageStatus", "CodeableConcept", "The status of the device usage, for example always, sometimes, never. This is not the same as the status of the statement.", 0, 1, usageStatus));
1341        children.add(new Property("usageReason", "CodeableConcept", "The reason for asserting the usage status - for example forgot, lost, stolen, broken.", 0, java.lang.Integer.MAX_VALUE, usageReason));
1342        children.add(new Property("adherence", "", "This indicates how or if the device is being used.", 0, 1, adherence));
1343        children.add(new Property("informationSource", "Reference(Patient|Practitioner|PractitionerRole|RelatedPerson|Organization)", "Who reported the device was being used by the patient.", 0, 1, informationSource));
1344        children.add(new Property("device", "CodeableReference(Device|DeviceDefinition)", "Code or Reference to device used.", 0, 1, device));
1345        children.add(new Property("reason", "CodeableReference(Condition|Observation|DiagnosticReport|DocumentReference|Procedure)", "Reason or justification for the use of the device. A coded concept, or another resource whose existence justifies this DeviceUsage.", 0, java.lang.Integer.MAX_VALUE, reason));
1346        children.add(new Property("bodySite", "CodeableReference(BodyStructure)", "Indicates the anotomic location on the subject's body where the device was used ( i.e. the target).", 0, 1, bodySite));
1347        children.add(new Property("note", "Annotation", "Details about the device statement 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));
1348      }
1349
1350      @Override
1351      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1352        switch (_hash) {
1353        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "An external identifier for this statement such as an IRI.", 0, java.lang.Integer.MAX_VALUE, identifier);
1354        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(ServiceRequest)", "A plan, proposal or order that is fulfilled in whole or in part by this DeviceUsage.", 0, java.lang.Integer.MAX_VALUE, basedOn);
1355        case -892481550: /*status*/  return new Property("status", "code", "A code representing the patient or other source's judgment about the state of the device used that this statement is about.  Generally this will be active or completed.", 0, 1, status);
1356        case 50511102: /*category*/  return new Property("category", "CodeableConcept", "This attribute indicates a category for the statement - The device statement may be made in an inpatient or outpatient settting (inpatient | outpatient | community | patientspecified).", 0, java.lang.Integer.MAX_VALUE, category);
1357        case -791418107: /*patient*/  return new Property("patient", "Reference(Patient)", "The patient who used the device.", 0, 1, patient);
1358        case 1077922663: /*derivedFrom*/  return new Property("derivedFrom", "Reference(ServiceRequest|Procedure|Claim|Observation|QuestionnaireResponse|DocumentReference)", "Allows linking the DeviceUsage to the underlying Request, or to other information that supports or is used to derive the DeviceUsage.", 0, java.lang.Integer.MAX_VALUE, derivedFrom);
1359        case 951530927: /*context*/  return new Property("context", "Reference(Encounter|EpisodeOfCare)", "The encounter or episode of care that establishes the context for this device use statement.", 0, 1, context);
1360        case 164632566: /*timing[x]*/  return new Property("timing[x]", "Timing|Period|dateTime", "How often the device was used.", 0, 1, timing);
1361        case -873664438: /*timing*/  return new Property("timing[x]", "Timing|Period|dateTime", "How often the device was used.", 0, 1, timing);
1362        case -497554124: /*timingTiming*/  return new Property("timing[x]", "Timing", "How often the device was used.", 0, 1, timing);
1363        case -615615829: /*timingPeriod*/  return new Property("timing[x]", "Period", "How often the device was used.", 0, 1, timing);
1364        case -1837458939: /*timingDateTime*/  return new Property("timing[x]", "dateTime", "How often the device was used.", 0, 1, timing);
1365        case -1980855245: /*dateAsserted*/  return new Property("dateAsserted", "dateTime", "The time at which the statement was recorded by informationSource.", 0, 1, dateAsserted);
1366        case 907197683: /*usageStatus*/  return new Property("usageStatus", "CodeableConcept", "The status of the device usage, for example always, sometimes, never. This is not the same as the status of the statement.", 0, 1, usageStatus);
1367        case 864714565: /*usageReason*/  return new Property("usageReason", "CodeableConcept", "The reason for asserting the usage status - for example forgot, lost, stolen, broken.", 0, java.lang.Integer.MAX_VALUE, usageReason);
1368        case -231003683: /*adherence*/  return new Property("adherence", "", "This indicates how or if the device is being used.", 0, 1, adherence);
1369        case -2123220889: /*informationSource*/  return new Property("informationSource", "Reference(Patient|Practitioner|PractitionerRole|RelatedPerson|Organization)", "Who reported the device was being used by the patient.", 0, 1, informationSource);
1370        case -1335157162: /*device*/  return new Property("device", "CodeableReference(Device|DeviceDefinition)", "Code or Reference to device used.", 0, 1, device);
1371        case -934964668: /*reason*/  return new Property("reason", "CodeableReference(Condition|Observation|DiagnosticReport|DocumentReference|Procedure)", "Reason or justification for the use of the device. A coded concept, or another resource whose existence justifies this DeviceUsage.", 0, java.lang.Integer.MAX_VALUE, reason);
1372        case 1702620169: /*bodySite*/  return new Property("bodySite", "CodeableReference(BodyStructure)", "Indicates the anotomic location on the subject's body where the device was used ( i.e. the target).", 0, 1, bodySite);
1373        case 3387378: /*note*/  return new Property("note", "Annotation", "Details about the device statement 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);
1374        default: return super.getNamedProperty(_hash, _name, _checkValid);
1375        }
1376
1377      }
1378
1379      @Override
1380      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1381        switch (hash) {
1382        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1383        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
1384        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<DeviceUsageStatus>
1385        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept
1386        case -791418107: /*patient*/ return this.patient == null ? new Base[0] : new Base[] {this.patient}; // Reference
1387        case 1077922663: /*derivedFrom*/ return this.derivedFrom == null ? new Base[0] : this.derivedFrom.toArray(new Base[this.derivedFrom.size()]); // Reference
1388        case 951530927: /*context*/ return this.context == null ? new Base[0] : new Base[] {this.context}; // Reference
1389        case -873664438: /*timing*/ return this.timing == null ? new Base[0] : new Base[] {this.timing}; // DataType
1390        case -1980855245: /*dateAsserted*/ return this.dateAsserted == null ? new Base[0] : new Base[] {this.dateAsserted}; // DateTimeType
1391        case 907197683: /*usageStatus*/ return this.usageStatus == null ? new Base[0] : new Base[] {this.usageStatus}; // CodeableConcept
1392        case 864714565: /*usageReason*/ return this.usageReason == null ? new Base[0] : this.usageReason.toArray(new Base[this.usageReason.size()]); // CodeableConcept
1393        case -231003683: /*adherence*/ return this.adherence == null ? new Base[0] : new Base[] {this.adherence}; // DeviceUsageAdherenceComponent
1394        case -2123220889: /*informationSource*/ return this.informationSource == null ? new Base[0] : new Base[] {this.informationSource}; // Reference
1395        case -1335157162: /*device*/ return this.device == null ? new Base[0] : new Base[] {this.device}; // CodeableReference
1396        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableReference
1397        case 1702620169: /*bodySite*/ return this.bodySite == null ? new Base[0] : new Base[] {this.bodySite}; // CodeableReference
1398        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1399        default: return super.getProperty(hash, name, checkValid);
1400        }
1401
1402      }
1403
1404      @Override
1405      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1406        switch (hash) {
1407        case -1618432855: // identifier
1408          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1409          return value;
1410        case -332612366: // basedOn
1411          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
1412          return value;
1413        case -892481550: // status
1414          value = new DeviceUsageStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1415          this.status = (Enumeration) value; // Enumeration<DeviceUsageStatus>
1416          return value;
1417        case 50511102: // category
1418          this.getCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1419          return value;
1420        case -791418107: // patient
1421          this.patient = TypeConvertor.castToReference(value); // Reference
1422          return value;
1423        case 1077922663: // derivedFrom
1424          this.getDerivedFrom().add(TypeConvertor.castToReference(value)); // Reference
1425          return value;
1426        case 951530927: // context
1427          this.context = TypeConvertor.castToReference(value); // Reference
1428          return value;
1429        case -873664438: // timing
1430          this.timing = TypeConvertor.castToType(value); // DataType
1431          return value;
1432        case -1980855245: // dateAsserted
1433          this.dateAsserted = TypeConvertor.castToDateTime(value); // DateTimeType
1434          return value;
1435        case 907197683: // usageStatus
1436          this.usageStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1437          return value;
1438        case 864714565: // usageReason
1439          this.getUsageReason().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1440          return value;
1441        case -231003683: // adherence
1442          this.adherence = (DeviceUsageAdherenceComponent) value; // DeviceUsageAdherenceComponent
1443          return value;
1444        case -2123220889: // informationSource
1445          this.informationSource = TypeConvertor.castToReference(value); // Reference
1446          return value;
1447        case -1335157162: // device
1448          this.device = TypeConvertor.castToCodeableReference(value); // CodeableReference
1449          return value;
1450        case -934964668: // reason
1451          this.getReason().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
1452          return value;
1453        case 1702620169: // bodySite
1454          this.bodySite = TypeConvertor.castToCodeableReference(value); // CodeableReference
1455          return value;
1456        case 3387378: // note
1457          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
1458          return value;
1459        default: return super.setProperty(hash, name, value);
1460        }
1461
1462      }
1463
1464      @Override
1465      public Base setProperty(String name, Base value) throws FHIRException {
1466        if (name.equals("identifier")) {
1467          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1468        } else if (name.equals("basedOn")) {
1469          this.getBasedOn().add(TypeConvertor.castToReference(value));
1470        } else if (name.equals("status")) {
1471          value = new DeviceUsageStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1472          this.status = (Enumeration) value; // Enumeration<DeviceUsageStatus>
1473        } else if (name.equals("category")) {
1474          this.getCategory().add(TypeConvertor.castToCodeableConcept(value));
1475        } else if (name.equals("patient")) {
1476          this.patient = TypeConvertor.castToReference(value); // Reference
1477        } else if (name.equals("derivedFrom")) {
1478          this.getDerivedFrom().add(TypeConvertor.castToReference(value));
1479        } else if (name.equals("context")) {
1480          this.context = TypeConvertor.castToReference(value); // Reference
1481        } else if (name.equals("timing[x]")) {
1482          this.timing = TypeConvertor.castToType(value); // DataType
1483        } else if (name.equals("dateAsserted")) {
1484          this.dateAsserted = TypeConvertor.castToDateTime(value); // DateTimeType
1485        } else if (name.equals("usageStatus")) {
1486          this.usageStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1487        } else if (name.equals("usageReason")) {
1488          this.getUsageReason().add(TypeConvertor.castToCodeableConcept(value));
1489        } else if (name.equals("adherence")) {
1490          this.adherence = (DeviceUsageAdherenceComponent) value; // DeviceUsageAdherenceComponent
1491        } else if (name.equals("informationSource")) {
1492          this.informationSource = TypeConvertor.castToReference(value); // Reference
1493        } else if (name.equals("device")) {
1494          this.device = TypeConvertor.castToCodeableReference(value); // CodeableReference
1495        } else if (name.equals("reason")) {
1496          this.getReason().add(TypeConvertor.castToCodeableReference(value));
1497        } else if (name.equals("bodySite")) {
1498          this.bodySite = TypeConvertor.castToCodeableReference(value); // CodeableReference
1499        } else if (name.equals("note")) {
1500          this.getNote().add(TypeConvertor.castToAnnotation(value));
1501        } else
1502          return super.setProperty(name, value);
1503        return value;
1504      }
1505
1506  @Override
1507  public void removeChild(String name, Base value) throws FHIRException {
1508        if (name.equals("identifier")) {
1509          this.getIdentifier().remove(value);
1510        } else if (name.equals("basedOn")) {
1511          this.getBasedOn().remove(value);
1512        } else if (name.equals("status")) {
1513          value = new DeviceUsageStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1514          this.status = (Enumeration) value; // Enumeration<DeviceUsageStatus>
1515        } else if (name.equals("category")) {
1516          this.getCategory().remove(value);
1517        } else if (name.equals("patient")) {
1518          this.patient = null;
1519        } else if (name.equals("derivedFrom")) {
1520          this.getDerivedFrom().remove(value);
1521        } else if (name.equals("context")) {
1522          this.context = null;
1523        } else if (name.equals("timing[x]")) {
1524          this.timing = null;
1525        } else if (name.equals("dateAsserted")) {
1526          this.dateAsserted = null;
1527        } else if (name.equals("usageStatus")) {
1528          this.usageStatus = null;
1529        } else if (name.equals("usageReason")) {
1530          this.getUsageReason().remove(value);
1531        } else if (name.equals("adherence")) {
1532          this.adherence = (DeviceUsageAdherenceComponent) value; // DeviceUsageAdherenceComponent
1533        } else if (name.equals("informationSource")) {
1534          this.informationSource = null;
1535        } else if (name.equals("device")) {
1536          this.device = null;
1537        } else if (name.equals("reason")) {
1538          this.getReason().remove(value);
1539        } else if (name.equals("bodySite")) {
1540          this.bodySite = null;
1541        } else if (name.equals("note")) {
1542          this.getNote().remove(value);
1543        } else
1544          super.removeChild(name, value);
1545        
1546      }
1547
1548      @Override
1549      public Base makeProperty(int hash, String name) throws FHIRException {
1550        switch (hash) {
1551        case -1618432855:  return addIdentifier(); 
1552        case -332612366:  return addBasedOn(); 
1553        case -892481550:  return getStatusElement();
1554        case 50511102:  return addCategory(); 
1555        case -791418107:  return getPatient();
1556        case 1077922663:  return addDerivedFrom(); 
1557        case 951530927:  return getContext();
1558        case 164632566:  return getTiming();
1559        case -873664438:  return getTiming();
1560        case -1980855245:  return getDateAssertedElement();
1561        case 907197683:  return getUsageStatus();
1562        case 864714565:  return addUsageReason(); 
1563        case -231003683:  return getAdherence();
1564        case -2123220889:  return getInformationSource();
1565        case -1335157162:  return getDevice();
1566        case -934964668:  return addReason(); 
1567        case 1702620169:  return getBodySite();
1568        case 3387378:  return addNote(); 
1569        default: return super.makeProperty(hash, name);
1570        }
1571
1572      }
1573
1574      @Override
1575      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1576        switch (hash) {
1577        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1578        case -332612366: /*basedOn*/ return new String[] {"Reference"};
1579        case -892481550: /*status*/ return new String[] {"code"};
1580        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
1581        case -791418107: /*patient*/ return new String[] {"Reference"};
1582        case 1077922663: /*derivedFrom*/ return new String[] {"Reference"};
1583        case 951530927: /*context*/ return new String[] {"Reference"};
1584        case -873664438: /*timing*/ return new String[] {"Timing", "Period", "dateTime"};
1585        case -1980855245: /*dateAsserted*/ return new String[] {"dateTime"};
1586        case 907197683: /*usageStatus*/ return new String[] {"CodeableConcept"};
1587        case 864714565: /*usageReason*/ return new String[] {"CodeableConcept"};
1588        case -231003683: /*adherence*/ return new String[] {};
1589        case -2123220889: /*informationSource*/ return new String[] {"Reference"};
1590        case -1335157162: /*device*/ return new String[] {"CodeableReference"};
1591        case -934964668: /*reason*/ return new String[] {"CodeableReference"};
1592        case 1702620169: /*bodySite*/ return new String[] {"CodeableReference"};
1593        case 3387378: /*note*/ return new String[] {"Annotation"};
1594        default: return super.getTypesForProperty(hash, name);
1595        }
1596
1597      }
1598
1599      @Override
1600      public Base addChild(String name) throws FHIRException {
1601        if (name.equals("identifier")) {
1602          return addIdentifier();
1603        }
1604        else if (name.equals("basedOn")) {
1605          return addBasedOn();
1606        }
1607        else if (name.equals("status")) {
1608          throw new FHIRException("Cannot call addChild on a singleton property DeviceUsage.status");
1609        }
1610        else if (name.equals("category")) {
1611          return addCategory();
1612        }
1613        else if (name.equals("patient")) {
1614          this.patient = new Reference();
1615          return this.patient;
1616        }
1617        else if (name.equals("derivedFrom")) {
1618          return addDerivedFrom();
1619        }
1620        else if (name.equals("context")) {
1621          this.context = new Reference();
1622          return this.context;
1623        }
1624        else if (name.equals("timingTiming")) {
1625          this.timing = new Timing();
1626          return this.timing;
1627        }
1628        else if (name.equals("timingPeriod")) {
1629          this.timing = new Period();
1630          return this.timing;
1631        }
1632        else if (name.equals("timingDateTime")) {
1633          this.timing = new DateTimeType();
1634          return this.timing;
1635        }
1636        else if (name.equals("dateAsserted")) {
1637          throw new FHIRException("Cannot call addChild on a singleton property DeviceUsage.dateAsserted");
1638        }
1639        else if (name.equals("usageStatus")) {
1640          this.usageStatus = new CodeableConcept();
1641          return this.usageStatus;
1642        }
1643        else if (name.equals("usageReason")) {
1644          return addUsageReason();
1645        }
1646        else if (name.equals("adherence")) {
1647          this.adherence = new DeviceUsageAdherenceComponent();
1648          return this.adherence;
1649        }
1650        else if (name.equals("informationSource")) {
1651          this.informationSource = new Reference();
1652          return this.informationSource;
1653        }
1654        else if (name.equals("device")) {
1655          this.device = new CodeableReference();
1656          return this.device;
1657        }
1658        else if (name.equals("reason")) {
1659          return addReason();
1660        }
1661        else if (name.equals("bodySite")) {
1662          this.bodySite = new CodeableReference();
1663          return this.bodySite;
1664        }
1665        else if (name.equals("note")) {
1666          return addNote();
1667        }
1668        else
1669          return super.addChild(name);
1670      }
1671
1672  public String fhirType() {
1673    return "DeviceUsage";
1674
1675  }
1676
1677      public DeviceUsage copy() {
1678        DeviceUsage dst = new DeviceUsage();
1679        copyValues(dst);
1680        return dst;
1681      }
1682
1683      public void copyValues(DeviceUsage dst) {
1684        super.copyValues(dst);
1685        if (identifier != null) {
1686          dst.identifier = new ArrayList<Identifier>();
1687          for (Identifier i : identifier)
1688            dst.identifier.add(i.copy());
1689        };
1690        if (basedOn != null) {
1691          dst.basedOn = new ArrayList<Reference>();
1692          for (Reference i : basedOn)
1693            dst.basedOn.add(i.copy());
1694        };
1695        dst.status = status == null ? null : status.copy();
1696        if (category != null) {
1697          dst.category = new ArrayList<CodeableConcept>();
1698          for (CodeableConcept i : category)
1699            dst.category.add(i.copy());
1700        };
1701        dst.patient = patient == null ? null : patient.copy();
1702        if (derivedFrom != null) {
1703          dst.derivedFrom = new ArrayList<Reference>();
1704          for (Reference i : derivedFrom)
1705            dst.derivedFrom.add(i.copy());
1706        };
1707        dst.context = context == null ? null : context.copy();
1708        dst.timing = timing == null ? null : timing.copy();
1709        dst.dateAsserted = dateAsserted == null ? null : dateAsserted.copy();
1710        dst.usageStatus = usageStatus == null ? null : usageStatus.copy();
1711        if (usageReason != null) {
1712          dst.usageReason = new ArrayList<CodeableConcept>();
1713          for (CodeableConcept i : usageReason)
1714            dst.usageReason.add(i.copy());
1715        };
1716        dst.adherence = adherence == null ? null : adherence.copy();
1717        dst.informationSource = informationSource == null ? null : informationSource.copy();
1718        dst.device = device == null ? null : device.copy();
1719        if (reason != null) {
1720          dst.reason = new ArrayList<CodeableReference>();
1721          for (CodeableReference i : reason)
1722            dst.reason.add(i.copy());
1723        };
1724        dst.bodySite = bodySite == null ? null : bodySite.copy();
1725        if (note != null) {
1726          dst.note = new ArrayList<Annotation>();
1727          for (Annotation i : note)
1728            dst.note.add(i.copy());
1729        };
1730      }
1731
1732      protected DeviceUsage typedCopy() {
1733        return copy();
1734      }
1735
1736      @Override
1737      public boolean equalsDeep(Base other_) {
1738        if (!super.equalsDeep(other_))
1739          return false;
1740        if (!(other_ instanceof DeviceUsage))
1741          return false;
1742        DeviceUsage o = (DeviceUsage) other_;
1743        return compareDeep(identifier, o.identifier, true) && compareDeep(basedOn, o.basedOn, true) && compareDeep(status, o.status, true)
1744           && compareDeep(category, o.category, true) && compareDeep(patient, o.patient, true) && compareDeep(derivedFrom, o.derivedFrom, true)
1745           && compareDeep(context, o.context, true) && compareDeep(timing, o.timing, true) && compareDeep(dateAsserted, o.dateAsserted, true)
1746           && compareDeep(usageStatus, o.usageStatus, true) && compareDeep(usageReason, o.usageReason, true)
1747           && compareDeep(adherence, o.adherence, true) && compareDeep(informationSource, o.informationSource, true)
1748           && compareDeep(device, o.device, true) && compareDeep(reason, o.reason, true) && compareDeep(bodySite, o.bodySite, true)
1749           && compareDeep(note, o.note, true);
1750      }
1751
1752      @Override
1753      public boolean equalsShallow(Base other_) {
1754        if (!super.equalsShallow(other_))
1755          return false;
1756        if (!(other_ instanceof DeviceUsage))
1757          return false;
1758        DeviceUsage o = (DeviceUsage) other_;
1759        return compareValues(status, o.status, true) && compareValues(dateAsserted, o.dateAsserted, true);
1760      }
1761
1762      public boolean isEmpty() {
1763        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, basedOn, status
1764          , category, patient, derivedFrom, context, timing, dateAsserted, usageStatus, usageReason
1765          , adherence, informationSource, device, reason, bodySite, note);
1766      }
1767
1768  @Override
1769  public ResourceType getResourceType() {
1770    return ResourceType.DeviceUsage;
1771   }
1772
1773 /**
1774   * Search parameter: <b>device</b>
1775   * <p>
1776   * Description: <b>Search by device</b><br>
1777   * Type: <b>token</b><br>
1778   * Path: <b>DeviceUsage.device.concept</b><br>
1779   * </p>
1780   */
1781  @SearchParamDefinition(name="device", path="DeviceUsage.device.concept", description="Search by device", type="token" )
1782  public static final String SP_DEVICE = "device";
1783 /**
1784   * <b>Fluent Client</b> search parameter constant for <b>device</b>
1785   * <p>
1786   * Description: <b>Search by device</b><br>
1787   * Type: <b>token</b><br>
1788   * Path: <b>DeviceUsage.device.concept</b><br>
1789   * </p>
1790   */
1791  public static final ca.uhn.fhir.rest.gclient.TokenClientParam DEVICE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_DEVICE);
1792
1793 /**
1794   * Search parameter: <b>status</b>
1795   * <p>
1796   * Description: <b>The status of the device usage</b><br>
1797   * Type: <b>token</b><br>
1798   * Path: <b>DeviceUsage.status</b><br>
1799   * </p>
1800   */
1801  @SearchParamDefinition(name="status", path="DeviceUsage.status", description="The status of the device usage", type="token" )
1802  public static final String SP_STATUS = "status";
1803 /**
1804   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1805   * <p>
1806   * Description: <b>The status of the device usage</b><br>
1807   * Type: <b>token</b><br>
1808   * Path: <b>DeviceUsage.status</b><br>
1809   * </p>
1810   */
1811  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1812
1813 /**
1814   * Search parameter: <b>identifier</b>
1815   * <p>
1816   * Description: <b>Multiple Resources: 
1817
1818* [Account](account.html): Account number
1819* [AdverseEvent](adverseevent.html): Business identifier for the event
1820* [AllergyIntolerance](allergyintolerance.html): External ids for this item
1821* [Appointment](appointment.html): An Identifier of the Appointment
1822* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
1823* [Basic](basic.html): Business identifier
1824* [BodyStructure](bodystructure.html): Bodystructure identifier
1825* [CarePlan](careplan.html): External Ids for this plan
1826* [CareTeam](careteam.html): External Ids for this team
1827* [ChargeItem](chargeitem.html): Business Identifier for item
1828* [Claim](claim.html): The primary identifier of the financial resource
1829* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
1830* [ClinicalImpression](clinicalimpression.html): Business identifier
1831* [Communication](communication.html): Unique identifier
1832* [CommunicationRequest](communicationrequest.html): Unique identifier
1833* [Composition](composition.html): Version-independent identifier for the Composition
1834* [Condition](condition.html): A unique identifier of the condition record
1835* [Consent](consent.html): Identifier for this record (external references)
1836* [Contract](contract.html): The identity of the contract
1837* [Coverage](coverage.html): The primary identifier of the insured and the coverage
1838* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
1839* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
1840* [DetectedIssue](detectedissue.html): Unique id for the detected issue
1841* [DeviceRequest](devicerequest.html): Business identifier for request/order
1842* [DeviceUsage](deviceusage.html): Search by identifier
1843* [DiagnosticReport](diagnosticreport.html): An identifier for the report
1844* [DocumentReference](documentreference.html): Identifier of the attachment binary
1845* [Encounter](encounter.html): Identifier(s) by which this encounter is known
1846* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
1847* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
1848* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
1849* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
1850* [Flag](flag.html): Business identifier
1851* [Goal](goal.html): External Ids for this goal
1852* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
1853* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
1854* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
1855* [Immunization](immunization.html): Business identifier
1856* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
1857* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
1858* [Invoice](invoice.html): Business Identifier for item
1859* [List](list.html): Business identifier
1860* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
1861* [Medication](medication.html): Returns medications with this external identifier
1862* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
1863* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
1864* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
1865* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
1866* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
1867* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
1868* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
1869* [Observation](observation.html): The unique id for a particular observation
1870* [Person](person.html): A person Identifier
1871* [Procedure](procedure.html): A unique identifier for a procedure
1872* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
1873* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
1874* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
1875* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
1876* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
1877* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
1878* [Specimen](specimen.html): The unique identifier associated with the specimen
1879* [SupplyDelivery](supplydelivery.html): External identifier
1880* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
1881* [Task](task.html): Search for a task instance by its business identifier
1882* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
1883</b><br>
1884   * Type: <b>token</b><br>
1885   * Path: <b>Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier</b><br>
1886   * </p>
1887   */
1888  @SearchParamDefinition(name="identifier", path="Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier", description="Multiple Resources: \r\n\r\n* [Account](account.html): Account number\r\n* [AdverseEvent](adverseevent.html): Business identifier for the event\r\n* [AllergyIntolerance](allergyintolerance.html): External ids for this item\r\n* [Appointment](appointment.html): An Identifier of the Appointment\r\n* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response\r\n* [Basic](basic.html): Business identifier\r\n* [BodyStructure](bodystructure.html): Bodystructure identifier\r\n* [CarePlan](careplan.html): External Ids for this plan\r\n* [CareTeam](careteam.html): External Ids for this team\r\n* [ChargeItem](chargeitem.html): Business Identifier for item\r\n* [Claim](claim.html): The primary identifier of the financial resource\r\n* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse\r\n* [ClinicalImpression](clinicalimpression.html): Business identifier\r\n* [Communication](communication.html): Unique identifier\r\n* [CommunicationRequest](communicationrequest.html): Unique identifier\r\n* [Composition](composition.html): Version-independent identifier for the Composition\r\n* [Condition](condition.html): A unique identifier of the condition record\r\n* [Consent](consent.html): Identifier for this record (external references)\r\n* [Contract](contract.html): The identity of the contract\r\n* [Coverage](coverage.html): The primary identifier of the insured and the coverage\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier\r\n* [DetectedIssue](detectedissue.html): Unique id for the detected issue\r\n* [DeviceRequest](devicerequest.html): Business identifier for request/order\r\n* [DeviceUsage](deviceusage.html): Search by identifier\r\n* [DiagnosticReport](diagnosticreport.html): An identifier for the report\r\n* [DocumentReference](documentreference.html): Identifier of the attachment binary\r\n* [Encounter](encounter.html): Identifier(s) by which this encounter is known\r\n* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment\r\n* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier\r\n* [Flag](flag.html): Business identifier\r\n* [Goal](goal.html): External Ids for this goal\r\n* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response\r\n* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection\r\n* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID\r\n* [Immunization](immunization.html): Business identifier\r\n* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier\r\n* [Invoice](invoice.html): Business Identifier for item\r\n* [List](list.html): Business identifier\r\n* [MeasureReport](measurereport.html): External identifier of the measure report to be returned\r\n* [Medication](medication.html): Returns medications with this external identifier\r\n* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier\r\n* [MedicationStatement](medicationstatement.html): Return statements with this external identifier\r\n* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence\r\n* [NutritionIntake](nutritionintake.html): Return statements with this external identifier\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier\r\n* [Observation](observation.html): The unique id for a particular observation\r\n* [Person](person.html): A person Identifier\r\n* [Procedure](procedure.html): A unique identifier for a procedure\r\n* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response\r\n* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson\r\n* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration\r\n* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study\r\n* [RiskAssessment](riskassessment.html): Unique identifier for the assessment\r\n* [ServiceRequest](servicerequest.html): Identifiers assigned to this order\r\n* [Specimen](specimen.html): The unique identifier associated with the specimen\r\n* [SupplyDelivery](supplydelivery.html): External identifier\r\n* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest\r\n* [Task](task.html): Search for a task instance by its business identifier\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier\r\n", type="token" )
1889  public static final String SP_IDENTIFIER = "identifier";
1890 /**
1891   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1892   * <p>
1893   * Description: <b>Multiple Resources: 
1894
1895* [Account](account.html): Account number
1896* [AdverseEvent](adverseevent.html): Business identifier for the event
1897* [AllergyIntolerance](allergyintolerance.html): External ids for this item
1898* [Appointment](appointment.html): An Identifier of the Appointment
1899* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
1900* [Basic](basic.html): Business identifier
1901* [BodyStructure](bodystructure.html): Bodystructure identifier
1902* [CarePlan](careplan.html): External Ids for this plan
1903* [CareTeam](careteam.html): External Ids for this team
1904* [ChargeItem](chargeitem.html): Business Identifier for item
1905* [Claim](claim.html): The primary identifier of the financial resource
1906* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
1907* [ClinicalImpression](clinicalimpression.html): Business identifier
1908* [Communication](communication.html): Unique identifier
1909* [CommunicationRequest](communicationrequest.html): Unique identifier
1910* [Composition](composition.html): Version-independent identifier for the Composition
1911* [Condition](condition.html): A unique identifier of the condition record
1912* [Consent](consent.html): Identifier for this record (external references)
1913* [Contract](contract.html): The identity of the contract
1914* [Coverage](coverage.html): The primary identifier of the insured and the coverage
1915* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
1916* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
1917* [DetectedIssue](detectedissue.html): Unique id for the detected issue
1918* [DeviceRequest](devicerequest.html): Business identifier for request/order
1919* [DeviceUsage](deviceusage.html): Search by identifier
1920* [DiagnosticReport](diagnosticreport.html): An identifier for the report
1921* [DocumentReference](documentreference.html): Identifier of the attachment binary
1922* [Encounter](encounter.html): Identifier(s) by which this encounter is known
1923* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
1924* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
1925* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
1926* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
1927* [Flag](flag.html): Business identifier
1928* [Goal](goal.html): External Ids for this goal
1929* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
1930* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
1931* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
1932* [Immunization](immunization.html): Business identifier
1933* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
1934* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
1935* [Invoice](invoice.html): Business Identifier for item
1936* [List](list.html): Business identifier
1937* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
1938* [Medication](medication.html): Returns medications with this external identifier
1939* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
1940* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
1941* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
1942* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
1943* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
1944* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
1945* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
1946* [Observation](observation.html): The unique id for a particular observation
1947* [Person](person.html): A person Identifier
1948* [Procedure](procedure.html): A unique identifier for a procedure
1949* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
1950* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
1951* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
1952* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
1953* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
1954* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
1955* [Specimen](specimen.html): The unique identifier associated with the specimen
1956* [SupplyDelivery](supplydelivery.html): External identifier
1957* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
1958* [Task](task.html): Search for a task instance by its business identifier
1959* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
1960</b><br>
1961   * Type: <b>token</b><br>
1962   * Path: <b>Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier</b><br>
1963   * </p>
1964   */
1965  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1966
1967 /**
1968   * Search parameter: <b>patient</b>
1969   * <p>
1970   * Description: <b>Multiple Resources: 
1971
1972* [Account](account.html): The entity that caused the expenses
1973* [AdverseEvent](adverseevent.html): Subject impacted by event
1974* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
1975* [Appointment](appointment.html): One of the individuals of the appointment is this patient
1976* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
1977* [AuditEvent](auditevent.html): Where the activity involved patient data
1978* [Basic](basic.html): Identifies the focus of this resource
1979* [BodyStructure](bodystructure.html): Who this is about
1980* [CarePlan](careplan.html): Who the care plan is for
1981* [CareTeam](careteam.html): Who care team is for
1982* [ChargeItem](chargeitem.html): Individual service was done for/to
1983* [Claim](claim.html): Patient receiving the products or services
1984* [ClaimResponse](claimresponse.html): The subject of care
1985* [ClinicalImpression](clinicalimpression.html): Patient assessed
1986* [Communication](communication.html): Focus of message
1987* [CommunicationRequest](communicationrequest.html): Focus of message
1988* [Composition](composition.html): Who and/or what the composition is about
1989* [Condition](condition.html): Who has the condition?
1990* [Consent](consent.html): Who the consent applies to
1991* [Contract](contract.html): The identity of the subject of the contract (if a patient)
1992* [Coverage](coverage.html): Retrieve coverages for a patient
1993* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
1994* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
1995* [DetectedIssue](detectedissue.html): Associated patient
1996* [DeviceRequest](devicerequest.html): Individual the service is ordered for
1997* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
1998* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
1999* [DocumentReference](documentreference.html): Who/what is the subject of the document
2000* [Encounter](encounter.html): The patient present at the encounter
2001* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
2002* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2003* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
2004* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2005* [Flag](flag.html): The identity of a subject to list flags for
2006* [Goal](goal.html): Who this goal is intended for
2007* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
2008* [ImagingSelection](imagingselection.html): Who the study is about
2009* [ImagingStudy](imagingstudy.html): Who the study is about
2010* [Immunization](immunization.html): The patient for the vaccination record
2011* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
2012* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
2013* [Invoice](invoice.html): Recipient(s) of goods and services
2014* [List](list.html): If all resources have the same subject
2015* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
2016* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2017* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2018* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2019* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2020* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
2021* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
2022* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
2023* [Observation](observation.html): The subject that the observation is about (if patient)
2024* [Person](person.html): The Person links to this Patient
2025* [Procedure](procedure.html): Search by subject - a patient
2026* [Provenance](provenance.html): Where the activity involved patient data
2027* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
2028* [RelatedPerson](relatedperson.html): The patient this related person is related to
2029* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
2030* [ResearchSubject](researchsubject.html): Who or what is part of study
2031* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2032* [ServiceRequest](servicerequest.html): Search by subject - a patient
2033* [Specimen](specimen.html): The patient the specimen comes from
2034* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2035* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
2036* [Task](task.html): Search by patient
2037* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2038</b><br>
2039   * Type: <b>reference</b><br>
2040   * Path: <b>Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient</b><br>
2041   * </p>
2042   */
2043  @SearchParamDefinition(name="patient", path="Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [Account](account.html): The entity that caused the expenses\r\n* [AdverseEvent](adverseevent.html): Subject impacted by event\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [Appointment](appointment.html): One of the individuals of the appointment is this patient\r\n* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient\r\n* [AuditEvent](auditevent.html): Where the activity involved patient data\r\n* [Basic](basic.html): Identifies the focus of this resource\r\n* [BodyStructure](bodystructure.html): Who this is about\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ChargeItem](chargeitem.html): Individual service was done for/to\r\n* [Claim](claim.html): Patient receiving the products or services\r\n* [ClaimResponse](claimresponse.html): The subject of care\r\n* [ClinicalImpression](clinicalimpression.html): Patient assessed\r\n* [Communication](communication.html): Focus of message\r\n* [CommunicationRequest](communicationrequest.html): Focus of message\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [Contract](contract.html): The identity of the subject of the contract (if a patient)\r\n* [Coverage](coverage.html): Retrieve coverages for a patient\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient present at the encounter\r\n* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results\r\n* [ImagingSelection](imagingselection.html): Who the study is about\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for\r\n* [Invoice](invoice.html): Recipient(s) of goods and services\r\n* [List](list.html): If all resources have the same subject\r\n* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.\r\n* [MolecularSequence](molecularsequence.html): The subject that the sequence is about\r\n* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Person](person.html): The Person links to this Patient\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [Provenance](provenance.html): Where the activity involved patient data\r\n* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response\r\n* [RelatedPerson](relatedperson.html): The patient this related person is related to\r\n* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations\r\n* [ResearchSubject](researchsubject.html): Who or what is part of study\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [Specimen](specimen.html): The patient the specimen comes from\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined\r\n* [Task](task.html): Search by patient\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Patient.class } )
2044  public static final String SP_PATIENT = "patient";
2045 /**
2046   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
2047   * <p>
2048   * Description: <b>Multiple Resources: 
2049
2050* [Account](account.html): The entity that caused the expenses
2051* [AdverseEvent](adverseevent.html): Subject impacted by event
2052* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2053* [Appointment](appointment.html): One of the individuals of the appointment is this patient
2054* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
2055* [AuditEvent](auditevent.html): Where the activity involved patient data
2056* [Basic](basic.html): Identifies the focus of this resource
2057* [BodyStructure](bodystructure.html): Who this is about
2058* [CarePlan](careplan.html): Who the care plan is for
2059* [CareTeam](careteam.html): Who care team is for
2060* [ChargeItem](chargeitem.html): Individual service was done for/to
2061* [Claim](claim.html): Patient receiving the products or services
2062* [ClaimResponse](claimresponse.html): The subject of care
2063* [ClinicalImpression](clinicalimpression.html): Patient assessed
2064* [Communication](communication.html): Focus of message
2065* [CommunicationRequest](communicationrequest.html): Focus of message
2066* [Composition](composition.html): Who and/or what the composition is about
2067* [Condition](condition.html): Who has the condition?
2068* [Consent](consent.html): Who the consent applies to
2069* [Contract](contract.html): The identity of the subject of the contract (if a patient)
2070* [Coverage](coverage.html): Retrieve coverages for a patient
2071* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
2072* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
2073* [DetectedIssue](detectedissue.html): Associated patient
2074* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2075* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
2076* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2077* [DocumentReference](documentreference.html): Who/what is the subject of the document
2078* [Encounter](encounter.html): The patient present at the encounter
2079* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
2080* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2081* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
2082* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2083* [Flag](flag.html): The identity of a subject to list flags for
2084* [Goal](goal.html): Who this goal is intended for
2085* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
2086* [ImagingSelection](imagingselection.html): Who the study is about
2087* [ImagingStudy](imagingstudy.html): Who the study is about
2088* [Immunization](immunization.html): The patient for the vaccination record
2089* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
2090* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
2091* [Invoice](invoice.html): Recipient(s) of goods and services
2092* [List](list.html): If all resources have the same subject
2093* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
2094* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2095* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2096* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2097* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2098* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
2099* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
2100* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
2101* [Observation](observation.html): The subject that the observation is about (if patient)
2102* [Person](person.html): The Person links to this Patient
2103* [Procedure](procedure.html): Search by subject - a patient
2104* [Provenance](provenance.html): Where the activity involved patient data
2105* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
2106* [RelatedPerson](relatedperson.html): The patient this related person is related to
2107* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
2108* [ResearchSubject](researchsubject.html): Who or what is part of study
2109* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2110* [ServiceRequest](servicerequest.html): Search by subject - a patient
2111* [Specimen](specimen.html): The patient the specimen comes from
2112* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2113* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
2114* [Task](task.html): Search by patient
2115* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2116</b><br>
2117   * Type: <b>reference</b><br>
2118   * Path: <b>Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient</b><br>
2119   * </p>
2120   */
2121  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
2122
2123/**
2124   * Constant for fluent queries to be used to add include statements. Specifies
2125   * the path value of "<b>DeviceUsage:patient</b>".
2126   */
2127  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("DeviceUsage:patient").toLocked();
2128
2129
2130}
2131