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 * An action that is or was performed on or for a patient, practitioner, device, organization, or location. For example, this can be a physical intervention on a patient like an operation, or less invasive like long term services, counseling, or hypnotherapy.  This can be a quality or safety inspection for a location, organization, or device.  This can be an accreditation procedure on a practitioner for licensing.
052 */
053@ResourceDef(name="Procedure", profile="http://hl7.org/fhir/StructureDefinition/Procedure")
054public class Procedure extends DomainResource {
055
056    @Block()
057    public static class ProcedurePerformerComponent extends BackboneElement implements IBaseBackboneElement {
058        /**
059         * Distinguishes the type of involvement of the performer in the procedure. For example, surgeon, anaesthetist, endoscopist.
060         */
061        @Child(name = "function", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
062        @Description(shortDefinition="Type of performance", formalDefinition="Distinguishes the type of involvement of the performer in the procedure. For example, surgeon, anaesthetist, endoscopist." )
063        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/performer-role")
064        protected CodeableConcept function;
065
066        /**
067         * Indicates who or what performed the procedure.
068         */
069        @Child(name = "actor", type = {Practitioner.class, PractitionerRole.class, Organization.class, Patient.class, RelatedPerson.class, Device.class, CareTeam.class, HealthcareService.class}, order=2, min=1, max=1, modifier=false, summary=true)
070        @Description(shortDefinition="Who performed the procedure", formalDefinition="Indicates who or what performed the procedure." )
071        protected Reference actor;
072
073        /**
074         * The Organization the Patient, RelatedPerson, Device, CareTeam, and HealthcareService was acting on behalf of.
075         */
076        @Child(name = "onBehalfOf", type = {Organization.class}, order=3, min=0, max=1, modifier=false, summary=false)
077        @Description(shortDefinition="Organization the device or practitioner was acting for", formalDefinition="The Organization the Patient, RelatedPerson, Device, CareTeam, and HealthcareService was acting on behalf of." )
078        protected Reference onBehalfOf;
079
080        /**
081         * Time period during which the performer performed the procedure.
082         */
083        @Child(name = "period", type = {Period.class}, order=4, min=0, max=1, modifier=false, summary=false)
084        @Description(shortDefinition="When the performer performed the procedure", formalDefinition="Time period during which the performer performed the procedure." )
085        protected Period period;
086
087        private static final long serialVersionUID = -1329650986L;
088
089    /**
090     * Constructor
091     */
092      public ProcedurePerformerComponent() {
093        super();
094      }
095
096    /**
097     * Constructor
098     */
099      public ProcedurePerformerComponent(Reference actor) {
100        super();
101        this.setActor(actor);
102      }
103
104        /**
105         * @return {@link #function} (Distinguishes the type of involvement of the performer in the procedure. For example, surgeon, anaesthetist, endoscopist.)
106         */
107        public CodeableConcept getFunction() { 
108          if (this.function == null)
109            if (Configuration.errorOnAutoCreate())
110              throw new Error("Attempt to auto-create ProcedurePerformerComponent.function");
111            else if (Configuration.doAutoCreate())
112              this.function = new CodeableConcept(); // cc
113          return this.function;
114        }
115
116        public boolean hasFunction() { 
117          return this.function != null && !this.function.isEmpty();
118        }
119
120        /**
121         * @param value {@link #function} (Distinguishes the type of involvement of the performer in the procedure. For example, surgeon, anaesthetist, endoscopist.)
122         */
123        public ProcedurePerformerComponent setFunction(CodeableConcept value) { 
124          this.function = value;
125          return this;
126        }
127
128        /**
129         * @return {@link #actor} (Indicates who or what performed the procedure.)
130         */
131        public Reference getActor() { 
132          if (this.actor == null)
133            if (Configuration.errorOnAutoCreate())
134              throw new Error("Attempt to auto-create ProcedurePerformerComponent.actor");
135            else if (Configuration.doAutoCreate())
136              this.actor = new Reference(); // cc
137          return this.actor;
138        }
139
140        public boolean hasActor() { 
141          return this.actor != null && !this.actor.isEmpty();
142        }
143
144        /**
145         * @param value {@link #actor} (Indicates who or what performed the procedure.)
146         */
147        public ProcedurePerformerComponent setActor(Reference value) { 
148          this.actor = value;
149          return this;
150        }
151
152        /**
153         * @return {@link #onBehalfOf} (The Organization the Patient, RelatedPerson, Device, CareTeam, and HealthcareService was acting on behalf of.)
154         */
155        public Reference getOnBehalfOf() { 
156          if (this.onBehalfOf == null)
157            if (Configuration.errorOnAutoCreate())
158              throw new Error("Attempt to auto-create ProcedurePerformerComponent.onBehalfOf");
159            else if (Configuration.doAutoCreate())
160              this.onBehalfOf = new Reference(); // cc
161          return this.onBehalfOf;
162        }
163
164        public boolean hasOnBehalfOf() { 
165          return this.onBehalfOf != null && !this.onBehalfOf.isEmpty();
166        }
167
168        /**
169         * @param value {@link #onBehalfOf} (The Organization the Patient, RelatedPerson, Device, CareTeam, and HealthcareService was acting on behalf of.)
170         */
171        public ProcedurePerformerComponent setOnBehalfOf(Reference value) { 
172          this.onBehalfOf = value;
173          return this;
174        }
175
176        /**
177         * @return {@link #period} (Time period during which the performer performed the procedure.)
178         */
179        public Period getPeriod() { 
180          if (this.period == null)
181            if (Configuration.errorOnAutoCreate())
182              throw new Error("Attempt to auto-create ProcedurePerformerComponent.period");
183            else if (Configuration.doAutoCreate())
184              this.period = new Period(); // cc
185          return this.period;
186        }
187
188        public boolean hasPeriod() { 
189          return this.period != null && !this.period.isEmpty();
190        }
191
192        /**
193         * @param value {@link #period} (Time period during which the performer performed the procedure.)
194         */
195        public ProcedurePerformerComponent setPeriod(Period value) { 
196          this.period = value;
197          return this;
198        }
199
200        protected void listChildren(List<Property> children) {
201          super.listChildren(children);
202          children.add(new Property("function", "CodeableConcept", "Distinguishes the type of involvement of the performer in the procedure. For example, surgeon, anaesthetist, endoscopist.", 0, 1, function));
203          children.add(new Property("actor", "Reference(Practitioner|PractitionerRole|Organization|Patient|RelatedPerson|Device|CareTeam|HealthcareService)", "Indicates who or what performed the procedure.", 0, 1, actor));
204          children.add(new Property("onBehalfOf", "Reference(Organization)", "The Organization the Patient, RelatedPerson, Device, CareTeam, and HealthcareService was acting on behalf of.", 0, 1, onBehalfOf));
205          children.add(new Property("period", "Period", "Time period during which the performer performed the procedure.", 0, 1, period));
206        }
207
208        @Override
209        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
210          switch (_hash) {
211          case 1380938712: /*function*/  return new Property("function", "CodeableConcept", "Distinguishes the type of involvement of the performer in the procedure. For example, surgeon, anaesthetist, endoscopist.", 0, 1, function);
212          case 92645877: /*actor*/  return new Property("actor", "Reference(Practitioner|PractitionerRole|Organization|Patient|RelatedPerson|Device|CareTeam|HealthcareService)", "Indicates who or what performed the procedure.", 0, 1, actor);
213          case -14402964: /*onBehalfOf*/  return new Property("onBehalfOf", "Reference(Organization)", "The Organization the Patient, RelatedPerson, Device, CareTeam, and HealthcareService was acting on behalf of.", 0, 1, onBehalfOf);
214          case -991726143: /*period*/  return new Property("period", "Period", "Time period during which the performer performed the procedure.", 0, 1, period);
215          default: return super.getNamedProperty(_hash, _name, _checkValid);
216          }
217
218        }
219
220      @Override
221      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
222        switch (hash) {
223        case 1380938712: /*function*/ return this.function == null ? new Base[0] : new Base[] {this.function}; // CodeableConcept
224        case 92645877: /*actor*/ return this.actor == null ? new Base[0] : new Base[] {this.actor}; // Reference
225        case -14402964: /*onBehalfOf*/ return this.onBehalfOf == null ? new Base[0] : new Base[] {this.onBehalfOf}; // Reference
226        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
227        default: return super.getProperty(hash, name, checkValid);
228        }
229
230      }
231
232      @Override
233      public Base setProperty(int hash, String name, Base value) throws FHIRException {
234        switch (hash) {
235        case 1380938712: // function
236          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
237          return value;
238        case 92645877: // actor
239          this.actor = TypeConvertor.castToReference(value); // Reference
240          return value;
241        case -14402964: // onBehalfOf
242          this.onBehalfOf = TypeConvertor.castToReference(value); // Reference
243          return value;
244        case -991726143: // period
245          this.period = TypeConvertor.castToPeriod(value); // Period
246          return value;
247        default: return super.setProperty(hash, name, value);
248        }
249
250      }
251
252      @Override
253      public Base setProperty(String name, Base value) throws FHIRException {
254        if (name.equals("function")) {
255          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
256        } else if (name.equals("actor")) {
257          this.actor = TypeConvertor.castToReference(value); // Reference
258        } else if (name.equals("onBehalfOf")) {
259          this.onBehalfOf = TypeConvertor.castToReference(value); // Reference
260        } else if (name.equals("period")) {
261          this.period = TypeConvertor.castToPeriod(value); // Period
262        } else
263          return super.setProperty(name, value);
264        return value;
265      }
266
267      @Override
268      public Base makeProperty(int hash, String name) throws FHIRException {
269        switch (hash) {
270        case 1380938712:  return getFunction();
271        case 92645877:  return getActor();
272        case -14402964:  return getOnBehalfOf();
273        case -991726143:  return getPeriod();
274        default: return super.makeProperty(hash, name);
275        }
276
277      }
278
279      @Override
280      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
281        switch (hash) {
282        case 1380938712: /*function*/ return new String[] {"CodeableConcept"};
283        case 92645877: /*actor*/ return new String[] {"Reference"};
284        case -14402964: /*onBehalfOf*/ return new String[] {"Reference"};
285        case -991726143: /*period*/ return new String[] {"Period"};
286        default: return super.getTypesForProperty(hash, name);
287        }
288
289      }
290
291      @Override
292      public Base addChild(String name) throws FHIRException {
293        if (name.equals("function")) {
294          this.function = new CodeableConcept();
295          return this.function;
296        }
297        else if (name.equals("actor")) {
298          this.actor = new Reference();
299          return this.actor;
300        }
301        else if (name.equals("onBehalfOf")) {
302          this.onBehalfOf = new Reference();
303          return this.onBehalfOf;
304        }
305        else if (name.equals("period")) {
306          this.period = new Period();
307          return this.period;
308        }
309        else
310          return super.addChild(name);
311      }
312
313      public ProcedurePerformerComponent copy() {
314        ProcedurePerformerComponent dst = new ProcedurePerformerComponent();
315        copyValues(dst);
316        return dst;
317      }
318
319      public void copyValues(ProcedurePerformerComponent dst) {
320        super.copyValues(dst);
321        dst.function = function == null ? null : function.copy();
322        dst.actor = actor == null ? null : actor.copy();
323        dst.onBehalfOf = onBehalfOf == null ? null : onBehalfOf.copy();
324        dst.period = period == null ? null : period.copy();
325      }
326
327      @Override
328      public boolean equalsDeep(Base other_) {
329        if (!super.equalsDeep(other_))
330          return false;
331        if (!(other_ instanceof ProcedurePerformerComponent))
332          return false;
333        ProcedurePerformerComponent o = (ProcedurePerformerComponent) other_;
334        return compareDeep(function, o.function, true) && compareDeep(actor, o.actor, true) && compareDeep(onBehalfOf, o.onBehalfOf, true)
335           && compareDeep(period, o.period, true);
336      }
337
338      @Override
339      public boolean equalsShallow(Base other_) {
340        if (!super.equalsShallow(other_))
341          return false;
342        if (!(other_ instanceof ProcedurePerformerComponent))
343          return false;
344        ProcedurePerformerComponent o = (ProcedurePerformerComponent) other_;
345        return true;
346      }
347
348      public boolean isEmpty() {
349        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(function, actor, onBehalfOf
350          , period);
351      }
352
353  public String fhirType() {
354    return "Procedure.performer";
355
356  }
357
358  }
359
360    @Block()
361    public static class ProcedureFocalDeviceComponent extends BackboneElement implements IBaseBackboneElement {
362        /**
363         * The kind of change that happened to the device during the procedure.
364         */
365        @Child(name = "action", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
366        @Description(shortDefinition="Kind of change to device", formalDefinition="The kind of change that happened to the device during the procedure." )
367        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/device-action")
368        protected CodeableConcept action;
369
370        /**
371         * The device that was manipulated (changed) during the procedure.
372         */
373        @Child(name = "manipulated", type = {Device.class}, order=2, min=1, max=1, modifier=false, summary=false)
374        @Description(shortDefinition="Device that was changed", formalDefinition="The device that was manipulated (changed) during the procedure." )
375        protected Reference manipulated;
376
377        private static final long serialVersionUID = -217582010L;
378
379    /**
380     * Constructor
381     */
382      public ProcedureFocalDeviceComponent() {
383        super();
384      }
385
386    /**
387     * Constructor
388     */
389      public ProcedureFocalDeviceComponent(Reference manipulated) {
390        super();
391        this.setManipulated(manipulated);
392      }
393
394        /**
395         * @return {@link #action} (The kind of change that happened to the device during the procedure.)
396         */
397        public CodeableConcept getAction() { 
398          if (this.action == null)
399            if (Configuration.errorOnAutoCreate())
400              throw new Error("Attempt to auto-create ProcedureFocalDeviceComponent.action");
401            else if (Configuration.doAutoCreate())
402              this.action = new CodeableConcept(); // cc
403          return this.action;
404        }
405
406        public boolean hasAction() { 
407          return this.action != null && !this.action.isEmpty();
408        }
409
410        /**
411         * @param value {@link #action} (The kind of change that happened to the device during the procedure.)
412         */
413        public ProcedureFocalDeviceComponent setAction(CodeableConcept value) { 
414          this.action = value;
415          return this;
416        }
417
418        /**
419         * @return {@link #manipulated} (The device that was manipulated (changed) during the procedure.)
420         */
421        public Reference getManipulated() { 
422          if (this.manipulated == null)
423            if (Configuration.errorOnAutoCreate())
424              throw new Error("Attempt to auto-create ProcedureFocalDeviceComponent.manipulated");
425            else if (Configuration.doAutoCreate())
426              this.manipulated = new Reference(); // cc
427          return this.manipulated;
428        }
429
430        public boolean hasManipulated() { 
431          return this.manipulated != null && !this.manipulated.isEmpty();
432        }
433
434        /**
435         * @param value {@link #manipulated} (The device that was manipulated (changed) during the procedure.)
436         */
437        public ProcedureFocalDeviceComponent setManipulated(Reference value) { 
438          this.manipulated = value;
439          return this;
440        }
441
442        protected void listChildren(List<Property> children) {
443          super.listChildren(children);
444          children.add(new Property("action", "CodeableConcept", "The kind of change that happened to the device during the procedure.", 0, 1, action));
445          children.add(new Property("manipulated", "Reference(Device)", "The device that was manipulated (changed) during the procedure.", 0, 1, manipulated));
446        }
447
448        @Override
449        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
450          switch (_hash) {
451          case -1422950858: /*action*/  return new Property("action", "CodeableConcept", "The kind of change that happened to the device during the procedure.", 0, 1, action);
452          case 947372650: /*manipulated*/  return new Property("manipulated", "Reference(Device)", "The device that was manipulated (changed) during the procedure.", 0, 1, manipulated);
453          default: return super.getNamedProperty(_hash, _name, _checkValid);
454          }
455
456        }
457
458      @Override
459      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
460        switch (hash) {
461        case -1422950858: /*action*/ return this.action == null ? new Base[0] : new Base[] {this.action}; // CodeableConcept
462        case 947372650: /*manipulated*/ return this.manipulated == null ? new Base[0] : new Base[] {this.manipulated}; // Reference
463        default: return super.getProperty(hash, name, checkValid);
464        }
465
466      }
467
468      @Override
469      public Base setProperty(int hash, String name, Base value) throws FHIRException {
470        switch (hash) {
471        case -1422950858: // action
472          this.action = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
473          return value;
474        case 947372650: // manipulated
475          this.manipulated = TypeConvertor.castToReference(value); // Reference
476          return value;
477        default: return super.setProperty(hash, name, value);
478        }
479
480      }
481
482      @Override
483      public Base setProperty(String name, Base value) throws FHIRException {
484        if (name.equals("action")) {
485          this.action = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
486        } else if (name.equals("manipulated")) {
487          this.manipulated = TypeConvertor.castToReference(value); // Reference
488        } else
489          return super.setProperty(name, value);
490        return value;
491      }
492
493      @Override
494      public Base makeProperty(int hash, String name) throws FHIRException {
495        switch (hash) {
496        case -1422950858:  return getAction();
497        case 947372650:  return getManipulated();
498        default: return super.makeProperty(hash, name);
499        }
500
501      }
502
503      @Override
504      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
505        switch (hash) {
506        case -1422950858: /*action*/ return new String[] {"CodeableConcept"};
507        case 947372650: /*manipulated*/ return new String[] {"Reference"};
508        default: return super.getTypesForProperty(hash, name);
509        }
510
511      }
512
513      @Override
514      public Base addChild(String name) throws FHIRException {
515        if (name.equals("action")) {
516          this.action = new CodeableConcept();
517          return this.action;
518        }
519        else if (name.equals("manipulated")) {
520          this.manipulated = new Reference();
521          return this.manipulated;
522        }
523        else
524          return super.addChild(name);
525      }
526
527      public ProcedureFocalDeviceComponent copy() {
528        ProcedureFocalDeviceComponent dst = new ProcedureFocalDeviceComponent();
529        copyValues(dst);
530        return dst;
531      }
532
533      public void copyValues(ProcedureFocalDeviceComponent dst) {
534        super.copyValues(dst);
535        dst.action = action == null ? null : action.copy();
536        dst.manipulated = manipulated == null ? null : manipulated.copy();
537      }
538
539      @Override
540      public boolean equalsDeep(Base other_) {
541        if (!super.equalsDeep(other_))
542          return false;
543        if (!(other_ instanceof ProcedureFocalDeviceComponent))
544          return false;
545        ProcedureFocalDeviceComponent o = (ProcedureFocalDeviceComponent) other_;
546        return compareDeep(action, o.action, true) && compareDeep(manipulated, o.manipulated, true);
547      }
548
549      @Override
550      public boolean equalsShallow(Base other_) {
551        if (!super.equalsShallow(other_))
552          return false;
553        if (!(other_ instanceof ProcedureFocalDeviceComponent))
554          return false;
555        ProcedureFocalDeviceComponent o = (ProcedureFocalDeviceComponent) other_;
556        return true;
557      }
558
559      public boolean isEmpty() {
560        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(action, manipulated);
561      }
562
563  public String fhirType() {
564    return "Procedure.focalDevice";
565
566  }
567
568  }
569
570    /**
571     * Business identifiers assigned to this procedure by the performer or other systems which remain constant as the resource is updated and is propagated from server to server.
572     */
573    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
574    @Description(shortDefinition="External Identifiers for this procedure", formalDefinition="Business identifiers assigned to this procedure by the performer or other systems which remain constant as the resource is updated and is propagated from server to server." )
575    protected List<Identifier> identifier;
576
577    /**
578     * The URL pointing to a FHIR-defined protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure.
579     */
580    @Child(name = "instantiatesCanonical", type = {CanonicalType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
581    @Description(shortDefinition="Instantiates FHIR protocol or definition", formalDefinition="The URL pointing to a FHIR-defined protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure." )
582    protected List<CanonicalType> instantiatesCanonical;
583
584    /**
585     * The URL pointing to an externally maintained protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure.
586     */
587    @Child(name = "instantiatesUri", type = {UriType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
588    @Description(shortDefinition="Instantiates external protocol or definition", formalDefinition="The URL pointing to an externally maintained protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure." )
589    protected List<UriType> instantiatesUri;
590
591    /**
592     * A reference to a resource that contains details of the request for this procedure.
593     */
594    @Child(name = "basedOn", type = {CarePlan.class, ServiceRequest.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
595    @Description(shortDefinition="A request for this procedure", formalDefinition="A reference to a resource that contains details of the request for this procedure." )
596    protected List<Reference> basedOn;
597
598    /**
599     * A larger event of which this particular procedure is a component or step.
600     */
601    @Child(name = "partOf", type = {Procedure.class, Observation.class, MedicationAdministration.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
602    @Description(shortDefinition="Part of referenced event", formalDefinition="A larger event of which this particular procedure is a component or step." )
603    protected List<Reference> partOf;
604
605    /**
606     * A code specifying the state of the procedure. Generally, this will be the in-progress or completed state.
607     */
608    @Child(name = "status", type = {CodeType.class}, order=5, min=1, max=1, modifier=true, summary=true)
609    @Description(shortDefinition="preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown", formalDefinition="A code specifying the state of the procedure. Generally, this will be the in-progress or completed state." )
610    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/event-status")
611    protected Enumeration<EventStatus> status;
612
613    /**
614     * Captures the reason for the current state of the procedure.
615     */
616    @Child(name = "statusReason", type = {CodeableConcept.class}, order=6, min=0, max=1, modifier=false, summary=true)
617    @Description(shortDefinition="Reason for current status", formalDefinition="Captures the reason for the current state of the procedure." )
618    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/procedure-not-performed-reason")
619    protected CodeableConcept statusReason;
620
621    /**
622     * A code that classifies the procedure for searching, sorting and display purposes (e.g. "Surgical Procedure").
623     */
624    @Child(name = "category", type = {CodeableConcept.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
625    @Description(shortDefinition="Classification of the procedure", formalDefinition="A code that classifies the procedure for searching, sorting and display purposes (e.g. \"Surgical Procedure\")." )
626    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/procedure-category")
627    protected List<CodeableConcept> category;
628
629    /**
630     * The specific procedure that is performed. Use text if the exact nature of the procedure cannot be coded (e.g. "Laparoscopic Appendectomy").
631     */
632    @Child(name = "code", type = {CodeableConcept.class}, order=8, min=0, max=1, modifier=false, summary=true)
633    @Description(shortDefinition="Identification of the procedure", formalDefinition="The specific procedure that is performed. Use text if the exact nature of the procedure cannot be coded (e.g. \"Laparoscopic Appendectomy\")." )
634    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/procedure-code")
635    protected CodeableConcept code;
636
637    /**
638     * On whom or on what the procedure was performed. This is usually an individual human, but can also be performed on animals, groups of humans or animals, organizations or practitioners (for licensing), locations or devices (for safety inspections or regulatory authorizations).  If the actual focus of the procedure is different from the subject, the focus element specifies the actual focus of the procedure.
639     */
640    @Child(name = "subject", type = {Patient.class, Group.class, Device.class, Practitioner.class, Organization.class, Location.class}, order=9, min=1, max=1, modifier=false, summary=true)
641    @Description(shortDefinition="Individual or entity the procedure was performed on", formalDefinition="On whom or on what the procedure was performed. This is usually an individual human, but can also be performed on animals, groups of humans or animals, organizations or practitioners (for licensing), locations or devices (for safety inspections or regulatory authorizations).  If the actual focus of the procedure is different from the subject, the focus element specifies the actual focus of the procedure." )
642    protected Reference subject;
643
644    /**
645     * Who is the target of the procedure when it is not the subject of record only.  If focus is not present, then subject is the focus.  If focus is present and the subject is one of the targets of the procedure, include subject as a focus as well. If focus is present and the subject is not included in focus, it implies that the procedure was only targeted on the focus. For example, when a caregiver is given education for a patient, the caregiver would be the focus and the procedure record is associated with the subject (e.g. patient).  For example, use focus when recording the target of the education, training, or counseling is the parent or relative of a patient.
646     */
647    @Child(name = "focus", type = {Patient.class, Group.class, RelatedPerson.class, Practitioner.class, Organization.class, CareTeam.class, PractitionerRole.class, Specimen.class}, order=10, min=0, max=1, modifier=false, summary=true)
648    @Description(shortDefinition="Who is the target of the procedure when it is not the subject of record only", formalDefinition="Who is the target of the procedure when it is not the subject of record only.  If focus is not present, then subject is the focus.  If focus is present and the subject is one of the targets of the procedure, include subject as a focus as well. If focus is present and the subject is not included in focus, it implies that the procedure was only targeted on the focus. For example, when a caregiver is given education for a patient, the caregiver would be the focus and the procedure record is associated with the subject (e.g. patient).  For example, use focus when recording the target of the education, training, or counseling is the parent or relative of a patient." )
649    protected Reference focus;
650
651    /**
652     * The Encounter during which this Procedure was created or performed or to which the creation of this record is tightly associated.
653     */
654    @Child(name = "encounter", type = {Encounter.class}, order=11, min=0, max=1, modifier=false, summary=true)
655    @Description(shortDefinition="The Encounter during which this Procedure was created", formalDefinition="The Encounter during which this Procedure was created or performed or to which the creation of this record is tightly associated." )
656    protected Reference encounter;
657
658    /**
659     * Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.
660     */
661    @Child(name = "occurrence", type = {DateTimeType.class, Period.class, StringType.class, Age.class, Range.class, Timing.class}, order=12, min=0, max=1, modifier=false, summary=true)
662    @Description(shortDefinition="When the procedure occurred or is occurring", formalDefinition="Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured." )
663    protected DataType occurrence;
664
665    /**
666     * The date the occurrence of the procedure was first captured in the record regardless of Procedure.status (potentially after the occurrence of the event).
667     */
668    @Child(name = "recorded", type = {DateTimeType.class}, order=13, min=0, max=1, modifier=false, summary=true)
669    @Description(shortDefinition="When the procedure was first captured in the subject's record", formalDefinition="The date the occurrence of the procedure was first captured in the record regardless of Procedure.status (potentially after the occurrence of the event)." )
670    protected DateTimeType recorded;
671
672    /**
673     * Individual who recorded the record and takes responsibility for its content.
674     */
675    @Child(name = "recorder", type = {Patient.class, RelatedPerson.class, Practitioner.class, PractitionerRole.class}, order=14, min=0, max=1, modifier=false, summary=true)
676    @Description(shortDefinition="Who recorded the procedure", formalDefinition="Individual who recorded the record and takes responsibility for its content." )
677    protected Reference recorder;
678
679    /**
680     * Indicates if this record was captured as a secondary 'reported' record rather than as an original primary source-of-truth record.  It may also indicate the source of the report.
681     */
682    @Child(name = "reported", type = {BooleanType.class, Patient.class, RelatedPerson.class, Practitioner.class, PractitionerRole.class, Organization.class}, order=15, min=0, max=1, modifier=false, summary=true)
683    @Description(shortDefinition="Reported rather than primary record", formalDefinition="Indicates if this record was captured as a secondary 'reported' record rather than as an original primary source-of-truth record.  It may also indicate the source of the report." )
684    protected DataType reported;
685
686    /**
687     * Indicates who or what performed the procedure and how they were involved.
688     */
689    @Child(name = "performer", type = {}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
690    @Description(shortDefinition="Who performed the procedure and what they did", formalDefinition="Indicates who or what performed the procedure and how they were involved." )
691    protected List<ProcedurePerformerComponent> performer;
692
693    /**
694     * The location where the procedure actually happened.  E.g. a newborn at home, a tracheostomy at a restaurant.
695     */
696    @Child(name = "location", type = {Location.class}, order=17, min=0, max=1, modifier=false, summary=true)
697    @Description(shortDefinition="Where the procedure happened", formalDefinition="The location where the procedure actually happened.  E.g. a newborn at home, a tracheostomy at a restaurant." )
698    protected Reference location;
699
700    /**
701     * The coded reason or reference why the procedure was performed. This may be a coded entity of some type, be present as text, or be a reference to one of several resources that justify the procedure.
702     */
703    @Child(name = "reason", type = {CodeableReference.class}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
704    @Description(shortDefinition="The justification that the procedure was performed", formalDefinition="The coded reason or reference why the procedure was performed. This may be a coded entity of some type, be present as text, or be a reference to one of several resources that justify the procedure." )
705    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/procedure-reason")
706    protected List<CodeableReference> reason;
707
708    /**
709     * Detailed and structured anatomical location information. Multiple locations are allowed - e.g. multiple punch biopsies of a lesion.
710     */
711    @Child(name = "bodySite", type = {CodeableConcept.class}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
712    @Description(shortDefinition="Target body sites", formalDefinition="Detailed and structured anatomical location information. Multiple locations are allowed - e.g. multiple punch biopsies of a lesion." )
713    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/body-site")
714    protected List<CodeableConcept> bodySite;
715
716    /**
717     * The outcome of the procedure - did it resolve the reasons for the procedure being performed?
718     */
719    @Child(name = "outcome", type = {CodeableConcept.class}, order=20, min=0, max=1, modifier=false, summary=true)
720    @Description(shortDefinition="The result of procedure", formalDefinition="The outcome of the procedure - did it resolve the reasons for the procedure being performed?" )
721    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/procedure-outcome")
722    protected CodeableConcept outcome;
723
724    /**
725     * This could be a histology result, pathology report, surgical report, etc.
726     */
727    @Child(name = "report", type = {DiagnosticReport.class, DocumentReference.class, Composition.class}, order=21, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
728    @Description(shortDefinition="Any report resulting from the procedure", formalDefinition="This could be a histology result, pathology report, surgical report, etc." )
729    protected List<Reference> report;
730
731    /**
732     * Any complications that occurred during the procedure, or in the immediate post-performance period. These are generally tracked separately from the notes, which will typically describe the procedure itself rather than any 'post procedure' issues.
733     */
734    @Child(name = "complication", type = {CodeableReference.class}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
735    @Description(shortDefinition="Complication following the procedure", formalDefinition="Any complications that occurred during the procedure, or in the immediate post-performance period. These are generally tracked separately from the notes, which will typically describe the procedure itself rather than any 'post procedure' issues." )
736    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-code")
737    protected List<CodeableReference> complication;
738
739    /**
740     * If the procedure required specific follow up - e.g. removal of sutures. The follow up may be represented as a simple note or could potentially be more complex, in which case the CarePlan resource can be used.
741     */
742    @Child(name = "followUp", type = {CodeableConcept.class}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
743    @Description(shortDefinition="Instructions for follow up", formalDefinition="If the procedure required specific follow up - e.g. removal of sutures. The follow up may be represented as a simple note or could potentially be more complex, in which case the CarePlan resource can be used." )
744    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/procedure-followup")
745    protected List<CodeableConcept> followUp;
746
747    /**
748     * Any other notes and comments about the procedure.
749     */
750    @Child(name = "note", type = {Annotation.class}, order=24, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
751    @Description(shortDefinition="Additional information about the procedure", formalDefinition="Any other notes and comments about the procedure." )
752    protected List<Annotation> note;
753
754    /**
755     * A device that is implanted, removed or otherwise manipulated (calibration, battery replacement, fitting a prosthesis, attaching a wound-vac, etc.) as a focal portion of the Procedure.
756     */
757    @Child(name = "focalDevice", type = {}, order=25, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
758    @Description(shortDefinition="Manipulated, implanted, or removed device", formalDefinition="A device that is implanted, removed or otherwise manipulated (calibration, battery replacement, fitting a prosthesis, attaching a wound-vac, etc.) as a focal portion of the Procedure." )
759    protected List<ProcedureFocalDeviceComponent> focalDevice;
760
761    /**
762     * Identifies medications, devices and any other substance used as part of the procedure.
763     */
764    @Child(name = "used", type = {CodeableReference.class}, order=26, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
765    @Description(shortDefinition="Items used during procedure", formalDefinition="Identifies medications, devices and any other substance used as part of the procedure." )
766    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/device-type")
767    protected List<CodeableReference> used;
768
769    /**
770     * Other resources from the patient record that may be relevant to the procedure.  The information from these resources was either used to create the instance or is provided to help with its interpretation. This extension should not be used if more specific inline elements or extensions are available.
771     */
772    @Child(name = "supportingInfo", type = {Reference.class}, order=27, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
773    @Description(shortDefinition="Extra information relevant to the procedure", formalDefinition="Other resources from the patient record that may be relevant to the procedure.  The information from these resources was either used to create the instance or is provided to help with its interpretation. This extension should not be used if more specific inline elements or extensions are available." )
774    protected List<Reference> supportingInfo;
775
776    private static final long serialVersionUID = 372127918L;
777
778  /**
779   * Constructor
780   */
781    public Procedure() {
782      super();
783    }
784
785  /**
786   * Constructor
787   */
788    public Procedure(EventStatus status, Reference subject) {
789      super();
790      this.setStatus(status);
791      this.setSubject(subject);
792    }
793
794    /**
795     * @return {@link #identifier} (Business identifiers assigned to this procedure by the performer or other systems which remain constant as the resource is updated and is propagated from server to server.)
796     */
797    public List<Identifier> getIdentifier() { 
798      if (this.identifier == null)
799        this.identifier = new ArrayList<Identifier>();
800      return this.identifier;
801    }
802
803    /**
804     * @return Returns a reference to <code>this</code> for easy method chaining
805     */
806    public Procedure setIdentifier(List<Identifier> theIdentifier) { 
807      this.identifier = theIdentifier;
808      return this;
809    }
810
811    public boolean hasIdentifier() { 
812      if (this.identifier == null)
813        return false;
814      for (Identifier item : this.identifier)
815        if (!item.isEmpty())
816          return true;
817      return false;
818    }
819
820    public Identifier addIdentifier() { //3
821      Identifier t = new Identifier();
822      if (this.identifier == null)
823        this.identifier = new ArrayList<Identifier>();
824      this.identifier.add(t);
825      return t;
826    }
827
828    public Procedure addIdentifier(Identifier t) { //3
829      if (t == null)
830        return this;
831      if (this.identifier == null)
832        this.identifier = new ArrayList<Identifier>();
833      this.identifier.add(t);
834      return this;
835    }
836
837    /**
838     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
839     */
840    public Identifier getIdentifierFirstRep() { 
841      if (getIdentifier().isEmpty()) {
842        addIdentifier();
843      }
844      return getIdentifier().get(0);
845    }
846
847    /**
848     * @return {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure.)
849     */
850    public List<CanonicalType> getInstantiatesCanonical() { 
851      if (this.instantiatesCanonical == null)
852        this.instantiatesCanonical = new ArrayList<CanonicalType>();
853      return this.instantiatesCanonical;
854    }
855
856    /**
857     * @return Returns a reference to <code>this</code> for easy method chaining
858     */
859    public Procedure setInstantiatesCanonical(List<CanonicalType> theInstantiatesCanonical) { 
860      this.instantiatesCanonical = theInstantiatesCanonical;
861      return this;
862    }
863
864    public boolean hasInstantiatesCanonical() { 
865      if (this.instantiatesCanonical == null)
866        return false;
867      for (CanonicalType item : this.instantiatesCanonical)
868        if (!item.isEmpty())
869          return true;
870      return false;
871    }
872
873    /**
874     * @return {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure.)
875     */
876    public CanonicalType addInstantiatesCanonicalElement() {//2 
877      CanonicalType t = new CanonicalType();
878      if (this.instantiatesCanonical == null)
879        this.instantiatesCanonical = new ArrayList<CanonicalType>();
880      this.instantiatesCanonical.add(t);
881      return t;
882    }
883
884    /**
885     * @param value {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure.)
886     */
887    public Procedure addInstantiatesCanonical(String value) { //1
888      CanonicalType t = new CanonicalType();
889      t.setValue(value);
890      if (this.instantiatesCanonical == null)
891        this.instantiatesCanonical = new ArrayList<CanonicalType>();
892      this.instantiatesCanonical.add(t);
893      return this;
894    }
895
896    /**
897     * @param value {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure.)
898     */
899    public boolean hasInstantiatesCanonical(String value) { 
900      if (this.instantiatesCanonical == null)
901        return false;
902      for (CanonicalType v : this.instantiatesCanonical)
903        if (v.getValue().equals(value)) // canonical
904          return true;
905      return false;
906    }
907
908    /**
909     * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure.)
910     */
911    public List<UriType> getInstantiatesUri() { 
912      if (this.instantiatesUri == null)
913        this.instantiatesUri = new ArrayList<UriType>();
914      return this.instantiatesUri;
915    }
916
917    /**
918     * @return Returns a reference to <code>this</code> for easy method chaining
919     */
920    public Procedure setInstantiatesUri(List<UriType> theInstantiatesUri) { 
921      this.instantiatesUri = theInstantiatesUri;
922      return this;
923    }
924
925    public boolean hasInstantiatesUri() { 
926      if (this.instantiatesUri == null)
927        return false;
928      for (UriType item : this.instantiatesUri)
929        if (!item.isEmpty())
930          return true;
931      return false;
932    }
933
934    /**
935     * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure.)
936     */
937    public UriType addInstantiatesUriElement() {//2 
938      UriType t = new UriType();
939      if (this.instantiatesUri == null)
940        this.instantiatesUri = new ArrayList<UriType>();
941      this.instantiatesUri.add(t);
942      return t;
943    }
944
945    /**
946     * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure.)
947     */
948    public Procedure addInstantiatesUri(String value) { //1
949      UriType t = new UriType();
950      t.setValue(value);
951      if (this.instantiatesUri == null)
952        this.instantiatesUri = new ArrayList<UriType>();
953      this.instantiatesUri.add(t);
954      return this;
955    }
956
957    /**
958     * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure.)
959     */
960    public boolean hasInstantiatesUri(String value) { 
961      if (this.instantiatesUri == null)
962        return false;
963      for (UriType v : this.instantiatesUri)
964        if (v.getValue().equals(value)) // uri
965          return true;
966      return false;
967    }
968
969    /**
970     * @return {@link #basedOn} (A reference to a resource that contains details of the request for this procedure.)
971     */
972    public List<Reference> getBasedOn() { 
973      if (this.basedOn == null)
974        this.basedOn = new ArrayList<Reference>();
975      return this.basedOn;
976    }
977
978    /**
979     * @return Returns a reference to <code>this</code> for easy method chaining
980     */
981    public Procedure setBasedOn(List<Reference> theBasedOn) { 
982      this.basedOn = theBasedOn;
983      return this;
984    }
985
986    public boolean hasBasedOn() { 
987      if (this.basedOn == null)
988        return false;
989      for (Reference item : this.basedOn)
990        if (!item.isEmpty())
991          return true;
992      return false;
993    }
994
995    public Reference addBasedOn() { //3
996      Reference t = new Reference();
997      if (this.basedOn == null)
998        this.basedOn = new ArrayList<Reference>();
999      this.basedOn.add(t);
1000      return t;
1001    }
1002
1003    public Procedure addBasedOn(Reference t) { //3
1004      if (t == null)
1005        return this;
1006      if (this.basedOn == null)
1007        this.basedOn = new ArrayList<Reference>();
1008      this.basedOn.add(t);
1009      return this;
1010    }
1011
1012    /**
1013     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
1014     */
1015    public Reference getBasedOnFirstRep() { 
1016      if (getBasedOn().isEmpty()) {
1017        addBasedOn();
1018      }
1019      return getBasedOn().get(0);
1020    }
1021
1022    /**
1023     * @return {@link #partOf} (A larger event of which this particular procedure is a component or step.)
1024     */
1025    public List<Reference> getPartOf() { 
1026      if (this.partOf == null)
1027        this.partOf = new ArrayList<Reference>();
1028      return this.partOf;
1029    }
1030
1031    /**
1032     * @return Returns a reference to <code>this</code> for easy method chaining
1033     */
1034    public Procedure setPartOf(List<Reference> thePartOf) { 
1035      this.partOf = thePartOf;
1036      return this;
1037    }
1038
1039    public boolean hasPartOf() { 
1040      if (this.partOf == null)
1041        return false;
1042      for (Reference item : this.partOf)
1043        if (!item.isEmpty())
1044          return true;
1045      return false;
1046    }
1047
1048    public Reference addPartOf() { //3
1049      Reference t = new Reference();
1050      if (this.partOf == null)
1051        this.partOf = new ArrayList<Reference>();
1052      this.partOf.add(t);
1053      return t;
1054    }
1055
1056    public Procedure addPartOf(Reference t) { //3
1057      if (t == null)
1058        return this;
1059      if (this.partOf == null)
1060        this.partOf = new ArrayList<Reference>();
1061      this.partOf.add(t);
1062      return this;
1063    }
1064
1065    /**
1066     * @return The first repetition of repeating field {@link #partOf}, creating it if it does not already exist {3}
1067     */
1068    public Reference getPartOfFirstRep() { 
1069      if (getPartOf().isEmpty()) {
1070        addPartOf();
1071      }
1072      return getPartOf().get(0);
1073    }
1074
1075    /**
1076     * @return {@link #status} (A code specifying the state of the procedure. Generally, this will be the in-progress or completed state.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1077     */
1078    public Enumeration<EventStatus> getStatusElement() { 
1079      if (this.status == null)
1080        if (Configuration.errorOnAutoCreate())
1081          throw new Error("Attempt to auto-create Procedure.status");
1082        else if (Configuration.doAutoCreate())
1083          this.status = new Enumeration<EventStatus>(new EventStatusEnumFactory()); // bb
1084      return this.status;
1085    }
1086
1087    public boolean hasStatusElement() { 
1088      return this.status != null && !this.status.isEmpty();
1089    }
1090
1091    public boolean hasStatus() { 
1092      return this.status != null && !this.status.isEmpty();
1093    }
1094
1095    /**
1096     * @param value {@link #status} (A code specifying the state of the procedure. Generally, this will be the in-progress or completed state.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1097     */
1098    public Procedure setStatusElement(Enumeration<EventStatus> value) { 
1099      this.status = value;
1100      return this;
1101    }
1102
1103    /**
1104     * @return A code specifying the state of the procedure. Generally, this will be the in-progress or completed state.
1105     */
1106    public EventStatus getStatus() { 
1107      return this.status == null ? null : this.status.getValue();
1108    }
1109
1110    /**
1111     * @param value A code specifying the state of the procedure. Generally, this will be the in-progress or completed state.
1112     */
1113    public Procedure setStatus(EventStatus value) { 
1114        if (this.status == null)
1115          this.status = new Enumeration<EventStatus>(new EventStatusEnumFactory());
1116        this.status.setValue(value);
1117      return this;
1118    }
1119
1120    /**
1121     * @return {@link #statusReason} (Captures the reason for the current state of the procedure.)
1122     */
1123    public CodeableConcept getStatusReason() { 
1124      if (this.statusReason == null)
1125        if (Configuration.errorOnAutoCreate())
1126          throw new Error("Attempt to auto-create Procedure.statusReason");
1127        else if (Configuration.doAutoCreate())
1128          this.statusReason = new CodeableConcept(); // cc
1129      return this.statusReason;
1130    }
1131
1132    public boolean hasStatusReason() { 
1133      return this.statusReason != null && !this.statusReason.isEmpty();
1134    }
1135
1136    /**
1137     * @param value {@link #statusReason} (Captures the reason for the current state of the procedure.)
1138     */
1139    public Procedure setStatusReason(CodeableConcept value) { 
1140      this.statusReason = value;
1141      return this;
1142    }
1143
1144    /**
1145     * @return {@link #category} (A code that classifies the procedure for searching, sorting and display purposes (e.g. "Surgical Procedure").)
1146     */
1147    public List<CodeableConcept> getCategory() { 
1148      if (this.category == null)
1149        this.category = new ArrayList<CodeableConcept>();
1150      return this.category;
1151    }
1152
1153    /**
1154     * @return Returns a reference to <code>this</code> for easy method chaining
1155     */
1156    public Procedure setCategory(List<CodeableConcept> theCategory) { 
1157      this.category = theCategory;
1158      return this;
1159    }
1160
1161    public boolean hasCategory() { 
1162      if (this.category == null)
1163        return false;
1164      for (CodeableConcept item : this.category)
1165        if (!item.isEmpty())
1166          return true;
1167      return false;
1168    }
1169
1170    public CodeableConcept addCategory() { //3
1171      CodeableConcept t = new CodeableConcept();
1172      if (this.category == null)
1173        this.category = new ArrayList<CodeableConcept>();
1174      this.category.add(t);
1175      return t;
1176    }
1177
1178    public Procedure addCategory(CodeableConcept t) { //3
1179      if (t == null)
1180        return this;
1181      if (this.category == null)
1182        this.category = new ArrayList<CodeableConcept>();
1183      this.category.add(t);
1184      return this;
1185    }
1186
1187    /**
1188     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
1189     */
1190    public CodeableConcept getCategoryFirstRep() { 
1191      if (getCategory().isEmpty()) {
1192        addCategory();
1193      }
1194      return getCategory().get(0);
1195    }
1196
1197    /**
1198     * @return {@link #code} (The specific procedure that is performed. Use text if the exact nature of the procedure cannot be coded (e.g. "Laparoscopic Appendectomy").)
1199     */
1200    public CodeableConcept getCode() { 
1201      if (this.code == null)
1202        if (Configuration.errorOnAutoCreate())
1203          throw new Error("Attempt to auto-create Procedure.code");
1204        else if (Configuration.doAutoCreate())
1205          this.code = new CodeableConcept(); // cc
1206      return this.code;
1207    }
1208
1209    public boolean hasCode() { 
1210      return this.code != null && !this.code.isEmpty();
1211    }
1212
1213    /**
1214     * @param value {@link #code} (The specific procedure that is performed. Use text if the exact nature of the procedure cannot be coded (e.g. "Laparoscopic Appendectomy").)
1215     */
1216    public Procedure setCode(CodeableConcept value) { 
1217      this.code = value;
1218      return this;
1219    }
1220
1221    /**
1222     * @return {@link #subject} (On whom or on what the procedure was performed. This is usually an individual human, but can also be performed on animals, groups of humans or animals, organizations or practitioners (for licensing), locations or devices (for safety inspections or regulatory authorizations).  If the actual focus of the procedure is different from the subject, the focus element specifies the actual focus of the procedure.)
1223     */
1224    public Reference getSubject() { 
1225      if (this.subject == null)
1226        if (Configuration.errorOnAutoCreate())
1227          throw new Error("Attempt to auto-create Procedure.subject");
1228        else if (Configuration.doAutoCreate())
1229          this.subject = new Reference(); // cc
1230      return this.subject;
1231    }
1232
1233    public boolean hasSubject() { 
1234      return this.subject != null && !this.subject.isEmpty();
1235    }
1236
1237    /**
1238     * @param value {@link #subject} (On whom or on what the procedure was performed. This is usually an individual human, but can also be performed on animals, groups of humans or animals, organizations or practitioners (for licensing), locations or devices (for safety inspections or regulatory authorizations).  If the actual focus of the procedure is different from the subject, the focus element specifies the actual focus of the procedure.)
1239     */
1240    public Procedure setSubject(Reference value) { 
1241      this.subject = value;
1242      return this;
1243    }
1244
1245    /**
1246     * @return {@link #focus} (Who is the target of the procedure when it is not the subject of record only.  If focus is not present, then subject is the focus.  If focus is present and the subject is one of the targets of the procedure, include subject as a focus as well. If focus is present and the subject is not included in focus, it implies that the procedure was only targeted on the focus. For example, when a caregiver is given education for a patient, the caregiver would be the focus and the procedure record is associated with the subject (e.g. patient).  For example, use focus when recording the target of the education, training, or counseling is the parent or relative of a patient.)
1247     */
1248    public Reference getFocus() { 
1249      if (this.focus == null)
1250        if (Configuration.errorOnAutoCreate())
1251          throw new Error("Attempt to auto-create Procedure.focus");
1252        else if (Configuration.doAutoCreate())
1253          this.focus = new Reference(); // cc
1254      return this.focus;
1255    }
1256
1257    public boolean hasFocus() { 
1258      return this.focus != null && !this.focus.isEmpty();
1259    }
1260
1261    /**
1262     * @param value {@link #focus} (Who is the target of the procedure when it is not the subject of record only.  If focus is not present, then subject is the focus.  If focus is present and the subject is one of the targets of the procedure, include subject as a focus as well. If focus is present and the subject is not included in focus, it implies that the procedure was only targeted on the focus. For example, when a caregiver is given education for a patient, the caregiver would be the focus and the procedure record is associated with the subject (e.g. patient).  For example, use focus when recording the target of the education, training, or counseling is the parent or relative of a patient.)
1263     */
1264    public Procedure setFocus(Reference value) { 
1265      this.focus = value;
1266      return this;
1267    }
1268
1269    /**
1270     * @return {@link #encounter} (The Encounter during which this Procedure was created or performed or to which the creation of this record is tightly associated.)
1271     */
1272    public Reference getEncounter() { 
1273      if (this.encounter == null)
1274        if (Configuration.errorOnAutoCreate())
1275          throw new Error("Attempt to auto-create Procedure.encounter");
1276        else if (Configuration.doAutoCreate())
1277          this.encounter = new Reference(); // cc
1278      return this.encounter;
1279    }
1280
1281    public boolean hasEncounter() { 
1282      return this.encounter != null && !this.encounter.isEmpty();
1283    }
1284
1285    /**
1286     * @param value {@link #encounter} (The Encounter during which this Procedure was created or performed or to which the creation of this record is tightly associated.)
1287     */
1288    public Procedure setEncounter(Reference value) { 
1289      this.encounter = value;
1290      return this;
1291    }
1292
1293    /**
1294     * @return {@link #occurrence} (Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.)
1295     */
1296    public DataType getOccurrence() { 
1297      return this.occurrence;
1298    }
1299
1300    /**
1301     * @return {@link #occurrence} (Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.)
1302     */
1303    public DateTimeType getOccurrenceDateTimeType() throws FHIRException { 
1304      if (this.occurrence == null)
1305        this.occurrence = new DateTimeType();
1306      if (!(this.occurrence instanceof DateTimeType))
1307        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1308      return (DateTimeType) this.occurrence;
1309    }
1310
1311    public boolean hasOccurrenceDateTimeType() { 
1312      return this != null && this.occurrence instanceof DateTimeType;
1313    }
1314
1315    /**
1316     * @return {@link #occurrence} (Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.)
1317     */
1318    public Period getOccurrencePeriod() throws FHIRException { 
1319      if (this.occurrence == null)
1320        this.occurrence = new Period();
1321      if (!(this.occurrence instanceof Period))
1322        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1323      return (Period) this.occurrence;
1324    }
1325
1326    public boolean hasOccurrencePeriod() { 
1327      return this != null && this.occurrence instanceof Period;
1328    }
1329
1330    /**
1331     * @return {@link #occurrence} (Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.)
1332     */
1333    public StringType getOccurrenceStringType() throws FHIRException { 
1334      if (this.occurrence == null)
1335        this.occurrence = new StringType();
1336      if (!(this.occurrence instanceof StringType))
1337        throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1338      return (StringType) this.occurrence;
1339    }
1340
1341    public boolean hasOccurrenceStringType() { 
1342      return this != null && this.occurrence instanceof StringType;
1343    }
1344
1345    /**
1346     * @return {@link #occurrence} (Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.)
1347     */
1348    public Age getOccurrenceAge() throws FHIRException { 
1349      if (this.occurrence == null)
1350        this.occurrence = new Age();
1351      if (!(this.occurrence instanceof Age))
1352        throw new FHIRException("Type mismatch: the type Age was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1353      return (Age) this.occurrence;
1354    }
1355
1356    public boolean hasOccurrenceAge() { 
1357      return this != null && this.occurrence instanceof Age;
1358    }
1359
1360    /**
1361     * @return {@link #occurrence} (Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.)
1362     */
1363    public Range getOccurrenceRange() throws FHIRException { 
1364      if (this.occurrence == null)
1365        this.occurrence = new Range();
1366      if (!(this.occurrence instanceof Range))
1367        throw new FHIRException("Type mismatch: the type Range was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1368      return (Range) this.occurrence;
1369    }
1370
1371    public boolean hasOccurrenceRange() { 
1372      return this != null && this.occurrence instanceof Range;
1373    }
1374
1375    /**
1376     * @return {@link #occurrence} (Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.)
1377     */
1378    public Timing getOccurrenceTiming() throws FHIRException { 
1379      if (this.occurrence == null)
1380        this.occurrence = new Timing();
1381      if (!(this.occurrence instanceof Timing))
1382        throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1383      return (Timing) this.occurrence;
1384    }
1385
1386    public boolean hasOccurrenceTiming() { 
1387      return this != null && this.occurrence instanceof Timing;
1388    }
1389
1390    public boolean hasOccurrence() { 
1391      return this.occurrence != null && !this.occurrence.isEmpty();
1392    }
1393
1394    /**
1395     * @param value {@link #occurrence} (Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.)
1396     */
1397    public Procedure setOccurrence(DataType value) { 
1398      if (value != null && !(value instanceof DateTimeType || value instanceof Period || value instanceof StringType || value instanceof Age || value instanceof Range || value instanceof Timing))
1399        throw new FHIRException("Not the right type for Procedure.occurrence[x]: "+value.fhirType());
1400      this.occurrence = value;
1401      return this;
1402    }
1403
1404    /**
1405     * @return {@link #recorded} (The date the occurrence of the procedure was first captured in the record regardless of Procedure.status (potentially after the occurrence of the event).). This is the underlying object with id, value and extensions. The accessor "getRecorded" gives direct access to the value
1406     */
1407    public DateTimeType getRecordedElement() { 
1408      if (this.recorded == null)
1409        if (Configuration.errorOnAutoCreate())
1410          throw new Error("Attempt to auto-create Procedure.recorded");
1411        else if (Configuration.doAutoCreate())
1412          this.recorded = new DateTimeType(); // bb
1413      return this.recorded;
1414    }
1415
1416    public boolean hasRecordedElement() { 
1417      return this.recorded != null && !this.recorded.isEmpty();
1418    }
1419
1420    public boolean hasRecorded() { 
1421      return this.recorded != null && !this.recorded.isEmpty();
1422    }
1423
1424    /**
1425     * @param value {@link #recorded} (The date the occurrence of the procedure was first captured in the record regardless of Procedure.status (potentially after the occurrence of the event).). This is the underlying object with id, value and extensions. The accessor "getRecorded" gives direct access to the value
1426     */
1427    public Procedure setRecordedElement(DateTimeType value) { 
1428      this.recorded = value;
1429      return this;
1430    }
1431
1432    /**
1433     * @return The date the occurrence of the procedure was first captured in the record regardless of Procedure.status (potentially after the occurrence of the event).
1434     */
1435    public Date getRecorded() { 
1436      return this.recorded == null ? null : this.recorded.getValue();
1437    }
1438
1439    /**
1440     * @param value The date the occurrence of the procedure was first captured in the record regardless of Procedure.status (potentially after the occurrence of the event).
1441     */
1442    public Procedure setRecorded(Date value) { 
1443      if (value == null)
1444        this.recorded = null;
1445      else {
1446        if (this.recorded == null)
1447          this.recorded = new DateTimeType();
1448        this.recorded.setValue(value);
1449      }
1450      return this;
1451    }
1452
1453    /**
1454     * @return {@link #recorder} (Individual who recorded the record and takes responsibility for its content.)
1455     */
1456    public Reference getRecorder() { 
1457      if (this.recorder == null)
1458        if (Configuration.errorOnAutoCreate())
1459          throw new Error("Attempt to auto-create Procedure.recorder");
1460        else if (Configuration.doAutoCreate())
1461          this.recorder = new Reference(); // cc
1462      return this.recorder;
1463    }
1464
1465    public boolean hasRecorder() { 
1466      return this.recorder != null && !this.recorder.isEmpty();
1467    }
1468
1469    /**
1470     * @param value {@link #recorder} (Individual who recorded the record and takes responsibility for its content.)
1471     */
1472    public Procedure setRecorder(Reference value) { 
1473      this.recorder = value;
1474      return this;
1475    }
1476
1477    /**
1478     * @return {@link #reported} (Indicates if this record was captured as a secondary 'reported' record rather than as an original primary source-of-truth record.  It may also indicate the source of the report.)
1479     */
1480    public DataType getReported() { 
1481      return this.reported;
1482    }
1483
1484    /**
1485     * @return {@link #reported} (Indicates if this record was captured as a secondary 'reported' record rather than as an original primary source-of-truth record.  It may also indicate the source of the report.)
1486     */
1487    public BooleanType getReportedBooleanType() throws FHIRException { 
1488      if (this.reported == null)
1489        this.reported = new BooleanType();
1490      if (!(this.reported instanceof BooleanType))
1491        throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.reported.getClass().getName()+" was encountered");
1492      return (BooleanType) this.reported;
1493    }
1494
1495    public boolean hasReportedBooleanType() { 
1496      return this != null && this.reported instanceof BooleanType;
1497    }
1498
1499    /**
1500     * @return {@link #reported} (Indicates if this record was captured as a secondary 'reported' record rather than as an original primary source-of-truth record.  It may also indicate the source of the report.)
1501     */
1502    public Reference getReportedReference() throws FHIRException { 
1503      if (this.reported == null)
1504        this.reported = new Reference();
1505      if (!(this.reported instanceof Reference))
1506        throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.reported.getClass().getName()+" was encountered");
1507      return (Reference) this.reported;
1508    }
1509
1510    public boolean hasReportedReference() { 
1511      return this != null && this.reported instanceof Reference;
1512    }
1513
1514    public boolean hasReported() { 
1515      return this.reported != null && !this.reported.isEmpty();
1516    }
1517
1518    /**
1519     * @param value {@link #reported} (Indicates if this record was captured as a secondary 'reported' record rather than as an original primary source-of-truth record.  It may also indicate the source of the report.)
1520     */
1521    public Procedure setReported(DataType value) { 
1522      if (value != null && !(value instanceof BooleanType || value instanceof Reference))
1523        throw new FHIRException("Not the right type for Procedure.reported[x]: "+value.fhirType());
1524      this.reported = value;
1525      return this;
1526    }
1527
1528    /**
1529     * @return {@link #performer} (Indicates who or what performed the procedure and how they were involved.)
1530     */
1531    public List<ProcedurePerformerComponent> getPerformer() { 
1532      if (this.performer == null)
1533        this.performer = new ArrayList<ProcedurePerformerComponent>();
1534      return this.performer;
1535    }
1536
1537    /**
1538     * @return Returns a reference to <code>this</code> for easy method chaining
1539     */
1540    public Procedure setPerformer(List<ProcedurePerformerComponent> thePerformer) { 
1541      this.performer = thePerformer;
1542      return this;
1543    }
1544
1545    public boolean hasPerformer() { 
1546      if (this.performer == null)
1547        return false;
1548      for (ProcedurePerformerComponent item : this.performer)
1549        if (!item.isEmpty())
1550          return true;
1551      return false;
1552    }
1553
1554    public ProcedurePerformerComponent addPerformer() { //3
1555      ProcedurePerformerComponent t = new ProcedurePerformerComponent();
1556      if (this.performer == null)
1557        this.performer = new ArrayList<ProcedurePerformerComponent>();
1558      this.performer.add(t);
1559      return t;
1560    }
1561
1562    public Procedure addPerformer(ProcedurePerformerComponent t) { //3
1563      if (t == null)
1564        return this;
1565      if (this.performer == null)
1566        this.performer = new ArrayList<ProcedurePerformerComponent>();
1567      this.performer.add(t);
1568      return this;
1569    }
1570
1571    /**
1572     * @return The first repetition of repeating field {@link #performer}, creating it if it does not already exist {3}
1573     */
1574    public ProcedurePerformerComponent getPerformerFirstRep() { 
1575      if (getPerformer().isEmpty()) {
1576        addPerformer();
1577      }
1578      return getPerformer().get(0);
1579    }
1580
1581    /**
1582     * @return {@link #location} (The location where the procedure actually happened.  E.g. a newborn at home, a tracheostomy at a restaurant.)
1583     */
1584    public Reference getLocation() { 
1585      if (this.location == null)
1586        if (Configuration.errorOnAutoCreate())
1587          throw new Error("Attempt to auto-create Procedure.location");
1588        else if (Configuration.doAutoCreate())
1589          this.location = new Reference(); // cc
1590      return this.location;
1591    }
1592
1593    public boolean hasLocation() { 
1594      return this.location != null && !this.location.isEmpty();
1595    }
1596
1597    /**
1598     * @param value {@link #location} (The location where the procedure actually happened.  E.g. a newborn at home, a tracheostomy at a restaurant.)
1599     */
1600    public Procedure setLocation(Reference value) { 
1601      this.location = value;
1602      return this;
1603    }
1604
1605    /**
1606     * @return {@link #reason} (The coded reason or reference why the procedure was performed. This may be a coded entity of some type, be present as text, or be a reference to one of several resources that justify the procedure.)
1607     */
1608    public List<CodeableReference> getReason() { 
1609      if (this.reason == null)
1610        this.reason = new ArrayList<CodeableReference>();
1611      return this.reason;
1612    }
1613
1614    /**
1615     * @return Returns a reference to <code>this</code> for easy method chaining
1616     */
1617    public Procedure setReason(List<CodeableReference> theReason) { 
1618      this.reason = theReason;
1619      return this;
1620    }
1621
1622    public boolean hasReason() { 
1623      if (this.reason == null)
1624        return false;
1625      for (CodeableReference item : this.reason)
1626        if (!item.isEmpty())
1627          return true;
1628      return false;
1629    }
1630
1631    public CodeableReference addReason() { //3
1632      CodeableReference t = new CodeableReference();
1633      if (this.reason == null)
1634        this.reason = new ArrayList<CodeableReference>();
1635      this.reason.add(t);
1636      return t;
1637    }
1638
1639    public Procedure addReason(CodeableReference t) { //3
1640      if (t == null)
1641        return this;
1642      if (this.reason == null)
1643        this.reason = new ArrayList<CodeableReference>();
1644      this.reason.add(t);
1645      return this;
1646    }
1647
1648    /**
1649     * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3}
1650     */
1651    public CodeableReference getReasonFirstRep() { 
1652      if (getReason().isEmpty()) {
1653        addReason();
1654      }
1655      return getReason().get(0);
1656    }
1657
1658    /**
1659     * @return {@link #bodySite} (Detailed and structured anatomical location information. Multiple locations are allowed - e.g. multiple punch biopsies of a lesion.)
1660     */
1661    public List<CodeableConcept> getBodySite() { 
1662      if (this.bodySite == null)
1663        this.bodySite = new ArrayList<CodeableConcept>();
1664      return this.bodySite;
1665    }
1666
1667    /**
1668     * @return Returns a reference to <code>this</code> for easy method chaining
1669     */
1670    public Procedure setBodySite(List<CodeableConcept> theBodySite) { 
1671      this.bodySite = theBodySite;
1672      return this;
1673    }
1674
1675    public boolean hasBodySite() { 
1676      if (this.bodySite == null)
1677        return false;
1678      for (CodeableConcept item : this.bodySite)
1679        if (!item.isEmpty())
1680          return true;
1681      return false;
1682    }
1683
1684    public CodeableConcept addBodySite() { //3
1685      CodeableConcept t = new CodeableConcept();
1686      if (this.bodySite == null)
1687        this.bodySite = new ArrayList<CodeableConcept>();
1688      this.bodySite.add(t);
1689      return t;
1690    }
1691
1692    public Procedure addBodySite(CodeableConcept t) { //3
1693      if (t == null)
1694        return this;
1695      if (this.bodySite == null)
1696        this.bodySite = new ArrayList<CodeableConcept>();
1697      this.bodySite.add(t);
1698      return this;
1699    }
1700
1701    /**
1702     * @return The first repetition of repeating field {@link #bodySite}, creating it if it does not already exist {3}
1703     */
1704    public CodeableConcept getBodySiteFirstRep() { 
1705      if (getBodySite().isEmpty()) {
1706        addBodySite();
1707      }
1708      return getBodySite().get(0);
1709    }
1710
1711    /**
1712     * @return {@link #outcome} (The outcome of the procedure - did it resolve the reasons for the procedure being performed?)
1713     */
1714    public CodeableConcept getOutcome() { 
1715      if (this.outcome == null)
1716        if (Configuration.errorOnAutoCreate())
1717          throw new Error("Attempt to auto-create Procedure.outcome");
1718        else if (Configuration.doAutoCreate())
1719          this.outcome = new CodeableConcept(); // cc
1720      return this.outcome;
1721    }
1722
1723    public boolean hasOutcome() { 
1724      return this.outcome != null && !this.outcome.isEmpty();
1725    }
1726
1727    /**
1728     * @param value {@link #outcome} (The outcome of the procedure - did it resolve the reasons for the procedure being performed?)
1729     */
1730    public Procedure setOutcome(CodeableConcept value) { 
1731      this.outcome = value;
1732      return this;
1733    }
1734
1735    /**
1736     * @return {@link #report} (This could be a histology result, pathology report, surgical report, etc.)
1737     */
1738    public List<Reference> getReport() { 
1739      if (this.report == null)
1740        this.report = new ArrayList<Reference>();
1741      return this.report;
1742    }
1743
1744    /**
1745     * @return Returns a reference to <code>this</code> for easy method chaining
1746     */
1747    public Procedure setReport(List<Reference> theReport) { 
1748      this.report = theReport;
1749      return this;
1750    }
1751
1752    public boolean hasReport() { 
1753      if (this.report == null)
1754        return false;
1755      for (Reference item : this.report)
1756        if (!item.isEmpty())
1757          return true;
1758      return false;
1759    }
1760
1761    public Reference addReport() { //3
1762      Reference t = new Reference();
1763      if (this.report == null)
1764        this.report = new ArrayList<Reference>();
1765      this.report.add(t);
1766      return t;
1767    }
1768
1769    public Procedure addReport(Reference t) { //3
1770      if (t == null)
1771        return this;
1772      if (this.report == null)
1773        this.report = new ArrayList<Reference>();
1774      this.report.add(t);
1775      return this;
1776    }
1777
1778    /**
1779     * @return The first repetition of repeating field {@link #report}, creating it if it does not already exist {3}
1780     */
1781    public Reference getReportFirstRep() { 
1782      if (getReport().isEmpty()) {
1783        addReport();
1784      }
1785      return getReport().get(0);
1786    }
1787
1788    /**
1789     * @return {@link #complication} (Any complications that occurred during the procedure, or in the immediate post-performance period. These are generally tracked separately from the notes, which will typically describe the procedure itself rather than any 'post procedure' issues.)
1790     */
1791    public List<CodeableReference> getComplication() { 
1792      if (this.complication == null)
1793        this.complication = new ArrayList<CodeableReference>();
1794      return this.complication;
1795    }
1796
1797    /**
1798     * @return Returns a reference to <code>this</code> for easy method chaining
1799     */
1800    public Procedure setComplication(List<CodeableReference> theComplication) { 
1801      this.complication = theComplication;
1802      return this;
1803    }
1804
1805    public boolean hasComplication() { 
1806      if (this.complication == null)
1807        return false;
1808      for (CodeableReference item : this.complication)
1809        if (!item.isEmpty())
1810          return true;
1811      return false;
1812    }
1813
1814    public CodeableReference addComplication() { //3
1815      CodeableReference t = new CodeableReference();
1816      if (this.complication == null)
1817        this.complication = new ArrayList<CodeableReference>();
1818      this.complication.add(t);
1819      return t;
1820    }
1821
1822    public Procedure addComplication(CodeableReference t) { //3
1823      if (t == null)
1824        return this;
1825      if (this.complication == null)
1826        this.complication = new ArrayList<CodeableReference>();
1827      this.complication.add(t);
1828      return this;
1829    }
1830
1831    /**
1832     * @return The first repetition of repeating field {@link #complication}, creating it if it does not already exist {3}
1833     */
1834    public CodeableReference getComplicationFirstRep() { 
1835      if (getComplication().isEmpty()) {
1836        addComplication();
1837      }
1838      return getComplication().get(0);
1839    }
1840
1841    /**
1842     * @return {@link #followUp} (If the procedure required specific follow up - e.g. removal of sutures. The follow up may be represented as a simple note or could potentially be more complex, in which case the CarePlan resource can be used.)
1843     */
1844    public List<CodeableConcept> getFollowUp() { 
1845      if (this.followUp == null)
1846        this.followUp = new ArrayList<CodeableConcept>();
1847      return this.followUp;
1848    }
1849
1850    /**
1851     * @return Returns a reference to <code>this</code> for easy method chaining
1852     */
1853    public Procedure setFollowUp(List<CodeableConcept> theFollowUp) { 
1854      this.followUp = theFollowUp;
1855      return this;
1856    }
1857
1858    public boolean hasFollowUp() { 
1859      if (this.followUp == null)
1860        return false;
1861      for (CodeableConcept item : this.followUp)
1862        if (!item.isEmpty())
1863          return true;
1864      return false;
1865    }
1866
1867    public CodeableConcept addFollowUp() { //3
1868      CodeableConcept t = new CodeableConcept();
1869      if (this.followUp == null)
1870        this.followUp = new ArrayList<CodeableConcept>();
1871      this.followUp.add(t);
1872      return t;
1873    }
1874
1875    public Procedure addFollowUp(CodeableConcept t) { //3
1876      if (t == null)
1877        return this;
1878      if (this.followUp == null)
1879        this.followUp = new ArrayList<CodeableConcept>();
1880      this.followUp.add(t);
1881      return this;
1882    }
1883
1884    /**
1885     * @return The first repetition of repeating field {@link #followUp}, creating it if it does not already exist {3}
1886     */
1887    public CodeableConcept getFollowUpFirstRep() { 
1888      if (getFollowUp().isEmpty()) {
1889        addFollowUp();
1890      }
1891      return getFollowUp().get(0);
1892    }
1893
1894    /**
1895     * @return {@link #note} (Any other notes and comments about the procedure.)
1896     */
1897    public List<Annotation> getNote() { 
1898      if (this.note == null)
1899        this.note = new ArrayList<Annotation>();
1900      return this.note;
1901    }
1902
1903    /**
1904     * @return Returns a reference to <code>this</code> for easy method chaining
1905     */
1906    public Procedure setNote(List<Annotation> theNote) { 
1907      this.note = theNote;
1908      return this;
1909    }
1910
1911    public boolean hasNote() { 
1912      if (this.note == null)
1913        return false;
1914      for (Annotation item : this.note)
1915        if (!item.isEmpty())
1916          return true;
1917      return false;
1918    }
1919
1920    public Annotation addNote() { //3
1921      Annotation t = new Annotation();
1922      if (this.note == null)
1923        this.note = new ArrayList<Annotation>();
1924      this.note.add(t);
1925      return t;
1926    }
1927
1928    public Procedure addNote(Annotation t) { //3
1929      if (t == null)
1930        return this;
1931      if (this.note == null)
1932        this.note = new ArrayList<Annotation>();
1933      this.note.add(t);
1934      return this;
1935    }
1936
1937    /**
1938     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
1939     */
1940    public Annotation getNoteFirstRep() { 
1941      if (getNote().isEmpty()) {
1942        addNote();
1943      }
1944      return getNote().get(0);
1945    }
1946
1947    /**
1948     * @return {@link #focalDevice} (A device that is implanted, removed or otherwise manipulated (calibration, battery replacement, fitting a prosthesis, attaching a wound-vac, etc.) as a focal portion of the Procedure.)
1949     */
1950    public List<ProcedureFocalDeviceComponent> getFocalDevice() { 
1951      if (this.focalDevice == null)
1952        this.focalDevice = new ArrayList<ProcedureFocalDeviceComponent>();
1953      return this.focalDevice;
1954    }
1955
1956    /**
1957     * @return Returns a reference to <code>this</code> for easy method chaining
1958     */
1959    public Procedure setFocalDevice(List<ProcedureFocalDeviceComponent> theFocalDevice) { 
1960      this.focalDevice = theFocalDevice;
1961      return this;
1962    }
1963
1964    public boolean hasFocalDevice() { 
1965      if (this.focalDevice == null)
1966        return false;
1967      for (ProcedureFocalDeviceComponent item : this.focalDevice)
1968        if (!item.isEmpty())
1969          return true;
1970      return false;
1971    }
1972
1973    public ProcedureFocalDeviceComponent addFocalDevice() { //3
1974      ProcedureFocalDeviceComponent t = new ProcedureFocalDeviceComponent();
1975      if (this.focalDevice == null)
1976        this.focalDevice = new ArrayList<ProcedureFocalDeviceComponent>();
1977      this.focalDevice.add(t);
1978      return t;
1979    }
1980
1981    public Procedure addFocalDevice(ProcedureFocalDeviceComponent t) { //3
1982      if (t == null)
1983        return this;
1984      if (this.focalDevice == null)
1985        this.focalDevice = new ArrayList<ProcedureFocalDeviceComponent>();
1986      this.focalDevice.add(t);
1987      return this;
1988    }
1989
1990    /**
1991     * @return The first repetition of repeating field {@link #focalDevice}, creating it if it does not already exist {3}
1992     */
1993    public ProcedureFocalDeviceComponent getFocalDeviceFirstRep() { 
1994      if (getFocalDevice().isEmpty()) {
1995        addFocalDevice();
1996      }
1997      return getFocalDevice().get(0);
1998    }
1999
2000    /**
2001     * @return {@link #used} (Identifies medications, devices and any other substance used as part of the procedure.)
2002     */
2003    public List<CodeableReference> getUsed() { 
2004      if (this.used == null)
2005        this.used = new ArrayList<CodeableReference>();
2006      return this.used;
2007    }
2008
2009    /**
2010     * @return Returns a reference to <code>this</code> for easy method chaining
2011     */
2012    public Procedure setUsed(List<CodeableReference> theUsed) { 
2013      this.used = theUsed;
2014      return this;
2015    }
2016
2017    public boolean hasUsed() { 
2018      if (this.used == null)
2019        return false;
2020      for (CodeableReference item : this.used)
2021        if (!item.isEmpty())
2022          return true;
2023      return false;
2024    }
2025
2026    public CodeableReference addUsed() { //3
2027      CodeableReference t = new CodeableReference();
2028      if (this.used == null)
2029        this.used = new ArrayList<CodeableReference>();
2030      this.used.add(t);
2031      return t;
2032    }
2033
2034    public Procedure addUsed(CodeableReference t) { //3
2035      if (t == null)
2036        return this;
2037      if (this.used == null)
2038        this.used = new ArrayList<CodeableReference>();
2039      this.used.add(t);
2040      return this;
2041    }
2042
2043    /**
2044     * @return The first repetition of repeating field {@link #used}, creating it if it does not already exist {3}
2045     */
2046    public CodeableReference getUsedFirstRep() { 
2047      if (getUsed().isEmpty()) {
2048        addUsed();
2049      }
2050      return getUsed().get(0);
2051    }
2052
2053    /**
2054     * @return {@link #supportingInfo} (Other resources from the patient record that may be relevant to the procedure.  The information from these resources was either used to create the instance or is provided to help with its interpretation. This extension should not be used if more specific inline elements or extensions are available.)
2055     */
2056    public List<Reference> getSupportingInfo() { 
2057      if (this.supportingInfo == null)
2058        this.supportingInfo = new ArrayList<Reference>();
2059      return this.supportingInfo;
2060    }
2061
2062    /**
2063     * @return Returns a reference to <code>this</code> for easy method chaining
2064     */
2065    public Procedure setSupportingInfo(List<Reference> theSupportingInfo) { 
2066      this.supportingInfo = theSupportingInfo;
2067      return this;
2068    }
2069
2070    public boolean hasSupportingInfo() { 
2071      if (this.supportingInfo == null)
2072        return false;
2073      for (Reference item : this.supportingInfo)
2074        if (!item.isEmpty())
2075          return true;
2076      return false;
2077    }
2078
2079    public Reference addSupportingInfo() { //3
2080      Reference t = new Reference();
2081      if (this.supportingInfo == null)
2082        this.supportingInfo = new ArrayList<Reference>();
2083      this.supportingInfo.add(t);
2084      return t;
2085    }
2086
2087    public Procedure addSupportingInfo(Reference t) { //3
2088      if (t == null)
2089        return this;
2090      if (this.supportingInfo == null)
2091        this.supportingInfo = new ArrayList<Reference>();
2092      this.supportingInfo.add(t);
2093      return this;
2094    }
2095
2096    /**
2097     * @return The first repetition of repeating field {@link #supportingInfo}, creating it if it does not already exist {3}
2098     */
2099    public Reference getSupportingInfoFirstRep() { 
2100      if (getSupportingInfo().isEmpty()) {
2101        addSupportingInfo();
2102      }
2103      return getSupportingInfo().get(0);
2104    }
2105
2106      protected void listChildren(List<Property> children) {
2107        super.listChildren(children);
2108        children.add(new Property("identifier", "Identifier", "Business identifiers assigned to this procedure by the performer or other systems which remain constant as the resource is updated and is propagated from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier));
2109        children.add(new Property("instantiatesCanonical", "canonical(PlanDefinition|ActivityDefinition|Measure|OperationDefinition|Questionnaire)", "The URL pointing to a FHIR-defined protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure.", 0, java.lang.Integer.MAX_VALUE, instantiatesCanonical));
2110        children.add(new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure.", 0, java.lang.Integer.MAX_VALUE, instantiatesUri));
2111        children.add(new Property("basedOn", "Reference(CarePlan|ServiceRequest)", "A reference to a resource that contains details of the request for this procedure.", 0, java.lang.Integer.MAX_VALUE, basedOn));
2112        children.add(new Property("partOf", "Reference(Procedure|Observation|MedicationAdministration)", "A larger event of which this particular procedure is a component or step.", 0, java.lang.Integer.MAX_VALUE, partOf));
2113        children.add(new Property("status", "code", "A code specifying the state of the procedure. Generally, this will be the in-progress or completed state.", 0, 1, status));
2114        children.add(new Property("statusReason", "CodeableConcept", "Captures the reason for the current state of the procedure.", 0, 1, statusReason));
2115        children.add(new Property("category", "CodeableConcept", "A code that classifies the procedure for searching, sorting and display purposes (e.g. \"Surgical Procedure\").", 0, java.lang.Integer.MAX_VALUE, category));
2116        children.add(new Property("code", "CodeableConcept", "The specific procedure that is performed. Use text if the exact nature of the procedure cannot be coded (e.g. \"Laparoscopic Appendectomy\").", 0, 1, code));
2117        children.add(new Property("subject", "Reference(Patient|Group|Device|Practitioner|Organization|Location)", "On whom or on what the procedure was performed. This is usually an individual human, but can also be performed on animals, groups of humans or animals, organizations or practitioners (for licensing), locations or devices (for safety inspections or regulatory authorizations).  If the actual focus of the procedure is different from the subject, the focus element specifies the actual focus of the procedure.", 0, 1, subject));
2118        children.add(new Property("focus", "Reference(Patient|Group|RelatedPerson|Practitioner|Organization|CareTeam|PractitionerRole|Specimen)", "Who is the target of the procedure when it is not the subject of record only.  If focus is not present, then subject is the focus.  If focus is present and the subject is one of the targets of the procedure, include subject as a focus as well. If focus is present and the subject is not included in focus, it implies that the procedure was only targeted on the focus. For example, when a caregiver is given education for a patient, the caregiver would be the focus and the procedure record is associated with the subject (e.g. patient).  For example, use focus when recording the target of the education, training, or counseling is the parent or relative of a patient.", 0, 1, focus));
2119        children.add(new Property("encounter", "Reference(Encounter)", "The Encounter during which this Procedure was created or performed or to which the creation of this record is tightly associated.", 0, 1, encounter));
2120        children.add(new Property("occurrence[x]", "dateTime|Period|string|Age|Range|Timing", "Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, occurrence));
2121        children.add(new Property("recorded", "dateTime", "The date the occurrence of the procedure was first captured in the record regardless of Procedure.status (potentially after the occurrence of the event).", 0, 1, recorded));
2122        children.add(new Property("recorder", "Reference(Patient|RelatedPerson|Practitioner|PractitionerRole)", "Individual who recorded the record and takes responsibility for its content.", 0, 1, recorder));
2123        children.add(new Property("reported[x]", "boolean|Reference(Patient|RelatedPerson|Practitioner|PractitionerRole|Organization)", "Indicates if this record was captured as a secondary 'reported' record rather than as an original primary source-of-truth record.  It may also indicate the source of the report.", 0, 1, reported));
2124        children.add(new Property("performer", "", "Indicates who or what performed the procedure and how they were involved.", 0, java.lang.Integer.MAX_VALUE, performer));
2125        children.add(new Property("location", "Reference(Location)", "The location where the procedure actually happened.  E.g. a newborn at home, a tracheostomy at a restaurant.", 0, 1, location));
2126        children.add(new Property("reason", "CodeableReference(Condition|Observation|Procedure|DiagnosticReport|DocumentReference)", "The coded reason or reference why the procedure was performed. This may be a coded entity of some type, be present as text, or be a reference to one of several resources that justify the procedure.", 0, java.lang.Integer.MAX_VALUE, reason));
2127        children.add(new Property("bodySite", "CodeableConcept", "Detailed and structured anatomical location information. Multiple locations are allowed - e.g. multiple punch biopsies of a lesion.", 0, java.lang.Integer.MAX_VALUE, bodySite));
2128        children.add(new Property("outcome", "CodeableConcept", "The outcome of the procedure - did it resolve the reasons for the procedure being performed?", 0, 1, outcome));
2129        children.add(new Property("report", "Reference(DiagnosticReport|DocumentReference|Composition)", "This could be a histology result, pathology report, surgical report, etc.", 0, java.lang.Integer.MAX_VALUE, report));
2130        children.add(new Property("complication", "CodeableReference(Condition)", "Any complications that occurred during the procedure, or in the immediate post-performance period. These are generally tracked separately from the notes, which will typically describe the procedure itself rather than any 'post procedure' issues.", 0, java.lang.Integer.MAX_VALUE, complication));
2131        children.add(new Property("followUp", "CodeableConcept", "If the procedure required specific follow up - e.g. removal of sutures. The follow up may be represented as a simple note or could potentially be more complex, in which case the CarePlan resource can be used.", 0, java.lang.Integer.MAX_VALUE, followUp));
2132        children.add(new Property("note", "Annotation", "Any other notes and comments about the procedure.", 0, java.lang.Integer.MAX_VALUE, note));
2133        children.add(new Property("focalDevice", "", "A device that is implanted, removed or otherwise manipulated (calibration, battery replacement, fitting a prosthesis, attaching a wound-vac, etc.) as a focal portion of the Procedure.", 0, java.lang.Integer.MAX_VALUE, focalDevice));
2134        children.add(new Property("used", "CodeableReference(Device|Medication|Substance|BiologicallyDerivedProduct)", "Identifies medications, devices and any other substance used as part of the procedure.", 0, java.lang.Integer.MAX_VALUE, used));
2135        children.add(new Property("supportingInfo", "Reference(Any)", "Other resources from the patient record that may be relevant to the procedure.  The information from these resources was either used to create the instance or is provided to help with its interpretation. This extension should not be used if more specific inline elements or extensions are available.", 0, java.lang.Integer.MAX_VALUE, supportingInfo));
2136      }
2137
2138      @Override
2139      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2140        switch (_hash) {
2141        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Business identifiers assigned to this procedure by the performer or other systems which remain constant as the resource is updated and is propagated from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier);
2142        case 8911915: /*instantiatesCanonical*/  return new Property("instantiatesCanonical", "canonical(PlanDefinition|ActivityDefinition|Measure|OperationDefinition|Questionnaire)", "The URL pointing to a FHIR-defined protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure.", 0, java.lang.Integer.MAX_VALUE, instantiatesCanonical);
2143        case -1926393373: /*instantiatesUri*/  return new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol, guideline, order set or other definition that is adhered to in whole or in part by this Procedure.", 0, java.lang.Integer.MAX_VALUE, instantiatesUri);
2144        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(CarePlan|ServiceRequest)", "A reference to a resource that contains details of the request for this procedure.", 0, java.lang.Integer.MAX_VALUE, basedOn);
2145        case -995410646: /*partOf*/  return new Property("partOf", "Reference(Procedure|Observation|MedicationAdministration)", "A larger event of which this particular procedure is a component or step.", 0, java.lang.Integer.MAX_VALUE, partOf);
2146        case -892481550: /*status*/  return new Property("status", "code", "A code specifying the state of the procedure. Generally, this will be the in-progress or completed state.", 0, 1, status);
2147        case 2051346646: /*statusReason*/  return new Property("statusReason", "CodeableConcept", "Captures the reason for the current state of the procedure.", 0, 1, statusReason);
2148        case 50511102: /*category*/  return new Property("category", "CodeableConcept", "A code that classifies the procedure for searching, sorting and display purposes (e.g. \"Surgical Procedure\").", 0, java.lang.Integer.MAX_VALUE, category);
2149        case 3059181: /*code*/  return new Property("code", "CodeableConcept", "The specific procedure that is performed. Use text if the exact nature of the procedure cannot be coded (e.g. \"Laparoscopic Appendectomy\").", 0, 1, code);
2150        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group|Device|Practitioner|Organization|Location)", "On whom or on what the procedure was performed. This is usually an individual human, but can also be performed on animals, groups of humans or animals, organizations or practitioners (for licensing), locations or devices (for safety inspections or regulatory authorizations).  If the actual focus of the procedure is different from the subject, the focus element specifies the actual focus of the procedure.", 0, 1, subject);
2151        case 97604824: /*focus*/  return new Property("focus", "Reference(Patient|Group|RelatedPerson|Practitioner|Organization|CareTeam|PractitionerRole|Specimen)", "Who is the target of the procedure when it is not the subject of record only.  If focus is not present, then subject is the focus.  If focus is present and the subject is one of the targets of the procedure, include subject as a focus as well. If focus is present and the subject is not included in focus, it implies that the procedure was only targeted on the focus. For example, when a caregiver is given education for a patient, the caregiver would be the focus and the procedure record is associated with the subject (e.g. patient).  For example, use focus when recording the target of the education, training, or counseling is the parent or relative of a patient.", 0, 1, focus);
2152        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "The Encounter during which this Procedure was created or performed or to which the creation of this record is tightly associated.", 0, 1, encounter);
2153        case -2022646513: /*occurrence[x]*/  return new Property("occurrence[x]", "dateTime|Period|string|Age|Range|Timing", "Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, occurrence);
2154        case 1687874001: /*occurrence*/  return new Property("occurrence[x]", "dateTime|Period|string|Age|Range|Timing", "Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, occurrence);
2155        case -298443636: /*occurrenceDateTime*/  return new Property("occurrence[x]", "dateTime", "Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, occurrence);
2156        case 1397156594: /*occurrencePeriod*/  return new Property("occurrence[x]", "Period", "Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, occurrence);
2157        case 1496896834: /*occurrenceString*/  return new Property("occurrence[x]", "string", "Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, occurrence);
2158        case -2022672018: /*occurrenceAge*/  return new Property("occurrence[x]", "Age", "Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, occurrence);
2159        case 1847908844: /*occurrenceRange*/  return new Property("occurrence[x]", "Range", "Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, occurrence);
2160        case 1515218299: /*occurrenceTiming*/  return new Property("occurrence[x]", "Timing", "Estimated or actual date, date-time, period, or age when the procedure did occur or is occurring.  Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be captured.", 0, 1, occurrence);
2161        case -799233872: /*recorded*/  return new Property("recorded", "dateTime", "The date the occurrence of the procedure was first captured in the record regardless of Procedure.status (potentially after the occurrence of the event).", 0, 1, recorded);
2162        case -799233858: /*recorder*/  return new Property("recorder", "Reference(Patient|RelatedPerson|Practitioner|PractitionerRole)", "Individual who recorded the record and takes responsibility for its content.", 0, 1, recorder);
2163        case -241505587: /*reported[x]*/  return new Property("reported[x]", "boolean|Reference(Patient|RelatedPerson|Practitioner|PractitionerRole|Organization)", "Indicates if this record was captured as a secondary 'reported' record rather than as an original primary source-of-truth record.  It may also indicate the source of the report.", 0, 1, reported);
2164        case -427039533: /*reported*/  return new Property("reported[x]", "boolean|Reference(Patient|RelatedPerson|Practitioner|PractitionerRole|Organization)", "Indicates if this record was captured as a secondary 'reported' record rather than as an original primary source-of-truth record.  It may also indicate the source of the report.", 0, 1, reported);
2165        case 1219992533: /*reportedBoolean*/  return new Property("reported[x]", "boolean", "Indicates if this record was captured as a secondary 'reported' record rather than as an original primary source-of-truth record.  It may also indicate the source of the report.", 0, 1, reported);
2166        case 1198143416: /*reportedReference*/  return new Property("reported[x]", "Reference(Patient|RelatedPerson|Practitioner|PractitionerRole|Organization)", "Indicates if this record was captured as a secondary 'reported' record rather than as an original primary source-of-truth record.  It may also indicate the source of the report.", 0, 1, reported);
2167        case 481140686: /*performer*/  return new Property("performer", "", "Indicates who or what performed the procedure and how they were involved.", 0, java.lang.Integer.MAX_VALUE, performer);
2168        case 1901043637: /*location*/  return new Property("location", "Reference(Location)", "The location where the procedure actually happened.  E.g. a newborn at home, a tracheostomy at a restaurant.", 0, 1, location);
2169        case -934964668: /*reason*/  return new Property("reason", "CodeableReference(Condition|Observation|Procedure|DiagnosticReport|DocumentReference)", "The coded reason or reference why the procedure was performed. This may be a coded entity of some type, be present as text, or be a reference to one of several resources that justify the procedure.", 0, java.lang.Integer.MAX_VALUE, reason);
2170        case 1702620169: /*bodySite*/  return new Property("bodySite", "CodeableConcept", "Detailed and structured anatomical location information. Multiple locations are allowed - e.g. multiple punch biopsies of a lesion.", 0, java.lang.Integer.MAX_VALUE, bodySite);
2171        case -1106507950: /*outcome*/  return new Property("outcome", "CodeableConcept", "The outcome of the procedure - did it resolve the reasons for the procedure being performed?", 0, 1, outcome);
2172        case -934521548: /*report*/  return new Property("report", "Reference(DiagnosticReport|DocumentReference|Composition)", "This could be a histology result, pathology report, surgical report, etc.", 0, java.lang.Integer.MAX_VALUE, report);
2173        case -1644401602: /*complication*/  return new Property("complication", "CodeableReference(Condition)", "Any complications that occurred during the procedure, or in the immediate post-performance period. These are generally tracked separately from the notes, which will typically describe the procedure itself rather than any 'post procedure' issues.", 0, java.lang.Integer.MAX_VALUE, complication);
2174        case 301801004: /*followUp*/  return new Property("followUp", "CodeableConcept", "If the procedure required specific follow up - e.g. removal of sutures. The follow up may be represented as a simple note or could potentially be more complex, in which case the CarePlan resource can be used.", 0, java.lang.Integer.MAX_VALUE, followUp);
2175        case 3387378: /*note*/  return new Property("note", "Annotation", "Any other notes and comments about the procedure.", 0, java.lang.Integer.MAX_VALUE, note);
2176        case -1129235173: /*focalDevice*/  return new Property("focalDevice", "", "A device that is implanted, removed or otherwise manipulated (calibration, battery replacement, fitting a prosthesis, attaching a wound-vac, etc.) as a focal portion of the Procedure.", 0, java.lang.Integer.MAX_VALUE, focalDevice);
2177        case 3599293: /*used*/  return new Property("used", "CodeableReference(Device|Medication|Substance|BiologicallyDerivedProduct)", "Identifies medications, devices and any other substance used as part of the procedure.", 0, java.lang.Integer.MAX_VALUE, used);
2178        case 1922406657: /*supportingInfo*/  return new Property("supportingInfo", "Reference(Any)", "Other resources from the patient record that may be relevant to the procedure.  The information from these resources was either used to create the instance or is provided to help with its interpretation. This extension should not be used if more specific inline elements or extensions are available.", 0, java.lang.Integer.MAX_VALUE, supportingInfo);
2179        default: return super.getNamedProperty(_hash, _name, _checkValid);
2180        }
2181
2182      }
2183
2184      @Override
2185      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2186        switch (hash) {
2187        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
2188        case 8911915: /*instantiatesCanonical*/ return this.instantiatesCanonical == null ? new Base[0] : this.instantiatesCanonical.toArray(new Base[this.instantiatesCanonical.size()]); // CanonicalType
2189        case -1926393373: /*instantiatesUri*/ return this.instantiatesUri == null ? new Base[0] : this.instantiatesUri.toArray(new Base[this.instantiatesUri.size()]); // UriType
2190        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
2191        case -995410646: /*partOf*/ return this.partOf == null ? new Base[0] : this.partOf.toArray(new Base[this.partOf.size()]); // Reference
2192        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<EventStatus>
2193        case 2051346646: /*statusReason*/ return this.statusReason == null ? new Base[0] : new Base[] {this.statusReason}; // CodeableConcept
2194        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept
2195        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
2196        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
2197        case 97604824: /*focus*/ return this.focus == null ? new Base[0] : new Base[] {this.focus}; // Reference
2198        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
2199        case 1687874001: /*occurrence*/ return this.occurrence == null ? new Base[0] : new Base[] {this.occurrence}; // DataType
2200        case -799233872: /*recorded*/ return this.recorded == null ? new Base[0] : new Base[] {this.recorded}; // DateTimeType
2201        case -799233858: /*recorder*/ return this.recorder == null ? new Base[0] : new Base[] {this.recorder}; // Reference
2202        case -427039533: /*reported*/ return this.reported == null ? new Base[0] : new Base[] {this.reported}; // DataType
2203        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : this.performer.toArray(new Base[this.performer.size()]); // ProcedurePerformerComponent
2204        case 1901043637: /*location*/ return this.location == null ? new Base[0] : new Base[] {this.location}; // Reference
2205        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableReference
2206        case 1702620169: /*bodySite*/ return this.bodySite == null ? new Base[0] : this.bodySite.toArray(new Base[this.bodySite.size()]); // CodeableConcept
2207        case -1106507950: /*outcome*/ return this.outcome == null ? new Base[0] : new Base[] {this.outcome}; // CodeableConcept
2208        case -934521548: /*report*/ return this.report == null ? new Base[0] : this.report.toArray(new Base[this.report.size()]); // Reference
2209        case -1644401602: /*complication*/ return this.complication == null ? new Base[0] : this.complication.toArray(new Base[this.complication.size()]); // CodeableReference
2210        case 301801004: /*followUp*/ return this.followUp == null ? new Base[0] : this.followUp.toArray(new Base[this.followUp.size()]); // CodeableConcept
2211        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
2212        case -1129235173: /*focalDevice*/ return this.focalDevice == null ? new Base[0] : this.focalDevice.toArray(new Base[this.focalDevice.size()]); // ProcedureFocalDeviceComponent
2213        case 3599293: /*used*/ return this.used == null ? new Base[0] : this.used.toArray(new Base[this.used.size()]); // CodeableReference
2214        case 1922406657: /*supportingInfo*/ return this.supportingInfo == null ? new Base[0] : this.supportingInfo.toArray(new Base[this.supportingInfo.size()]); // Reference
2215        default: return super.getProperty(hash, name, checkValid);
2216        }
2217
2218      }
2219
2220      @Override
2221      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2222        switch (hash) {
2223        case -1618432855: // identifier
2224          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
2225          return value;
2226        case 8911915: // instantiatesCanonical
2227          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value)); // CanonicalType
2228          return value;
2229        case -1926393373: // instantiatesUri
2230          this.getInstantiatesUri().add(TypeConvertor.castToUri(value)); // UriType
2231          return value;
2232        case -332612366: // basedOn
2233          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
2234          return value;
2235        case -995410646: // partOf
2236          this.getPartOf().add(TypeConvertor.castToReference(value)); // Reference
2237          return value;
2238        case -892481550: // status
2239          value = new EventStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2240          this.status = (Enumeration) value; // Enumeration<EventStatus>
2241          return value;
2242        case 2051346646: // statusReason
2243          this.statusReason = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2244          return value;
2245        case 50511102: // category
2246          this.getCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2247          return value;
2248        case 3059181: // code
2249          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2250          return value;
2251        case -1867885268: // subject
2252          this.subject = TypeConvertor.castToReference(value); // Reference
2253          return value;
2254        case 97604824: // focus
2255          this.focus = TypeConvertor.castToReference(value); // Reference
2256          return value;
2257        case 1524132147: // encounter
2258          this.encounter = TypeConvertor.castToReference(value); // Reference
2259          return value;
2260        case 1687874001: // occurrence
2261          this.occurrence = TypeConvertor.castToType(value); // DataType
2262          return value;
2263        case -799233872: // recorded
2264          this.recorded = TypeConvertor.castToDateTime(value); // DateTimeType
2265          return value;
2266        case -799233858: // recorder
2267          this.recorder = TypeConvertor.castToReference(value); // Reference
2268          return value;
2269        case -427039533: // reported
2270          this.reported = TypeConvertor.castToType(value); // DataType
2271          return value;
2272        case 481140686: // performer
2273          this.getPerformer().add((ProcedurePerformerComponent) value); // ProcedurePerformerComponent
2274          return value;
2275        case 1901043637: // location
2276          this.location = TypeConvertor.castToReference(value); // Reference
2277          return value;
2278        case -934964668: // reason
2279          this.getReason().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
2280          return value;
2281        case 1702620169: // bodySite
2282          this.getBodySite().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2283          return value;
2284        case -1106507950: // outcome
2285          this.outcome = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2286          return value;
2287        case -934521548: // report
2288          this.getReport().add(TypeConvertor.castToReference(value)); // Reference
2289          return value;
2290        case -1644401602: // complication
2291          this.getComplication().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
2292          return value;
2293        case 301801004: // followUp
2294          this.getFollowUp().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2295          return value;
2296        case 3387378: // note
2297          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
2298          return value;
2299        case -1129235173: // focalDevice
2300          this.getFocalDevice().add((ProcedureFocalDeviceComponent) value); // ProcedureFocalDeviceComponent
2301          return value;
2302        case 3599293: // used
2303          this.getUsed().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
2304          return value;
2305        case 1922406657: // supportingInfo
2306          this.getSupportingInfo().add(TypeConvertor.castToReference(value)); // Reference
2307          return value;
2308        default: return super.setProperty(hash, name, value);
2309        }
2310
2311      }
2312
2313      @Override
2314      public Base setProperty(String name, Base value) throws FHIRException {
2315        if (name.equals("identifier")) {
2316          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
2317        } else if (name.equals("instantiatesCanonical")) {
2318          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value));
2319        } else if (name.equals("instantiatesUri")) {
2320          this.getInstantiatesUri().add(TypeConvertor.castToUri(value));
2321        } else if (name.equals("basedOn")) {
2322          this.getBasedOn().add(TypeConvertor.castToReference(value));
2323        } else if (name.equals("partOf")) {
2324          this.getPartOf().add(TypeConvertor.castToReference(value));
2325        } else if (name.equals("status")) {
2326          value = new EventStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2327          this.status = (Enumeration) value; // Enumeration<EventStatus>
2328        } else if (name.equals("statusReason")) {
2329          this.statusReason = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2330        } else if (name.equals("category")) {
2331          this.getCategory().add(TypeConvertor.castToCodeableConcept(value));
2332        } else if (name.equals("code")) {
2333          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2334        } else if (name.equals("subject")) {
2335          this.subject = TypeConvertor.castToReference(value); // Reference
2336        } else if (name.equals("focus")) {
2337          this.focus = TypeConvertor.castToReference(value); // Reference
2338        } else if (name.equals("encounter")) {
2339          this.encounter = TypeConvertor.castToReference(value); // Reference
2340        } else if (name.equals("occurrence[x]")) {
2341          this.occurrence = TypeConvertor.castToType(value); // DataType
2342        } else if (name.equals("recorded")) {
2343          this.recorded = TypeConvertor.castToDateTime(value); // DateTimeType
2344        } else if (name.equals("recorder")) {
2345          this.recorder = TypeConvertor.castToReference(value); // Reference
2346        } else if (name.equals("reported[x]")) {
2347          this.reported = TypeConvertor.castToType(value); // DataType
2348        } else if (name.equals("performer")) {
2349          this.getPerformer().add((ProcedurePerformerComponent) value);
2350        } else if (name.equals("location")) {
2351          this.location = TypeConvertor.castToReference(value); // Reference
2352        } else if (name.equals("reason")) {
2353          this.getReason().add(TypeConvertor.castToCodeableReference(value));
2354        } else if (name.equals("bodySite")) {
2355          this.getBodySite().add(TypeConvertor.castToCodeableConcept(value));
2356        } else if (name.equals("outcome")) {
2357          this.outcome = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2358        } else if (name.equals("report")) {
2359          this.getReport().add(TypeConvertor.castToReference(value));
2360        } else if (name.equals("complication")) {
2361          this.getComplication().add(TypeConvertor.castToCodeableReference(value));
2362        } else if (name.equals("followUp")) {
2363          this.getFollowUp().add(TypeConvertor.castToCodeableConcept(value));
2364        } else if (name.equals("note")) {
2365          this.getNote().add(TypeConvertor.castToAnnotation(value));
2366        } else if (name.equals("focalDevice")) {
2367          this.getFocalDevice().add((ProcedureFocalDeviceComponent) value);
2368        } else if (name.equals("used")) {
2369          this.getUsed().add(TypeConvertor.castToCodeableReference(value));
2370        } else if (name.equals("supportingInfo")) {
2371          this.getSupportingInfo().add(TypeConvertor.castToReference(value));
2372        } else
2373          return super.setProperty(name, value);
2374        return value;
2375      }
2376
2377      @Override
2378      public Base makeProperty(int hash, String name) throws FHIRException {
2379        switch (hash) {
2380        case -1618432855:  return addIdentifier(); 
2381        case 8911915:  return addInstantiatesCanonicalElement();
2382        case -1926393373:  return addInstantiatesUriElement();
2383        case -332612366:  return addBasedOn(); 
2384        case -995410646:  return addPartOf(); 
2385        case -892481550:  return getStatusElement();
2386        case 2051346646:  return getStatusReason();
2387        case 50511102:  return addCategory(); 
2388        case 3059181:  return getCode();
2389        case -1867885268:  return getSubject();
2390        case 97604824:  return getFocus();
2391        case 1524132147:  return getEncounter();
2392        case -2022646513:  return getOccurrence();
2393        case 1687874001:  return getOccurrence();
2394        case -799233872:  return getRecordedElement();
2395        case -799233858:  return getRecorder();
2396        case -241505587:  return getReported();
2397        case -427039533:  return getReported();
2398        case 481140686:  return addPerformer(); 
2399        case 1901043637:  return getLocation();
2400        case -934964668:  return addReason(); 
2401        case 1702620169:  return addBodySite(); 
2402        case -1106507950:  return getOutcome();
2403        case -934521548:  return addReport(); 
2404        case -1644401602:  return addComplication(); 
2405        case 301801004:  return addFollowUp(); 
2406        case 3387378:  return addNote(); 
2407        case -1129235173:  return addFocalDevice(); 
2408        case 3599293:  return addUsed(); 
2409        case 1922406657:  return addSupportingInfo(); 
2410        default: return super.makeProperty(hash, name);
2411        }
2412
2413      }
2414
2415      @Override
2416      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2417        switch (hash) {
2418        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2419        case 8911915: /*instantiatesCanonical*/ return new String[] {"canonical"};
2420        case -1926393373: /*instantiatesUri*/ return new String[] {"uri"};
2421        case -332612366: /*basedOn*/ return new String[] {"Reference"};
2422        case -995410646: /*partOf*/ return new String[] {"Reference"};
2423        case -892481550: /*status*/ return new String[] {"code"};
2424        case 2051346646: /*statusReason*/ return new String[] {"CodeableConcept"};
2425        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
2426        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
2427        case -1867885268: /*subject*/ return new String[] {"Reference"};
2428        case 97604824: /*focus*/ return new String[] {"Reference"};
2429        case 1524132147: /*encounter*/ return new String[] {"Reference"};
2430        case 1687874001: /*occurrence*/ return new String[] {"dateTime", "Period", "string", "Age", "Range", "Timing"};
2431        case -799233872: /*recorded*/ return new String[] {"dateTime"};
2432        case -799233858: /*recorder*/ return new String[] {"Reference"};
2433        case -427039533: /*reported*/ return new String[] {"boolean", "Reference"};
2434        case 481140686: /*performer*/ return new String[] {};
2435        case 1901043637: /*location*/ return new String[] {"Reference"};
2436        case -934964668: /*reason*/ return new String[] {"CodeableReference"};
2437        case 1702620169: /*bodySite*/ return new String[] {"CodeableConcept"};
2438        case -1106507950: /*outcome*/ return new String[] {"CodeableConcept"};
2439        case -934521548: /*report*/ return new String[] {"Reference"};
2440        case -1644401602: /*complication*/ return new String[] {"CodeableReference"};
2441        case 301801004: /*followUp*/ return new String[] {"CodeableConcept"};
2442        case 3387378: /*note*/ return new String[] {"Annotation"};
2443        case -1129235173: /*focalDevice*/ return new String[] {};
2444        case 3599293: /*used*/ return new String[] {"CodeableReference"};
2445        case 1922406657: /*supportingInfo*/ return new String[] {"Reference"};
2446        default: return super.getTypesForProperty(hash, name);
2447        }
2448
2449      }
2450
2451      @Override
2452      public Base addChild(String name) throws FHIRException {
2453        if (name.equals("identifier")) {
2454          return addIdentifier();
2455        }
2456        else if (name.equals("instantiatesCanonical")) {
2457          throw new FHIRException("Cannot call addChild on a singleton property Procedure.instantiatesCanonical");
2458        }
2459        else if (name.equals("instantiatesUri")) {
2460          throw new FHIRException("Cannot call addChild on a singleton property Procedure.instantiatesUri");
2461        }
2462        else if (name.equals("basedOn")) {
2463          return addBasedOn();
2464        }
2465        else if (name.equals("partOf")) {
2466          return addPartOf();
2467        }
2468        else if (name.equals("status")) {
2469          throw new FHIRException("Cannot call addChild on a singleton property Procedure.status");
2470        }
2471        else if (name.equals("statusReason")) {
2472          this.statusReason = new CodeableConcept();
2473          return this.statusReason;
2474        }
2475        else if (name.equals("category")) {
2476          return addCategory();
2477        }
2478        else if (name.equals("code")) {
2479          this.code = new CodeableConcept();
2480          return this.code;
2481        }
2482        else if (name.equals("subject")) {
2483          this.subject = new Reference();
2484          return this.subject;
2485        }
2486        else if (name.equals("focus")) {
2487          this.focus = new Reference();
2488          return this.focus;
2489        }
2490        else if (name.equals("encounter")) {
2491          this.encounter = new Reference();
2492          return this.encounter;
2493        }
2494        else if (name.equals("occurrenceDateTime")) {
2495          this.occurrence = new DateTimeType();
2496          return this.occurrence;
2497        }
2498        else if (name.equals("occurrencePeriod")) {
2499          this.occurrence = new Period();
2500          return this.occurrence;
2501        }
2502        else if (name.equals("occurrenceString")) {
2503          this.occurrence = new StringType();
2504          return this.occurrence;
2505        }
2506        else if (name.equals("occurrenceAge")) {
2507          this.occurrence = new Age();
2508          return this.occurrence;
2509        }
2510        else if (name.equals("occurrenceRange")) {
2511          this.occurrence = new Range();
2512          return this.occurrence;
2513        }
2514        else if (name.equals("occurrenceTiming")) {
2515          this.occurrence = new Timing();
2516          return this.occurrence;
2517        }
2518        else if (name.equals("recorded")) {
2519          throw new FHIRException("Cannot call addChild on a singleton property Procedure.recorded");
2520        }
2521        else if (name.equals("recorder")) {
2522          this.recorder = new Reference();
2523          return this.recorder;
2524        }
2525        else if (name.equals("reportedBoolean")) {
2526          this.reported = new BooleanType();
2527          return this.reported;
2528        }
2529        else if (name.equals("reportedReference")) {
2530          this.reported = new Reference();
2531          return this.reported;
2532        }
2533        else if (name.equals("performer")) {
2534          return addPerformer();
2535        }
2536        else if (name.equals("location")) {
2537          this.location = new Reference();
2538          return this.location;
2539        }
2540        else if (name.equals("reason")) {
2541          return addReason();
2542        }
2543        else if (name.equals("bodySite")) {
2544          return addBodySite();
2545        }
2546        else if (name.equals("outcome")) {
2547          this.outcome = new CodeableConcept();
2548          return this.outcome;
2549        }
2550        else if (name.equals("report")) {
2551          return addReport();
2552        }
2553        else if (name.equals("complication")) {
2554          return addComplication();
2555        }
2556        else if (name.equals("followUp")) {
2557          return addFollowUp();
2558        }
2559        else if (name.equals("note")) {
2560          return addNote();
2561        }
2562        else if (name.equals("focalDevice")) {
2563          return addFocalDevice();
2564        }
2565        else if (name.equals("used")) {
2566          return addUsed();
2567        }
2568        else if (name.equals("supportingInfo")) {
2569          return addSupportingInfo();
2570        }
2571        else
2572          return super.addChild(name);
2573      }
2574
2575  public String fhirType() {
2576    return "Procedure";
2577
2578  }
2579
2580      public Procedure copy() {
2581        Procedure dst = new Procedure();
2582        copyValues(dst);
2583        return dst;
2584      }
2585
2586      public void copyValues(Procedure dst) {
2587        super.copyValues(dst);
2588        if (identifier != null) {
2589          dst.identifier = new ArrayList<Identifier>();
2590          for (Identifier i : identifier)
2591            dst.identifier.add(i.copy());
2592        };
2593        if (instantiatesCanonical != null) {
2594          dst.instantiatesCanonical = new ArrayList<CanonicalType>();
2595          for (CanonicalType i : instantiatesCanonical)
2596            dst.instantiatesCanonical.add(i.copy());
2597        };
2598        if (instantiatesUri != null) {
2599          dst.instantiatesUri = new ArrayList<UriType>();
2600          for (UriType i : instantiatesUri)
2601            dst.instantiatesUri.add(i.copy());
2602        };
2603        if (basedOn != null) {
2604          dst.basedOn = new ArrayList<Reference>();
2605          for (Reference i : basedOn)
2606            dst.basedOn.add(i.copy());
2607        };
2608        if (partOf != null) {
2609          dst.partOf = new ArrayList<Reference>();
2610          for (Reference i : partOf)
2611            dst.partOf.add(i.copy());
2612        };
2613        dst.status = status == null ? null : status.copy();
2614        dst.statusReason = statusReason == null ? null : statusReason.copy();
2615        if (category != null) {
2616          dst.category = new ArrayList<CodeableConcept>();
2617          for (CodeableConcept i : category)
2618            dst.category.add(i.copy());
2619        };
2620        dst.code = code == null ? null : code.copy();
2621        dst.subject = subject == null ? null : subject.copy();
2622        dst.focus = focus == null ? null : focus.copy();
2623        dst.encounter = encounter == null ? null : encounter.copy();
2624        dst.occurrence = occurrence == null ? null : occurrence.copy();
2625        dst.recorded = recorded == null ? null : recorded.copy();
2626        dst.recorder = recorder == null ? null : recorder.copy();
2627        dst.reported = reported == null ? null : reported.copy();
2628        if (performer != null) {
2629          dst.performer = new ArrayList<ProcedurePerformerComponent>();
2630          for (ProcedurePerformerComponent i : performer)
2631            dst.performer.add(i.copy());
2632        };
2633        dst.location = location == null ? null : location.copy();
2634        if (reason != null) {
2635          dst.reason = new ArrayList<CodeableReference>();
2636          for (CodeableReference i : reason)
2637            dst.reason.add(i.copy());
2638        };
2639        if (bodySite != null) {
2640          dst.bodySite = new ArrayList<CodeableConcept>();
2641          for (CodeableConcept i : bodySite)
2642            dst.bodySite.add(i.copy());
2643        };
2644        dst.outcome = outcome == null ? null : outcome.copy();
2645        if (report != null) {
2646          dst.report = new ArrayList<Reference>();
2647          for (Reference i : report)
2648            dst.report.add(i.copy());
2649        };
2650        if (complication != null) {
2651          dst.complication = new ArrayList<CodeableReference>();
2652          for (CodeableReference i : complication)
2653            dst.complication.add(i.copy());
2654        };
2655        if (followUp != null) {
2656          dst.followUp = new ArrayList<CodeableConcept>();
2657          for (CodeableConcept i : followUp)
2658            dst.followUp.add(i.copy());
2659        };
2660        if (note != null) {
2661          dst.note = new ArrayList<Annotation>();
2662          for (Annotation i : note)
2663            dst.note.add(i.copy());
2664        };
2665        if (focalDevice != null) {
2666          dst.focalDevice = new ArrayList<ProcedureFocalDeviceComponent>();
2667          for (ProcedureFocalDeviceComponent i : focalDevice)
2668            dst.focalDevice.add(i.copy());
2669        };
2670        if (used != null) {
2671          dst.used = new ArrayList<CodeableReference>();
2672          for (CodeableReference i : used)
2673            dst.used.add(i.copy());
2674        };
2675        if (supportingInfo != null) {
2676          dst.supportingInfo = new ArrayList<Reference>();
2677          for (Reference i : supportingInfo)
2678            dst.supportingInfo.add(i.copy());
2679        };
2680      }
2681
2682      protected Procedure typedCopy() {
2683        return copy();
2684      }
2685
2686      @Override
2687      public boolean equalsDeep(Base other_) {
2688        if (!super.equalsDeep(other_))
2689          return false;
2690        if (!(other_ instanceof Procedure))
2691          return false;
2692        Procedure o = (Procedure) other_;
2693        return compareDeep(identifier, o.identifier, true) && compareDeep(instantiatesCanonical, o.instantiatesCanonical, true)
2694           && compareDeep(instantiatesUri, o.instantiatesUri, true) && compareDeep(basedOn, o.basedOn, true)
2695           && compareDeep(partOf, o.partOf, true) && compareDeep(status, o.status, true) && compareDeep(statusReason, o.statusReason, true)
2696           && compareDeep(category, o.category, true) && compareDeep(code, o.code, true) && compareDeep(subject, o.subject, true)
2697           && compareDeep(focus, o.focus, true) && compareDeep(encounter, o.encounter, true) && compareDeep(occurrence, o.occurrence, true)
2698           && compareDeep(recorded, o.recorded, true) && compareDeep(recorder, o.recorder, true) && compareDeep(reported, o.reported, true)
2699           && compareDeep(performer, o.performer, true) && compareDeep(location, o.location, true) && compareDeep(reason, o.reason, true)
2700           && compareDeep(bodySite, o.bodySite, true) && compareDeep(outcome, o.outcome, true) && compareDeep(report, o.report, true)
2701           && compareDeep(complication, o.complication, true) && compareDeep(followUp, o.followUp, true) && compareDeep(note, o.note, true)
2702           && compareDeep(focalDevice, o.focalDevice, true) && compareDeep(used, o.used, true) && compareDeep(supportingInfo, o.supportingInfo, true)
2703          ;
2704      }
2705
2706      @Override
2707      public boolean equalsShallow(Base other_) {
2708        if (!super.equalsShallow(other_))
2709          return false;
2710        if (!(other_ instanceof Procedure))
2711          return false;
2712        Procedure o = (Procedure) other_;
2713        return compareValues(instantiatesCanonical, o.instantiatesCanonical, true) && compareValues(instantiatesUri, o.instantiatesUri, true)
2714           && compareValues(status, o.status, true) && compareValues(recorded, o.recorded, true);
2715      }
2716
2717      public boolean isEmpty() {
2718        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, instantiatesCanonical
2719          , instantiatesUri, basedOn, partOf, status, statusReason, category, code, subject
2720          , focus, encounter, occurrence, recorded, recorder, reported, performer, location
2721          , reason, bodySite, outcome, report, complication, followUp, note, focalDevice
2722          , used, supportingInfo);
2723      }
2724
2725  @Override
2726  public ResourceType getResourceType() {
2727    return ResourceType.Procedure;
2728   }
2729
2730 /**
2731   * Search parameter: <b>based-on</b>
2732   * <p>
2733   * Description: <b>A request for this procedure</b><br>
2734   * Type: <b>reference</b><br>
2735   * Path: <b>Procedure.basedOn</b><br>
2736   * </p>
2737   */
2738  @SearchParamDefinition(name="based-on", path="Procedure.basedOn", description="A request for this procedure", type="reference", target={CarePlan.class, ServiceRequest.class } )
2739  public static final String SP_BASED_ON = "based-on";
2740 /**
2741   * <b>Fluent Client</b> search parameter constant for <b>based-on</b>
2742   * <p>
2743   * Description: <b>A request for this procedure</b><br>
2744   * Type: <b>reference</b><br>
2745   * Path: <b>Procedure.basedOn</b><br>
2746   * </p>
2747   */
2748  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASED_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASED_ON);
2749
2750/**
2751   * Constant for fluent queries to be used to add include statements. Specifies
2752   * the path value of "<b>Procedure:based-on</b>".
2753   */
2754  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASED_ON = new ca.uhn.fhir.model.api.Include("Procedure:based-on").toLocked();
2755
2756 /**
2757   * Search parameter: <b>category</b>
2758   * <p>
2759   * Description: <b>Classification of the procedure</b><br>
2760   * Type: <b>token</b><br>
2761   * Path: <b>Procedure.category</b><br>
2762   * </p>
2763   */
2764  @SearchParamDefinition(name="category", path="Procedure.category", description="Classification of the procedure", type="token" )
2765  public static final String SP_CATEGORY = "category";
2766 /**
2767   * <b>Fluent Client</b> search parameter constant for <b>category</b>
2768   * <p>
2769   * Description: <b>Classification of the procedure</b><br>
2770   * Type: <b>token</b><br>
2771   * Path: <b>Procedure.category</b><br>
2772   * </p>
2773   */
2774  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
2775
2776 /**
2777   * Search parameter: <b>instantiates-canonical</b>
2778   * <p>
2779   * Description: <b>Instantiates FHIR protocol or definition</b><br>
2780   * Type: <b>reference</b><br>
2781   * Path: <b>Procedure.instantiatesCanonical</b><br>
2782   * </p>
2783   */
2784  @SearchParamDefinition(name="instantiates-canonical", path="Procedure.instantiatesCanonical", description="Instantiates FHIR protocol or definition", type="reference", target={ActivityDefinition.class, Measure.class, OperationDefinition.class, PlanDefinition.class, Questionnaire.class } )
2785  public static final String SP_INSTANTIATES_CANONICAL = "instantiates-canonical";
2786 /**
2787   * <b>Fluent Client</b> search parameter constant for <b>instantiates-canonical</b>
2788   * <p>
2789   * Description: <b>Instantiates FHIR protocol or definition</b><br>
2790   * Type: <b>reference</b><br>
2791   * Path: <b>Procedure.instantiatesCanonical</b><br>
2792   * </p>
2793   */
2794  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INSTANTIATES_CANONICAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INSTANTIATES_CANONICAL);
2795
2796/**
2797   * Constant for fluent queries to be used to add include statements. Specifies
2798   * the path value of "<b>Procedure:instantiates-canonical</b>".
2799   */
2800  public static final ca.uhn.fhir.model.api.Include INCLUDE_INSTANTIATES_CANONICAL = new ca.uhn.fhir.model.api.Include("Procedure:instantiates-canonical").toLocked();
2801
2802 /**
2803   * Search parameter: <b>instantiates-uri</b>
2804   * <p>
2805   * Description: <b>Instantiates external protocol or definition</b><br>
2806   * Type: <b>uri</b><br>
2807   * Path: <b>Procedure.instantiatesUri</b><br>
2808   * </p>
2809   */
2810  @SearchParamDefinition(name="instantiates-uri", path="Procedure.instantiatesUri", description="Instantiates external protocol or definition", type="uri" )
2811  public static final String SP_INSTANTIATES_URI = "instantiates-uri";
2812 /**
2813   * <b>Fluent Client</b> search parameter constant for <b>instantiates-uri</b>
2814   * <p>
2815   * Description: <b>Instantiates external protocol or definition</b><br>
2816   * Type: <b>uri</b><br>
2817   * Path: <b>Procedure.instantiatesUri</b><br>
2818   * </p>
2819   */
2820  public static final ca.uhn.fhir.rest.gclient.UriClientParam INSTANTIATES_URI = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_INSTANTIATES_URI);
2821
2822 /**
2823   * Search parameter: <b>location</b>
2824   * <p>
2825   * Description: <b>Where the procedure happened</b><br>
2826   * Type: <b>reference</b><br>
2827   * Path: <b>Procedure.location</b><br>
2828   * </p>
2829   */
2830  @SearchParamDefinition(name="location", path="Procedure.location", description="Where the procedure happened", type="reference", target={Location.class } )
2831  public static final String SP_LOCATION = "location";
2832 /**
2833   * <b>Fluent Client</b> search parameter constant for <b>location</b>
2834   * <p>
2835   * Description: <b>Where the procedure happened</b><br>
2836   * Type: <b>reference</b><br>
2837   * Path: <b>Procedure.location</b><br>
2838   * </p>
2839   */
2840  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam LOCATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_LOCATION);
2841
2842/**
2843   * Constant for fluent queries to be used to add include statements. Specifies
2844   * the path value of "<b>Procedure:location</b>".
2845   */
2846  public static final ca.uhn.fhir.model.api.Include INCLUDE_LOCATION = new ca.uhn.fhir.model.api.Include("Procedure:location").toLocked();
2847
2848 /**
2849   * Search parameter: <b>part-of</b>
2850   * <p>
2851   * Description: <b>Part of referenced event</b><br>
2852   * Type: <b>reference</b><br>
2853   * Path: <b>Procedure.partOf</b><br>
2854   * </p>
2855   */
2856  @SearchParamDefinition(name="part-of", path="Procedure.partOf", description="Part of referenced event", type="reference", target={MedicationAdministration.class, Observation.class, Procedure.class } )
2857  public static final String SP_PART_OF = "part-of";
2858 /**
2859   * <b>Fluent Client</b> search parameter constant for <b>part-of</b>
2860   * <p>
2861   * Description: <b>Part of referenced event</b><br>
2862   * Type: <b>reference</b><br>
2863   * Path: <b>Procedure.partOf</b><br>
2864   * </p>
2865   */
2866  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PART_OF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PART_OF);
2867
2868/**
2869   * Constant for fluent queries to be used to add include statements. Specifies
2870   * the path value of "<b>Procedure:part-of</b>".
2871   */
2872  public static final ca.uhn.fhir.model.api.Include INCLUDE_PART_OF = new ca.uhn.fhir.model.api.Include("Procedure:part-of").toLocked();
2873
2874 /**
2875   * Search parameter: <b>performer</b>
2876   * <p>
2877   * Description: <b>Who performed the procedure</b><br>
2878   * Type: <b>reference</b><br>
2879   * Path: <b>Procedure.performer.actor</b><br>
2880   * </p>
2881   */
2882  @SearchParamDefinition(name="performer", path="Procedure.performer.actor", description="Who performed the procedure", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for RelatedPerson") }, target={CareTeam.class, Device.class, HealthcareService.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
2883  public static final String SP_PERFORMER = "performer";
2884 /**
2885   * <b>Fluent Client</b> search parameter constant for <b>performer</b>
2886   * <p>
2887   * Description: <b>Who performed the procedure</b><br>
2888   * Type: <b>reference</b><br>
2889   * Path: <b>Procedure.performer.actor</b><br>
2890   * </p>
2891   */
2892  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PERFORMER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PERFORMER);
2893
2894/**
2895   * Constant for fluent queries to be used to add include statements. Specifies
2896   * the path value of "<b>Procedure:performer</b>".
2897   */
2898  public static final ca.uhn.fhir.model.api.Include INCLUDE_PERFORMER = new ca.uhn.fhir.model.api.Include("Procedure:performer").toLocked();
2899
2900 /**
2901   * Search parameter: <b>reason-code</b>
2902   * <p>
2903   * Description: <b>Reference to a concept (by class)</b><br>
2904   * Type: <b>token</b><br>
2905   * Path: <b>Procedure.reason.concept</b><br>
2906   * </p>
2907   */
2908  @SearchParamDefinition(name="reason-code", path="Procedure.reason.concept", description="Reference to a concept (by class)", type="token" )
2909  public static final String SP_REASON_CODE = "reason-code";
2910 /**
2911   * <b>Fluent Client</b> search parameter constant for <b>reason-code</b>
2912   * <p>
2913   * Description: <b>Reference to a concept (by class)</b><br>
2914   * Type: <b>token</b><br>
2915   * Path: <b>Procedure.reason.concept</b><br>
2916   * </p>
2917   */
2918  public static final ca.uhn.fhir.rest.gclient.TokenClientParam REASON_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_REASON_CODE);
2919
2920 /**
2921   * Search parameter: <b>reason-reference</b>
2922   * <p>
2923   * Description: <b>Reference to a resource (by instance)</b><br>
2924   * Type: <b>reference</b><br>
2925   * Path: <b>Procedure.reason.reference</b><br>
2926   * </p>
2927   */
2928  @SearchParamDefinition(name="reason-reference", path="Procedure.reason.reference", description="Reference to a resource (by instance)", type="reference", target={Condition.class, DiagnosticReport.class, DocumentReference.class, Observation.class, Procedure.class } )
2929  public static final String SP_REASON_REFERENCE = "reason-reference";
2930 /**
2931   * <b>Fluent Client</b> search parameter constant for <b>reason-reference</b>
2932   * <p>
2933   * Description: <b>Reference to a resource (by instance)</b><br>
2934   * Type: <b>reference</b><br>
2935   * Path: <b>Procedure.reason.reference</b><br>
2936   * </p>
2937   */
2938  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REASON_REFERENCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REASON_REFERENCE);
2939
2940/**
2941   * Constant for fluent queries to be used to add include statements. Specifies
2942   * the path value of "<b>Procedure:reason-reference</b>".
2943   */
2944  public static final ca.uhn.fhir.model.api.Include INCLUDE_REASON_REFERENCE = new ca.uhn.fhir.model.api.Include("Procedure:reason-reference").toLocked();
2945
2946 /**
2947   * Search parameter: <b>report</b>
2948   * <p>
2949   * Description: <b>Any report resulting from the procedure</b><br>
2950   * Type: <b>reference</b><br>
2951   * Path: <b>Procedure.report</b><br>
2952   * </p>
2953   */
2954  @SearchParamDefinition(name="report", path="Procedure.report", description="Any report resulting from the procedure", type="reference", target={Composition.class, DiagnosticReport.class, DocumentReference.class } )
2955  public static final String SP_REPORT = "report";
2956 /**
2957   * <b>Fluent Client</b> search parameter constant for <b>report</b>
2958   * <p>
2959   * Description: <b>Any report resulting from the procedure</b><br>
2960   * Type: <b>reference</b><br>
2961   * Path: <b>Procedure.report</b><br>
2962   * </p>
2963   */
2964  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REPORT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REPORT);
2965
2966/**
2967   * Constant for fluent queries to be used to add include statements. Specifies
2968   * the path value of "<b>Procedure:report</b>".
2969   */
2970  public static final ca.uhn.fhir.model.api.Include INCLUDE_REPORT = new ca.uhn.fhir.model.api.Include("Procedure:report").toLocked();
2971
2972 /**
2973   * Search parameter: <b>status</b>
2974   * <p>
2975   * Description: <b>preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown</b><br>
2976   * Type: <b>token</b><br>
2977   * Path: <b>Procedure.status</b><br>
2978   * </p>
2979   */
2980  @SearchParamDefinition(name="status", path="Procedure.status", description="preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown", type="token" )
2981  public static final String SP_STATUS = "status";
2982 /**
2983   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2984   * <p>
2985   * Description: <b>preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown</b><br>
2986   * Type: <b>token</b><br>
2987   * Path: <b>Procedure.status</b><br>
2988   * </p>
2989   */
2990  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2991
2992 /**
2993   * Search parameter: <b>subject</b>
2994   * <p>
2995   * Description: <b>Search by subject</b><br>
2996   * Type: <b>reference</b><br>
2997   * Path: <b>Procedure.subject</b><br>
2998   * </p>
2999   */
3000  @SearchParamDefinition(name="subject", path="Procedure.subject", description="Search by subject", type="reference", target={Device.class, Group.class, Location.class, Organization.class, Patient.class, Practitioner.class } )
3001  public static final String SP_SUBJECT = "subject";
3002 /**
3003   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
3004   * <p>
3005   * Description: <b>Search by subject</b><br>
3006   * Type: <b>reference</b><br>
3007   * Path: <b>Procedure.subject</b><br>
3008   * </p>
3009   */
3010  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
3011
3012/**
3013   * Constant for fluent queries to be used to add include statements. Specifies
3014   * the path value of "<b>Procedure:subject</b>".
3015   */
3016  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("Procedure:subject").toLocked();
3017
3018 /**
3019   * Search parameter: <b>code</b>
3020   * <p>
3021   * Description: <b>Multiple Resources: 
3022
3023* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
3024* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
3025* [AuditEvent](auditevent.html): More specific code for the event
3026* [Basic](basic.html): Kind of Resource
3027* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
3028* [Condition](condition.html): Code for the condition
3029* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
3030* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
3031* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result
3032* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
3033* [ImagingSelection](imagingselection.html): The imaging selection status
3034* [List](list.html): What the purpose of this list is
3035* [Medication](medication.html): Returns medications for a specific code
3036* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
3037* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
3038* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
3039* [MedicationStatement](medicationstatement.html): Return statements of this medication code
3040* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
3041* [Observation](observation.html): The code of the observation type
3042* [Procedure](procedure.html): A code to identify a  procedure
3043* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
3044* [Task](task.html): Search by task code
3045</b><br>
3046   * Type: <b>token</b><br>
3047   * Path: <b>AdverseEvent.code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | AuditEvent.code | Basic.code | ChargeItem.code | Condition.code | DetectedIssue.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | ImagingSelection.status | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationStatement.medication.concept | NutritionIntake.code | Observation.code | Procedure.code | RequestOrchestration.code | Task.code</b><br>
3048   * </p>
3049   */
3050  @SearchParamDefinition(name="code", path="AdverseEvent.code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | AuditEvent.code | Basic.code | ChargeItem.code | Condition.code | DetectedIssue.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | ImagingSelection.status | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationStatement.medication.concept | NutritionIntake.code | Observation.code | Procedure.code | RequestOrchestration.code | Task.code", description="Multiple Resources: \r\n\r\n* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted\r\n* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance\r\n* [AuditEvent](auditevent.html): More specific code for the event\r\n* [Basic](basic.html): Kind of Resource\r\n* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code\r\n* [Condition](condition.html): Code for the condition\r\n* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.\r\n* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered\r\n* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code\r\n* [ImagingSelection](imagingselection.html): The imaging selection status\r\n* [List](list.html): What the purpose of this list is\r\n* [Medication](medication.html): Returns medications for a specific code\r\n* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code\r\n* [MedicationStatement](medicationstatement.html): Return statements of this medication code\r\n* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake\r\n* [Observation](observation.html): The code of the observation type\r\n* [Procedure](procedure.html): A code to identify a  procedure\r\n* [RequestOrchestration](requestorchestration.html): The code of the request orchestration\r\n* [Task](task.html): Search by task code\r\n", type="token" )
3051  public static final String SP_CODE = "code";
3052 /**
3053   * <b>Fluent Client</b> search parameter constant for <b>code</b>
3054   * <p>
3055   * Description: <b>Multiple Resources: 
3056
3057* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
3058* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
3059* [AuditEvent](auditevent.html): More specific code for the event
3060* [Basic](basic.html): Kind of Resource
3061* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
3062* [Condition](condition.html): Code for the condition
3063* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
3064* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
3065* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result
3066* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
3067* [ImagingSelection](imagingselection.html): The imaging selection status
3068* [List](list.html): What the purpose of this list is
3069* [Medication](medication.html): Returns medications for a specific code
3070* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
3071* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
3072* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
3073* [MedicationStatement](medicationstatement.html): Return statements of this medication code
3074* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
3075* [Observation](observation.html): The code of the observation type
3076* [Procedure](procedure.html): A code to identify a  procedure
3077* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
3078* [Task](task.html): Search by task code
3079</b><br>
3080   * Type: <b>token</b><br>
3081   * Path: <b>AdverseEvent.code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | AuditEvent.code | Basic.code | ChargeItem.code | Condition.code | DetectedIssue.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | ImagingSelection.status | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationStatement.medication.concept | NutritionIntake.code | Observation.code | Procedure.code | RequestOrchestration.code | Task.code</b><br>
3082   * </p>
3083   */
3084  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
3085
3086 /**
3087   * Search parameter: <b>date</b>
3088   * <p>
3089   * Description: <b>Multiple Resources: 
3090
3091* [AdverseEvent](adverseevent.html): When the event occurred
3092* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
3093* [Appointment](appointment.html): Appointment date/time.
3094* [AuditEvent](auditevent.html): Time when the event was recorded
3095* [CarePlan](careplan.html): Time period plan covers
3096* [CareTeam](careteam.html): A date within the coverage time period.
3097* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
3098* [Composition](composition.html): Composition editing time
3099* [Consent](consent.html): When consent was agreed to
3100* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
3101* [DocumentReference](documentreference.html): When this document reference was created
3102* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
3103* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
3104* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
3105* [Flag](flag.html): Time period when flag is active
3106* [Immunization](immunization.html): Vaccination  (non)-Administration Date
3107* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated
3108* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created
3109* [Invoice](invoice.html): Invoice date / posting date
3110* [List](list.html): When the list was prepared
3111* [MeasureReport](measurereport.html): The date of the measure report
3112* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication
3113* [Observation](observation.html): Clinically relevant time/time-period for observation
3114* [Procedure](procedure.html): When the procedure occurred or is occurring
3115* [ResearchSubject](researchsubject.html): Start and end of participation
3116* [RiskAssessment](riskassessment.html): When was assessment made?
3117* [SupplyRequest](supplyrequest.html): When the request was made
3118</b><br>
3119   * Type: <b>date</b><br>
3120   * Path: <b>AdverseEvent.occurrence.ofType(dateTime) | AdverseEvent.occurrence.ofType(Period) | AdverseEvent.occurrence.ofType(Timing) | AllergyIntolerance.recordedDate | (start | requestedPeriod.start).first() | AuditEvent.recorded | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.date | DiagnosticReport.effective.ofType(dateTime) | DiagnosticReport.effective.ofType(Period) | DocumentReference.date | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence.ofType(dateTime)) | ImmunizationEvaluation.date | ImmunizationRecommendation.date | Invoice.date | List.date | MeasureReport.date | NutritionIntake.occurrence.ofType(dateTime) | NutritionIntake.occurrence.ofType(Period) | Observation.effective.ofType(dateTime) | Observation.effective.ofType(Period) | Observation.effective.ofType(Timing) | Observation.effective.ofType(instant) | Procedure.occurrence.ofType(dateTime) | Procedure.occurrence.ofType(Period) | Procedure.occurrence.ofType(Timing) | ResearchSubject.period | (RiskAssessment.occurrence.ofType(dateTime)) | SupplyRequest.authoredOn</b><br>
3121   * </p>
3122   */
3123  @SearchParamDefinition(name="date", path="AdverseEvent.occurrence.ofType(dateTime) | AdverseEvent.occurrence.ofType(Period) | AdverseEvent.occurrence.ofType(Timing) | AllergyIntolerance.recordedDate | (start | requestedPeriod.start).first() | AuditEvent.recorded | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.date | DiagnosticReport.effective.ofType(dateTime) | DiagnosticReport.effective.ofType(Period) | DocumentReference.date | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence.ofType(dateTime)) | ImmunizationEvaluation.date | ImmunizationRecommendation.date | Invoice.date | List.date | MeasureReport.date | NutritionIntake.occurrence.ofType(dateTime) | NutritionIntake.occurrence.ofType(Period) | Observation.effective.ofType(dateTime) | Observation.effective.ofType(Period) | Observation.effective.ofType(Timing) | Observation.effective.ofType(instant) | Procedure.occurrence.ofType(dateTime) | Procedure.occurrence.ofType(Period) | Procedure.occurrence.ofType(Timing) | ResearchSubject.period | (RiskAssessment.occurrence.ofType(dateTime)) | SupplyRequest.authoredOn", description="Multiple Resources: \r\n\r\n* [AdverseEvent](adverseevent.html): When the event occurred\r\n* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded\r\n* [Appointment](appointment.html): Appointment date/time.\r\n* [AuditEvent](auditevent.html): Time when the event was recorded\r\n* [CarePlan](careplan.html): Time period plan covers\r\n* [CareTeam](careteam.html): A date within the coverage time period.\r\n* [ClinicalImpression](clinicalimpression.html): When the assessment was documented\r\n* [Composition](composition.html): Composition editing time\r\n* [Consent](consent.html): When consent was agreed to\r\n* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report\r\n* [DocumentReference](documentreference.html): When this document reference was created\r\n* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted\r\n* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period\r\n* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated\r\n* [Flag](flag.html): Time period when flag is active\r\n* [Immunization](immunization.html): Vaccination  (non)-Administration Date\r\n* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created\r\n* [Invoice](invoice.html): Invoice date / posting date\r\n* [List](list.html): When the list was prepared\r\n* [MeasureReport](measurereport.html): The date of the measure report\r\n* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication\r\n* [Observation](observation.html): Clinically relevant time/time-period for observation\r\n* [Procedure](procedure.html): When the procedure occurred or is occurring\r\n* [ResearchSubject](researchsubject.html): Start and end of participation\r\n* [RiskAssessment](riskassessment.html): When was assessment made?\r\n* [SupplyRequest](supplyrequest.html): When the request was made\r\n", type="date" )
3124  public static final String SP_DATE = "date";
3125 /**
3126   * <b>Fluent Client</b> search parameter constant for <b>date</b>
3127   * <p>
3128   * Description: <b>Multiple Resources: 
3129
3130* [AdverseEvent](adverseevent.html): When the event occurred
3131* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
3132* [Appointment](appointment.html): Appointment date/time.
3133* [AuditEvent](auditevent.html): Time when the event was recorded
3134* [CarePlan](careplan.html): Time period plan covers
3135* [CareTeam](careteam.html): A date within the coverage time period.
3136* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
3137* [Composition](composition.html): Composition editing time
3138* [Consent](consent.html): When consent was agreed to
3139* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
3140* [DocumentReference](documentreference.html): When this document reference was created
3141* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
3142* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
3143* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
3144* [Flag](flag.html): Time period when flag is active
3145* [Immunization](immunization.html): Vaccination  (non)-Administration Date
3146* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated
3147* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created
3148* [Invoice](invoice.html): Invoice date / posting date
3149* [List](list.html): When the list was prepared
3150* [MeasureReport](measurereport.html): The date of the measure report
3151* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication
3152* [Observation](observation.html): Clinically relevant time/time-period for observation
3153* [Procedure](procedure.html): When the procedure occurred or is occurring
3154* [ResearchSubject](researchsubject.html): Start and end of participation
3155* [RiskAssessment](riskassessment.html): When was assessment made?
3156* [SupplyRequest](supplyrequest.html): When the request was made
3157</b><br>
3158   * Type: <b>date</b><br>
3159   * Path: <b>AdverseEvent.occurrence.ofType(dateTime) | AdverseEvent.occurrence.ofType(Period) | AdverseEvent.occurrence.ofType(Timing) | AllergyIntolerance.recordedDate | (start | requestedPeriod.start).first() | AuditEvent.recorded | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.date | DiagnosticReport.effective.ofType(dateTime) | DiagnosticReport.effective.ofType(Period) | DocumentReference.date | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence.ofType(dateTime)) | ImmunizationEvaluation.date | ImmunizationRecommendation.date | Invoice.date | List.date | MeasureReport.date | NutritionIntake.occurrence.ofType(dateTime) | NutritionIntake.occurrence.ofType(Period) | Observation.effective.ofType(dateTime) | Observation.effective.ofType(Period) | Observation.effective.ofType(Timing) | Observation.effective.ofType(instant) | Procedure.occurrence.ofType(dateTime) | Procedure.occurrence.ofType(Period) | Procedure.occurrence.ofType(Timing) | ResearchSubject.period | (RiskAssessment.occurrence.ofType(dateTime)) | SupplyRequest.authoredOn</b><br>
3160   * </p>
3161   */
3162  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
3163
3164 /**
3165   * Search parameter: <b>encounter</b>
3166   * <p>
3167   * Description: <b>Multiple Resources: 
3168
3169* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
3170* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
3171* [ChargeItem](chargeitem.html): Encounter associated with event
3172* [Claim](claim.html): Encounters associated with a billed line item
3173* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
3174* [Communication](communication.html): The Encounter during which this Communication was created
3175* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
3176* [Composition](composition.html): Context of the Composition
3177* [Condition](condition.html): The Encounter during which this Condition was created
3178* [DeviceRequest](devicerequest.html): Encounter during which request was created
3179* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
3180* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
3181* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
3182* [Flag](flag.html): Alert relevant during encounter
3183* [ImagingStudy](imagingstudy.html): The context of the study
3184* [List](list.html): Context in which list created
3185* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
3186* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
3187* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
3188* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
3189* [Observation](observation.html): Encounter related to the observation
3190* [Procedure](procedure.html): The Encounter during which this Procedure was created
3191* [Provenance](provenance.html): Encounter related to the Provenance
3192* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
3193* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
3194* [RiskAssessment](riskassessment.html): Where was assessment performed?
3195* [ServiceRequest](servicerequest.html): An encounter in which this request is made
3196* [Task](task.html): Search by encounter
3197* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
3198</b><br>
3199   * Type: <b>reference</b><br>
3200   * Path: <b>AuditEvent.encounter | CarePlan.encounter | ChargeItem.encounter | Claim.item.encounter | ClinicalImpression.encounter | Communication.encounter | CommunicationRequest.encounter | Composition.encounter | Condition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | EncounterHistory.encounter | ExplanationOfBenefit.item.encounter | Flag.encounter | ImagingStudy.encounter | List.encounter | MedicationDispense.encounter | MedicationStatement.encounter | NutritionIntake.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | Provenance.encounter | QuestionnaireResponse.encounter | RequestOrchestration.encounter | RiskAssessment.encounter | ServiceRequest.encounter | Task.encounter | VisionPrescription.encounter</b><br>
3201   * </p>
3202   */
3203  @SearchParamDefinition(name="encounter", path="AuditEvent.encounter | CarePlan.encounter | ChargeItem.encounter | Claim.item.encounter | ClinicalImpression.encounter | Communication.encounter | CommunicationRequest.encounter | Composition.encounter | Condition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | EncounterHistory.encounter | ExplanationOfBenefit.item.encounter | Flag.encounter | ImagingStudy.encounter | List.encounter | MedicationDispense.encounter | MedicationStatement.encounter | NutritionIntake.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | Provenance.encounter | QuestionnaireResponse.encounter | RequestOrchestration.encounter | RiskAssessment.encounter | ServiceRequest.encounter | Task.encounter | VisionPrescription.encounter", description="Multiple Resources: \r\n\r\n* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent\r\n* [CarePlan](careplan.html): The Encounter during which this CarePlan was created\r\n* [ChargeItem](chargeitem.html): Encounter associated with event\r\n* [Claim](claim.html): Encounters associated with a billed line item\r\n* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created\r\n* [Communication](communication.html): The Encounter during which this Communication was created\r\n* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created\r\n* [Composition](composition.html): Context of the Composition\r\n* [Condition](condition.html): The Encounter during which this Condition was created\r\n* [DeviceRequest](devicerequest.html): Encounter during which request was created\r\n* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made\r\n* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values\r\n* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item\r\n* [Flag](flag.html): Alert relevant during encounter\r\n* [ImagingStudy](imagingstudy.html): The context of the study\r\n* [List](list.html): Context in which list created\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter\r\n* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier\r\n* [Observation](observation.html): Encounter related to the observation\r\n* [Procedure](procedure.html): The Encounter during which this Procedure was created\r\n* [Provenance](provenance.html): Encounter related to the Provenance\r\n* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response\r\n* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to\r\n* [RiskAssessment](riskassessment.html): Where was assessment performed?\r\n* [ServiceRequest](servicerequest.html): An encounter in which this request is made\r\n* [Task](task.html): Search by encounter\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Encounter") }, target={Encounter.class } )
3204  public static final String SP_ENCOUNTER = "encounter";
3205 /**
3206   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
3207   * <p>
3208   * Description: <b>Multiple Resources: 
3209
3210* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
3211* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
3212* [ChargeItem](chargeitem.html): Encounter associated with event
3213* [Claim](claim.html): Encounters associated with a billed line item
3214* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
3215* [Communication](communication.html): The Encounter during which this Communication was created
3216* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
3217* [Composition](composition.html): Context of the Composition
3218* [Condition](condition.html): The Encounter during which this Condition was created
3219* [DeviceRequest](devicerequest.html): Encounter during which request was created
3220* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
3221* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
3222* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
3223* [Flag](flag.html): Alert relevant during encounter
3224* [ImagingStudy](imagingstudy.html): The context of the study
3225* [List](list.html): Context in which list created
3226* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
3227* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
3228* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
3229* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
3230* [Observation](observation.html): Encounter related to the observation
3231* [Procedure](procedure.html): The Encounter during which this Procedure was created
3232* [Provenance](provenance.html): Encounter related to the Provenance
3233* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
3234* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
3235* [RiskAssessment](riskassessment.html): Where was assessment performed?
3236* [ServiceRequest](servicerequest.html): An encounter in which this request is made
3237* [Task](task.html): Search by encounter
3238* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
3239</b><br>
3240   * Type: <b>reference</b><br>
3241   * Path: <b>AuditEvent.encounter | CarePlan.encounter | ChargeItem.encounter | Claim.item.encounter | ClinicalImpression.encounter | Communication.encounter | CommunicationRequest.encounter | Composition.encounter | Condition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | EncounterHistory.encounter | ExplanationOfBenefit.item.encounter | Flag.encounter | ImagingStudy.encounter | List.encounter | MedicationDispense.encounter | MedicationStatement.encounter | NutritionIntake.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | Provenance.encounter | QuestionnaireResponse.encounter | RequestOrchestration.encounter | RiskAssessment.encounter | ServiceRequest.encounter | Task.encounter | VisionPrescription.encounter</b><br>
3242   * </p>
3243   */
3244  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
3245
3246/**
3247   * Constant for fluent queries to be used to add include statements. Specifies
3248   * the path value of "<b>Procedure:encounter</b>".
3249   */
3250  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("Procedure:encounter").toLocked();
3251
3252 /**
3253   * Search parameter: <b>identifier</b>
3254   * <p>
3255   * Description: <b>Multiple Resources: 
3256
3257* [Account](account.html): Account number
3258* [AdverseEvent](adverseevent.html): Business identifier for the event
3259* [AllergyIntolerance](allergyintolerance.html): External ids for this item
3260* [Appointment](appointment.html): An Identifier of the Appointment
3261* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
3262* [Basic](basic.html): Business identifier
3263* [BodyStructure](bodystructure.html): Bodystructure identifier
3264* [CarePlan](careplan.html): External Ids for this plan
3265* [CareTeam](careteam.html): External Ids for this team
3266* [ChargeItem](chargeitem.html): Business Identifier for item
3267* [Claim](claim.html): The primary identifier of the financial resource
3268* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
3269* [ClinicalImpression](clinicalimpression.html): Business identifier
3270* [Communication](communication.html): Unique identifier
3271* [CommunicationRequest](communicationrequest.html): Unique identifier
3272* [Composition](composition.html): Version-independent identifier for the Composition
3273* [Condition](condition.html): A unique identifier of the condition record
3274* [Consent](consent.html): Identifier for this record (external references)
3275* [Contract](contract.html): The identity of the contract
3276* [Coverage](coverage.html): The primary identifier of the insured and the coverage
3277* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
3278* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
3279* [DetectedIssue](detectedissue.html): Unique id for the detected issue
3280* [DeviceRequest](devicerequest.html): Business identifier for request/order
3281* [DeviceUsage](deviceusage.html): Search by identifier
3282* [DiagnosticReport](diagnosticreport.html): An identifier for the report
3283* [DocumentReference](documentreference.html): Identifier of the attachment binary
3284* [Encounter](encounter.html): Identifier(s) by which this encounter is known
3285* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
3286* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
3287* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
3288* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
3289* [Flag](flag.html): Business identifier
3290* [Goal](goal.html): External Ids for this goal
3291* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
3292* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
3293* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
3294* [Immunization](immunization.html): Business identifier
3295* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
3296* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
3297* [Invoice](invoice.html): Business Identifier for item
3298* [List](list.html): Business identifier
3299* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
3300* [Medication](medication.html): Returns medications with this external identifier
3301* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
3302* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
3303* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
3304* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
3305* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
3306* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
3307* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
3308* [Observation](observation.html): The unique id for a particular observation
3309* [Person](person.html): A person Identifier
3310* [Procedure](procedure.html): A unique identifier for a procedure
3311* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
3312* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
3313* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
3314* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
3315* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
3316* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
3317* [Specimen](specimen.html): The unique identifier associated with the specimen
3318* [SupplyDelivery](supplydelivery.html): External identifier
3319* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
3320* [Task](task.html): Search for a task instance by its business identifier
3321* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
3322</b><br>
3323   * Type: <b>token</b><br>
3324   * 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>
3325   * </p>
3326   */
3327  @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" )
3328  public static final String SP_IDENTIFIER = "identifier";
3329 /**
3330   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
3331   * <p>
3332   * Description: <b>Multiple Resources: 
3333
3334* [Account](account.html): Account number
3335* [AdverseEvent](adverseevent.html): Business identifier for the event
3336* [AllergyIntolerance](allergyintolerance.html): External ids for this item
3337* [Appointment](appointment.html): An Identifier of the Appointment
3338* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
3339* [Basic](basic.html): Business identifier
3340* [BodyStructure](bodystructure.html): Bodystructure identifier
3341* [CarePlan](careplan.html): External Ids for this plan
3342* [CareTeam](careteam.html): External Ids for this team
3343* [ChargeItem](chargeitem.html): Business Identifier for item
3344* [Claim](claim.html): The primary identifier of the financial resource
3345* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
3346* [ClinicalImpression](clinicalimpression.html): Business identifier
3347* [Communication](communication.html): Unique identifier
3348* [CommunicationRequest](communicationrequest.html): Unique identifier
3349* [Composition](composition.html): Version-independent identifier for the Composition
3350* [Condition](condition.html): A unique identifier of the condition record
3351* [Consent](consent.html): Identifier for this record (external references)
3352* [Contract](contract.html): The identity of the contract
3353* [Coverage](coverage.html): The primary identifier of the insured and the coverage
3354* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
3355* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
3356* [DetectedIssue](detectedissue.html): Unique id for the detected issue
3357* [DeviceRequest](devicerequest.html): Business identifier for request/order
3358* [DeviceUsage](deviceusage.html): Search by identifier
3359* [DiagnosticReport](diagnosticreport.html): An identifier for the report
3360* [DocumentReference](documentreference.html): Identifier of the attachment binary
3361* [Encounter](encounter.html): Identifier(s) by which this encounter is known
3362* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
3363* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
3364* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
3365* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
3366* [Flag](flag.html): Business identifier
3367* [Goal](goal.html): External Ids for this goal
3368* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
3369* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
3370* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
3371* [Immunization](immunization.html): Business identifier
3372* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
3373* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
3374* [Invoice](invoice.html): Business Identifier for item
3375* [List](list.html): Business identifier
3376* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
3377* [Medication](medication.html): Returns medications with this external identifier
3378* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
3379* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
3380* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
3381* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
3382* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
3383* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
3384* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
3385* [Observation](observation.html): The unique id for a particular observation
3386* [Person](person.html): A person Identifier
3387* [Procedure](procedure.html): A unique identifier for a procedure
3388* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
3389* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
3390* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
3391* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
3392* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
3393* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
3394* [Specimen](specimen.html): The unique identifier associated with the specimen
3395* [SupplyDelivery](supplydelivery.html): External identifier
3396* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
3397* [Task](task.html): Search for a task instance by its business identifier
3398* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
3399</b><br>
3400   * Type: <b>token</b><br>
3401   * 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>
3402   * </p>
3403   */
3404  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
3405
3406 /**
3407   * Search parameter: <b>patient</b>
3408   * <p>
3409   * Description: <b>Multiple Resources: 
3410
3411* [Account](account.html): The entity that caused the expenses
3412* [AdverseEvent](adverseevent.html): Subject impacted by event
3413* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
3414* [Appointment](appointment.html): One of the individuals of the appointment is this patient
3415* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
3416* [AuditEvent](auditevent.html): Where the activity involved patient data
3417* [Basic](basic.html): Identifies the focus of this resource
3418* [BodyStructure](bodystructure.html): Who this is about
3419* [CarePlan](careplan.html): Who the care plan is for
3420* [CareTeam](careteam.html): Who care team is for
3421* [ChargeItem](chargeitem.html): Individual service was done for/to
3422* [Claim](claim.html): Patient receiving the products or services
3423* [ClaimResponse](claimresponse.html): The subject of care
3424* [ClinicalImpression](clinicalimpression.html): Patient assessed
3425* [Communication](communication.html): Focus of message
3426* [CommunicationRequest](communicationrequest.html): Focus of message
3427* [Composition](composition.html): Who and/or what the composition is about
3428* [Condition](condition.html): Who has the condition?
3429* [Consent](consent.html): Who the consent applies to
3430* [Contract](contract.html): The identity of the subject of the contract (if a patient)
3431* [Coverage](coverage.html): Retrieve coverages for a patient
3432* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
3433* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
3434* [DetectedIssue](detectedissue.html): Associated patient
3435* [DeviceRequest](devicerequest.html): Individual the service is ordered for
3436* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
3437* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
3438* [DocumentReference](documentreference.html): Who/what is the subject of the document
3439* [Encounter](encounter.html): The patient present at the encounter
3440* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
3441* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
3442* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
3443* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
3444* [Flag](flag.html): The identity of a subject to list flags for
3445* [Goal](goal.html): Who this goal is intended for
3446* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
3447* [ImagingSelection](imagingselection.html): Who the study is about
3448* [ImagingStudy](imagingstudy.html): Who the study is about
3449* [Immunization](immunization.html): The patient for the vaccination record
3450* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
3451* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
3452* [Invoice](invoice.html): Recipient(s) of goods and services
3453* [List](list.html): If all resources have the same subject
3454* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
3455* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
3456* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
3457* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
3458* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
3459* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
3460* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
3461* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
3462* [Observation](observation.html): The subject that the observation is about (if patient)
3463* [Person](person.html): The Person links to this Patient
3464* [Procedure](procedure.html): Search by subject - a patient
3465* [Provenance](provenance.html): Where the activity involved patient data
3466* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
3467* [RelatedPerson](relatedperson.html): The patient this related person is related to
3468* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
3469* [ResearchSubject](researchsubject.html): Who or what is part of study
3470* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
3471* [ServiceRequest](servicerequest.html): Search by subject - a patient
3472* [Specimen](specimen.html): The patient the specimen comes from
3473* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
3474* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
3475* [Task](task.html): Search by patient
3476* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
3477</b><br>
3478   * Type: <b>reference</b><br>
3479   * 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>
3480   * </p>
3481   */
3482  @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 } )
3483  public static final String SP_PATIENT = "patient";
3484 /**
3485   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
3486   * <p>
3487   * Description: <b>Multiple Resources: 
3488
3489* [Account](account.html): The entity that caused the expenses
3490* [AdverseEvent](adverseevent.html): Subject impacted by event
3491* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
3492* [Appointment](appointment.html): One of the individuals of the appointment is this patient
3493* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
3494* [AuditEvent](auditevent.html): Where the activity involved patient data
3495* [Basic](basic.html): Identifies the focus of this resource
3496* [BodyStructure](bodystructure.html): Who this is about
3497* [CarePlan](careplan.html): Who the care plan is for
3498* [CareTeam](careteam.html): Who care team is for
3499* [ChargeItem](chargeitem.html): Individual service was done for/to
3500* [Claim](claim.html): Patient receiving the products or services
3501* [ClaimResponse](claimresponse.html): The subject of care
3502* [ClinicalImpression](clinicalimpression.html): Patient assessed
3503* [Communication](communication.html): Focus of message
3504* [CommunicationRequest](communicationrequest.html): Focus of message
3505* [Composition](composition.html): Who and/or what the composition is about
3506* [Condition](condition.html): Who has the condition?
3507* [Consent](consent.html): Who the consent applies to
3508* [Contract](contract.html): The identity of the subject of the contract (if a patient)
3509* [Coverage](coverage.html): Retrieve coverages for a patient
3510* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
3511* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
3512* [DetectedIssue](detectedissue.html): Associated patient
3513* [DeviceRequest](devicerequest.html): Individual the service is ordered for
3514* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
3515* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
3516* [DocumentReference](documentreference.html): Who/what is the subject of the document
3517* [Encounter](encounter.html): The patient present at the encounter
3518* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
3519* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
3520* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
3521* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
3522* [Flag](flag.html): The identity of a subject to list flags for
3523* [Goal](goal.html): Who this goal is intended for
3524* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
3525* [ImagingSelection](imagingselection.html): Who the study is about
3526* [ImagingStudy](imagingstudy.html): Who the study is about
3527* [Immunization](immunization.html): The patient for the vaccination record
3528* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
3529* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
3530* [Invoice](invoice.html): Recipient(s) of goods and services
3531* [List](list.html): If all resources have the same subject
3532* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
3533* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
3534* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
3535* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
3536* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
3537* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
3538* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
3539* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
3540* [Observation](observation.html): The subject that the observation is about (if patient)
3541* [Person](person.html): The Person links to this Patient
3542* [Procedure](procedure.html): Search by subject - a patient
3543* [Provenance](provenance.html): Where the activity involved patient data
3544* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
3545* [RelatedPerson](relatedperson.html): The patient this related person is related to
3546* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
3547* [ResearchSubject](researchsubject.html): Who or what is part of study
3548* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
3549* [ServiceRequest](servicerequest.html): Search by subject - a patient
3550* [Specimen](specimen.html): The patient the specimen comes from
3551* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
3552* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
3553* [Task](task.html): Search by patient
3554* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
3555</b><br>
3556   * Type: <b>reference</b><br>
3557   * 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>
3558   * </p>
3559   */
3560  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
3561
3562/**
3563   * Constant for fluent queries to be used to add include statements. Specifies
3564   * the path value of "<b>Procedure:patient</b>".
3565   */
3566  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("Procedure:patient").toLocked();
3567
3568
3569}
3570