001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * A record of a request for service such as diagnostic investigations, treatments, or operations to be performed.
052 */
053@ResourceDef(name="ServiceRequest", profile="http://hl7.org/fhir/StructureDefinition/ServiceRequest")
054public class ServiceRequest extends DomainResource {
055
056    @Block()
057    public static class ServiceRequestOrderDetailComponent extends BackboneElement implements IBaseBackboneElement {
058        /**
059         * Indicates the context of the order details by reference.
060         */
061        @Child(name = "parameterFocus", type = {CodeableReference.class}, order=1, min=0, max=1, modifier=false, summary=false)
062        @Description(shortDefinition="The context of the order details by reference", formalDefinition="Indicates the context of the order details by reference." )
063        protected CodeableReference parameterFocus;
064
065        /**
066         * The parameter details for the service being requested.
067         */
068        @Child(name = "parameter", type = {}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
069        @Description(shortDefinition="The parameter details for the service being requested", formalDefinition="The parameter details for the service being requested." )
070        protected List<ServiceRequestOrderDetailParameterComponent> parameter;
071
072        private static final long serialVersionUID = -404214439L;
073
074    /**
075     * Constructor
076     */
077      public ServiceRequestOrderDetailComponent() {
078        super();
079      }
080
081        /**
082     * Constructor
083     */
084      public ServiceRequestOrderDetailComponent(ServiceRequestOrderDetailParameterComponent parameter) {
085        super();
086        this.addParameter(parameter);
087      }
088
089        /**
090         * @return {@link #parameterFocus} (Indicates the context of the order details by reference.)
091         */
092        public CodeableReference getParameterFocus() { 
093          if (this.parameterFocus == null)
094            if (Configuration.errorOnAutoCreate())
095              throw new Error("Attempt to auto-create ServiceRequestOrderDetailComponent.parameterFocus");
096            else if (Configuration.doAutoCreate())
097              this.parameterFocus = new CodeableReference(); // cc
098          return this.parameterFocus;
099        }
100
101        public boolean hasParameterFocus() { 
102          return this.parameterFocus != null && !this.parameterFocus.isEmpty();
103        }
104
105        /**
106         * @param value {@link #parameterFocus} (Indicates the context of the order details by reference.)
107         */
108        public ServiceRequestOrderDetailComponent setParameterFocus(CodeableReference value) { 
109          this.parameterFocus = value;
110          return this;
111        }
112
113        /**
114         * @return {@link #parameter} (The parameter details for the service being requested.)
115         */
116        public List<ServiceRequestOrderDetailParameterComponent> getParameter() { 
117          if (this.parameter == null)
118            this.parameter = new ArrayList<ServiceRequestOrderDetailParameterComponent>();
119          return this.parameter;
120        }
121
122        /**
123         * @return Returns a reference to <code>this</code> for easy method chaining
124         */
125        public ServiceRequestOrderDetailComponent setParameter(List<ServiceRequestOrderDetailParameterComponent> theParameter) { 
126          this.parameter = theParameter;
127          return this;
128        }
129
130        public boolean hasParameter() { 
131          if (this.parameter == null)
132            return false;
133          for (ServiceRequestOrderDetailParameterComponent item : this.parameter)
134            if (!item.isEmpty())
135              return true;
136          return false;
137        }
138
139        public ServiceRequestOrderDetailParameterComponent addParameter() { //3
140          ServiceRequestOrderDetailParameterComponent t = new ServiceRequestOrderDetailParameterComponent();
141          if (this.parameter == null)
142            this.parameter = new ArrayList<ServiceRequestOrderDetailParameterComponent>();
143          this.parameter.add(t);
144          return t;
145        }
146
147        public ServiceRequestOrderDetailComponent addParameter(ServiceRequestOrderDetailParameterComponent t) { //3
148          if (t == null)
149            return this;
150          if (this.parameter == null)
151            this.parameter = new ArrayList<ServiceRequestOrderDetailParameterComponent>();
152          this.parameter.add(t);
153          return this;
154        }
155
156        /**
157         * @return The first repetition of repeating field {@link #parameter}, creating it if it does not already exist {3}
158         */
159        public ServiceRequestOrderDetailParameterComponent getParameterFirstRep() { 
160          if (getParameter().isEmpty()) {
161            addParameter();
162          }
163          return getParameter().get(0);
164        }
165
166        protected void listChildren(List<Property> children) {
167          super.listChildren(children);
168          children.add(new Property("parameterFocus", "CodeableReference(Device|DeviceDefinition|DeviceRequest|SupplyRequest|Medication|MedicationRequest|BiologicallyDerivedProduct|Substance)", "Indicates the context of the order details by reference.", 0, 1, parameterFocus));
169          children.add(new Property("parameter", "", "The parameter details for the service being requested.", 0, java.lang.Integer.MAX_VALUE, parameter));
170        }
171
172        @Override
173        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
174          switch (_hash) {
175          case 1110086319: /*parameterFocus*/  return new Property("parameterFocus", "CodeableReference(Device|DeviceDefinition|DeviceRequest|SupplyRequest|Medication|MedicationRequest|BiologicallyDerivedProduct|Substance)", "Indicates the context of the order details by reference.", 0, 1, parameterFocus);
176          case 1954460585: /*parameter*/  return new Property("parameter", "", "The parameter details for the service being requested.", 0, java.lang.Integer.MAX_VALUE, parameter);
177          default: return super.getNamedProperty(_hash, _name, _checkValid);
178          }
179
180        }
181
182      @Override
183      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
184        switch (hash) {
185        case 1110086319: /*parameterFocus*/ return this.parameterFocus == null ? new Base[0] : new Base[] {this.parameterFocus}; // CodeableReference
186        case 1954460585: /*parameter*/ return this.parameter == null ? new Base[0] : this.parameter.toArray(new Base[this.parameter.size()]); // ServiceRequestOrderDetailParameterComponent
187        default: return super.getProperty(hash, name, checkValid);
188        }
189
190      }
191
192      @Override
193      public Base setProperty(int hash, String name, Base value) throws FHIRException {
194        switch (hash) {
195        case 1110086319: // parameterFocus
196          this.parameterFocus = TypeConvertor.castToCodeableReference(value); // CodeableReference
197          return value;
198        case 1954460585: // parameter
199          this.getParameter().add((ServiceRequestOrderDetailParameterComponent) value); // ServiceRequestOrderDetailParameterComponent
200          return value;
201        default: return super.setProperty(hash, name, value);
202        }
203
204      }
205
206      @Override
207      public Base setProperty(String name, Base value) throws FHIRException {
208        if (name.equals("parameterFocus")) {
209          this.parameterFocus = TypeConvertor.castToCodeableReference(value); // CodeableReference
210        } else if (name.equals("parameter")) {
211          this.getParameter().add((ServiceRequestOrderDetailParameterComponent) value);
212        } else
213          return super.setProperty(name, value);
214        return value;
215      }
216
217  @Override
218  public void removeChild(String name, Base value) throws FHIRException {
219        if (name.equals("parameterFocus")) {
220          this.parameterFocus = null;
221        } else if (name.equals("parameter")) {
222          this.getParameter().remove((ServiceRequestOrderDetailParameterComponent) value);
223        } else
224          super.removeChild(name, value);
225        
226      }
227
228      @Override
229      public Base makeProperty(int hash, String name) throws FHIRException {
230        switch (hash) {
231        case 1110086319:  return getParameterFocus();
232        case 1954460585:  return addParameter(); 
233        default: return super.makeProperty(hash, name);
234        }
235
236      }
237
238      @Override
239      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
240        switch (hash) {
241        case 1110086319: /*parameterFocus*/ return new String[] {"CodeableReference"};
242        case 1954460585: /*parameter*/ return new String[] {};
243        default: return super.getTypesForProperty(hash, name);
244        }
245
246      }
247
248      @Override
249      public Base addChild(String name) throws FHIRException {
250        if (name.equals("parameterFocus")) {
251          this.parameterFocus = new CodeableReference();
252          return this.parameterFocus;
253        }
254        else if (name.equals("parameter")) {
255          return addParameter();
256        }
257        else
258          return super.addChild(name);
259      }
260
261      public ServiceRequestOrderDetailComponent copy() {
262        ServiceRequestOrderDetailComponent dst = new ServiceRequestOrderDetailComponent();
263        copyValues(dst);
264        return dst;
265      }
266
267      public void copyValues(ServiceRequestOrderDetailComponent dst) {
268        super.copyValues(dst);
269        dst.parameterFocus = parameterFocus == null ? null : parameterFocus.copy();
270        if (parameter != null) {
271          dst.parameter = new ArrayList<ServiceRequestOrderDetailParameterComponent>();
272          for (ServiceRequestOrderDetailParameterComponent i : parameter)
273            dst.parameter.add(i.copy());
274        };
275      }
276
277      @Override
278      public boolean equalsDeep(Base other_) {
279        if (!super.equalsDeep(other_))
280          return false;
281        if (!(other_ instanceof ServiceRequestOrderDetailComponent))
282          return false;
283        ServiceRequestOrderDetailComponent o = (ServiceRequestOrderDetailComponent) other_;
284        return compareDeep(parameterFocus, o.parameterFocus, true) && compareDeep(parameter, o.parameter, true)
285          ;
286      }
287
288      @Override
289      public boolean equalsShallow(Base other_) {
290        if (!super.equalsShallow(other_))
291          return false;
292        if (!(other_ instanceof ServiceRequestOrderDetailComponent))
293          return false;
294        ServiceRequestOrderDetailComponent o = (ServiceRequestOrderDetailComponent) other_;
295        return true;
296      }
297
298      public boolean isEmpty() {
299        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(parameterFocus, parameter
300          );
301      }
302
303  public String fhirType() {
304    return "ServiceRequest.orderDetail";
305
306  }
307
308  }
309
310    @Block()
311    public static class ServiceRequestOrderDetailParameterComponent extends BackboneElement implements IBaseBackboneElement {
312        /**
313         * A value representing the additional detail or instructions for the order (e.g., catheter insertion, body elevation, descriptive device configuration and/or setting instructions).
314         */
315        @Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=true)
316        @Description(shortDefinition="The detail of the order being requested", formalDefinition="A value representing the additional detail or instructions for the order (e.g., catheter insertion, body elevation, descriptive device configuration and/or setting instructions)." )
317        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/servicerequest-orderdetail-parameter-code")
318        protected CodeableConcept code;
319
320        /**
321         * Indicates a value for the order detail.
322         */
323        @Child(name = "value", type = {Quantity.class, Ratio.class, Range.class, BooleanType.class, CodeableConcept.class, StringType.class, Period.class}, order=2, min=1, max=1, modifier=false, summary=true)
324        @Description(shortDefinition="The value for the order detail", formalDefinition="Indicates a value for the order detail." )
325        protected DataType value;
326
327        private static final long serialVersionUID = -1950789033L;
328
329    /**
330     * Constructor
331     */
332      public ServiceRequestOrderDetailParameterComponent() {
333        super();
334      }
335
336    /**
337     * Constructor
338     */
339      public ServiceRequestOrderDetailParameterComponent(CodeableConcept code, DataType value) {
340        super();
341        this.setCode(code);
342        this.setValue(value);
343      }
344
345        /**
346         * @return {@link #code} (A value representing the additional detail or instructions for the order (e.g., catheter insertion, body elevation, descriptive device configuration and/or setting instructions).)
347         */
348        public CodeableConcept getCode() { 
349          if (this.code == null)
350            if (Configuration.errorOnAutoCreate())
351              throw new Error("Attempt to auto-create ServiceRequestOrderDetailParameterComponent.code");
352            else if (Configuration.doAutoCreate())
353              this.code = new CodeableConcept(); // cc
354          return this.code;
355        }
356
357        public boolean hasCode() { 
358          return this.code != null && !this.code.isEmpty();
359        }
360
361        /**
362         * @param value {@link #code} (A value representing the additional detail or instructions for the order (e.g., catheter insertion, body elevation, descriptive device configuration and/or setting instructions).)
363         */
364        public ServiceRequestOrderDetailParameterComponent setCode(CodeableConcept value) { 
365          this.code = value;
366          return this;
367        }
368
369        /**
370         * @return {@link #value} (Indicates a value for the order detail.)
371         */
372        public DataType getValue() { 
373          return this.value;
374        }
375
376        /**
377         * @return {@link #value} (Indicates a value for the order detail.)
378         */
379        public Quantity getValueQuantity() throws FHIRException { 
380          if (this.value == null)
381            this.value = new Quantity();
382          if (!(this.value instanceof Quantity))
383            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.value.getClass().getName()+" was encountered");
384          return (Quantity) this.value;
385        }
386
387        public boolean hasValueQuantity() { 
388          return this != null && this.value instanceof Quantity;
389        }
390
391        /**
392         * @return {@link #value} (Indicates a value for the order detail.)
393         */
394        public Ratio getValueRatio() throws FHIRException { 
395          if (this.value == null)
396            this.value = new Ratio();
397          if (!(this.value instanceof Ratio))
398            throw new FHIRException("Type mismatch: the type Ratio was expected, but "+this.value.getClass().getName()+" was encountered");
399          return (Ratio) this.value;
400        }
401
402        public boolean hasValueRatio() { 
403          return this != null && this.value instanceof Ratio;
404        }
405
406        /**
407         * @return {@link #value} (Indicates a value for the order detail.)
408         */
409        public Range getValueRange() throws FHIRException { 
410          if (this.value == null)
411            this.value = new Range();
412          if (!(this.value instanceof Range))
413            throw new FHIRException("Type mismatch: the type Range was expected, but "+this.value.getClass().getName()+" was encountered");
414          return (Range) this.value;
415        }
416
417        public boolean hasValueRange() { 
418          return this != null && this.value instanceof Range;
419        }
420
421        /**
422         * @return {@link #value} (Indicates a value for the order detail.)
423         */
424        public BooleanType getValueBooleanType() throws FHIRException { 
425          if (this.value == null)
426            this.value = new BooleanType();
427          if (!(this.value instanceof BooleanType))
428            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered");
429          return (BooleanType) this.value;
430        }
431
432        public boolean hasValueBooleanType() { 
433          return this != null && this.value instanceof BooleanType;
434        }
435
436        /**
437         * @return {@link #value} (Indicates a value for the order detail.)
438         */
439        public CodeableConcept getValueCodeableConcept() throws FHIRException { 
440          if (this.value == null)
441            this.value = new CodeableConcept();
442          if (!(this.value instanceof CodeableConcept))
443            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.value.getClass().getName()+" was encountered");
444          return (CodeableConcept) this.value;
445        }
446
447        public boolean hasValueCodeableConcept() { 
448          return this != null && this.value instanceof CodeableConcept;
449        }
450
451        /**
452         * @return {@link #value} (Indicates a value for the order detail.)
453         */
454        public StringType getValueStringType() throws FHIRException { 
455          if (this.value == null)
456            this.value = new StringType();
457          if (!(this.value instanceof StringType))
458            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.value.getClass().getName()+" was encountered");
459          return (StringType) this.value;
460        }
461
462        public boolean hasValueStringType() { 
463          return this != null && this.value instanceof StringType;
464        }
465
466        /**
467         * @return {@link #value} (Indicates a value for the order detail.)
468         */
469        public Period getValuePeriod() throws FHIRException { 
470          if (this.value == null)
471            this.value = new Period();
472          if (!(this.value instanceof Period))
473            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.value.getClass().getName()+" was encountered");
474          return (Period) this.value;
475        }
476
477        public boolean hasValuePeriod() { 
478          return this != null && this.value instanceof Period;
479        }
480
481        public boolean hasValue() { 
482          return this.value != null && !this.value.isEmpty();
483        }
484
485        /**
486         * @param value {@link #value} (Indicates a value for the order detail.)
487         */
488        public ServiceRequestOrderDetailParameterComponent setValue(DataType value) { 
489          if (value != null && !(value instanceof Quantity || value instanceof Ratio || value instanceof Range || value instanceof BooleanType || value instanceof CodeableConcept || value instanceof StringType || value instanceof Period))
490            throw new FHIRException("Not the right type for ServiceRequest.orderDetail.parameter.value[x]: "+value.fhirType());
491          this.value = value;
492          return this;
493        }
494
495        protected void listChildren(List<Property> children) {
496          super.listChildren(children);
497          children.add(new Property("code", "CodeableConcept", "A value representing the additional detail or instructions for the order (e.g., catheter insertion, body elevation, descriptive device configuration and/or setting instructions).", 0, 1, code));
498          children.add(new Property("value[x]", "Quantity|Ratio|Range|boolean|CodeableConcept|string|Period", "Indicates a value for the order detail.", 0, 1, value));
499        }
500
501        @Override
502        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
503          switch (_hash) {
504          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "A value representing the additional detail or instructions for the order (e.g., catheter insertion, body elevation, descriptive device configuration and/or setting instructions).", 0, 1, code);
505          case -1410166417: /*value[x]*/  return new Property("value[x]", "Quantity|Ratio|Range|boolean|CodeableConcept|string|Period", "Indicates a value for the order detail.", 0, 1, value);
506          case 111972721: /*value*/  return new Property("value[x]", "Quantity|Ratio|Range|boolean|CodeableConcept|string|Period", "Indicates a value for the order detail.", 0, 1, value);
507          case -2029823716: /*valueQuantity*/  return new Property("value[x]", "Quantity", "Indicates a value for the order detail.", 0, 1, value);
508          case 2030767386: /*valueRatio*/  return new Property("value[x]", "Ratio", "Indicates a value for the order detail.", 0, 1, value);
509          case 2030761548: /*valueRange*/  return new Property("value[x]", "Range", "Indicates a value for the order detail.", 0, 1, value);
510          case 733421943: /*valueBoolean*/  return new Property("value[x]", "boolean", "Indicates a value for the order detail.", 0, 1, value);
511          case 924902896: /*valueCodeableConcept*/  return new Property("value[x]", "CodeableConcept", "Indicates a value for the order detail.", 0, 1, value);
512          case -1424603934: /*valueString*/  return new Property("value[x]", "string", "Indicates a value for the order detail.", 0, 1, value);
513          case -1524344174: /*valuePeriod*/  return new Property("value[x]", "Period", "Indicates a value for the order detail.", 0, 1, value);
514          default: return super.getNamedProperty(_hash, _name, _checkValid);
515          }
516
517        }
518
519      @Override
520      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
521        switch (hash) {
522        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
523        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
524        default: return super.getProperty(hash, name, checkValid);
525        }
526
527      }
528
529      @Override
530      public Base setProperty(int hash, String name, Base value) throws FHIRException {
531        switch (hash) {
532        case 3059181: // code
533          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
534          return value;
535        case 111972721: // value
536          this.value = TypeConvertor.castToType(value); // DataType
537          return value;
538        default: return super.setProperty(hash, name, value);
539        }
540
541      }
542
543      @Override
544      public Base setProperty(String name, Base value) throws FHIRException {
545        if (name.equals("code")) {
546          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
547        } else if (name.equals("value[x]")) {
548          this.value = TypeConvertor.castToType(value); // DataType
549        } else
550          return super.setProperty(name, value);
551        return value;
552      }
553
554  @Override
555  public void removeChild(String name, Base value) throws FHIRException {
556        if (name.equals("code")) {
557          this.code = null;
558        } else if (name.equals("value[x]")) {
559          this.value = null;
560        } else
561          super.removeChild(name, value);
562        
563      }
564
565      @Override
566      public Base makeProperty(int hash, String name) throws FHIRException {
567        switch (hash) {
568        case 3059181:  return getCode();
569        case -1410166417:  return getValue();
570        case 111972721:  return getValue();
571        default: return super.makeProperty(hash, name);
572        }
573
574      }
575
576      @Override
577      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
578        switch (hash) {
579        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
580        case 111972721: /*value*/ return new String[] {"Quantity", "Ratio", "Range", "boolean", "CodeableConcept", "string", "Period"};
581        default: return super.getTypesForProperty(hash, name);
582        }
583
584      }
585
586      @Override
587      public Base addChild(String name) throws FHIRException {
588        if (name.equals("code")) {
589          this.code = new CodeableConcept();
590          return this.code;
591        }
592        else if (name.equals("valueQuantity")) {
593          this.value = new Quantity();
594          return this.value;
595        }
596        else if (name.equals("valueRatio")) {
597          this.value = new Ratio();
598          return this.value;
599        }
600        else if (name.equals("valueRange")) {
601          this.value = new Range();
602          return this.value;
603        }
604        else if (name.equals("valueBoolean")) {
605          this.value = new BooleanType();
606          return this.value;
607        }
608        else if (name.equals("valueCodeableConcept")) {
609          this.value = new CodeableConcept();
610          return this.value;
611        }
612        else if (name.equals("valueString")) {
613          this.value = new StringType();
614          return this.value;
615        }
616        else if (name.equals("valuePeriod")) {
617          this.value = new Period();
618          return this.value;
619        }
620        else
621          return super.addChild(name);
622      }
623
624      public ServiceRequestOrderDetailParameterComponent copy() {
625        ServiceRequestOrderDetailParameterComponent dst = new ServiceRequestOrderDetailParameterComponent();
626        copyValues(dst);
627        return dst;
628      }
629
630      public void copyValues(ServiceRequestOrderDetailParameterComponent dst) {
631        super.copyValues(dst);
632        dst.code = code == null ? null : code.copy();
633        dst.value = value == null ? null : value.copy();
634      }
635
636      @Override
637      public boolean equalsDeep(Base other_) {
638        if (!super.equalsDeep(other_))
639          return false;
640        if (!(other_ instanceof ServiceRequestOrderDetailParameterComponent))
641          return false;
642        ServiceRequestOrderDetailParameterComponent o = (ServiceRequestOrderDetailParameterComponent) other_;
643        return compareDeep(code, o.code, true) && compareDeep(value, o.value, true);
644      }
645
646      @Override
647      public boolean equalsShallow(Base other_) {
648        if (!super.equalsShallow(other_))
649          return false;
650        if (!(other_ instanceof ServiceRequestOrderDetailParameterComponent))
651          return false;
652        ServiceRequestOrderDetailParameterComponent o = (ServiceRequestOrderDetailParameterComponent) other_;
653        return true;
654      }
655
656      public boolean isEmpty() {
657        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, value);
658      }
659
660  public String fhirType() {
661    return "ServiceRequest.orderDetail.parameter";
662
663  }
664
665  }
666
667    @Block()
668    public static class ServiceRequestPatientInstructionComponent extends BackboneElement implements IBaseBackboneElement {
669        /**
670         * Instructions in terms that are understood by the patient or consumer.
671         */
672        @Child(name = "instruction", type = {MarkdownType.class, DocumentReference.class}, order=1, min=0, max=1, modifier=false, summary=true)
673        @Description(shortDefinition="Patient or consumer-oriented instructions", formalDefinition="Instructions in terms that are understood by the patient or consumer." )
674        protected DataType instruction;
675
676        private static final long serialVersionUID = 474568404L;
677
678    /**
679     * Constructor
680     */
681      public ServiceRequestPatientInstructionComponent() {
682        super();
683      }
684
685        /**
686         * @return {@link #instruction} (Instructions in terms that are understood by the patient or consumer.)
687         */
688        public DataType getInstruction() { 
689          return this.instruction;
690        }
691
692        /**
693         * @return {@link #instruction} (Instructions in terms that are understood by the patient or consumer.)
694         */
695        public MarkdownType getInstructionMarkdownType() throws FHIRException { 
696          if (this.instruction == null)
697            this.instruction = new MarkdownType();
698          if (!(this.instruction instanceof MarkdownType))
699            throw new FHIRException("Type mismatch: the type MarkdownType was expected, but "+this.instruction.getClass().getName()+" was encountered");
700          return (MarkdownType) this.instruction;
701        }
702
703        public boolean hasInstructionMarkdownType() { 
704          return this != null && this.instruction instanceof MarkdownType;
705        }
706
707        /**
708         * @return {@link #instruction} (Instructions in terms that are understood by the patient or consumer.)
709         */
710        public Reference getInstructionReference() throws FHIRException { 
711          if (this.instruction == null)
712            this.instruction = new Reference();
713          if (!(this.instruction instanceof Reference))
714            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.instruction.getClass().getName()+" was encountered");
715          return (Reference) this.instruction;
716        }
717
718        public boolean hasInstructionReference() { 
719          return this != null && this.instruction instanceof Reference;
720        }
721
722        public boolean hasInstruction() { 
723          return this.instruction != null && !this.instruction.isEmpty();
724        }
725
726        /**
727         * @param value {@link #instruction} (Instructions in terms that are understood by the patient or consumer.)
728         */
729        public ServiceRequestPatientInstructionComponent setInstruction(DataType value) { 
730          if (value != null && !(value instanceof MarkdownType || value instanceof Reference))
731            throw new FHIRException("Not the right type for ServiceRequest.patientInstruction.instruction[x]: "+value.fhirType());
732          this.instruction = value;
733          return this;
734        }
735
736        protected void listChildren(List<Property> children) {
737          super.listChildren(children);
738          children.add(new Property("instruction[x]", "markdown|Reference(DocumentReference)", "Instructions in terms that are understood by the patient or consumer.", 0, 1, instruction));
739        }
740
741        @Override
742        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
743          switch (_hash) {
744          case 1989248306: /*instruction[x]*/  return new Property("instruction[x]", "markdown|Reference(DocumentReference)", "Instructions in terms that are understood by the patient or consumer.", 0, 1, instruction);
745          case 301526158: /*instruction*/  return new Property("instruction[x]", "markdown|Reference(DocumentReference)", "Instructions in terms that are understood by the patient or consumer.", 0, 1, instruction);
746          case 13950877: /*instructionMarkdown*/  return new Property("instruction[x]", "markdown", "Instructions in terms that are understood by the patient or consumer.", 0, 1, instruction);
747          case 442151517: /*instructionReference*/  return new Property("instruction[x]", "Reference(DocumentReference)", "Instructions in terms that are understood by the patient or consumer.", 0, 1, instruction);
748          default: return super.getNamedProperty(_hash, _name, _checkValid);
749          }
750
751        }
752
753      @Override
754      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
755        switch (hash) {
756        case 301526158: /*instruction*/ return this.instruction == null ? new Base[0] : new Base[] {this.instruction}; // DataType
757        default: return super.getProperty(hash, name, checkValid);
758        }
759
760      }
761
762      @Override
763      public Base setProperty(int hash, String name, Base value) throws FHIRException {
764        switch (hash) {
765        case 301526158: // instruction
766          this.instruction = TypeConvertor.castToType(value); // DataType
767          return value;
768        default: return super.setProperty(hash, name, value);
769        }
770
771      }
772
773      @Override
774      public Base setProperty(String name, Base value) throws FHIRException {
775        if (name.equals("instruction[x]")) {
776          this.instruction = TypeConvertor.castToType(value); // DataType
777        } else
778          return super.setProperty(name, value);
779        return value;
780      }
781
782  @Override
783  public void removeChild(String name, Base value) throws FHIRException {
784        if (name.equals("instruction[x]")) {
785          this.instruction = null;
786        } else
787          super.removeChild(name, value);
788        
789      }
790
791      @Override
792      public Base makeProperty(int hash, String name) throws FHIRException {
793        switch (hash) {
794        case 1989248306:  return getInstruction();
795        case 301526158:  return getInstruction();
796        default: return super.makeProperty(hash, name);
797        }
798
799      }
800
801      @Override
802      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
803        switch (hash) {
804        case 301526158: /*instruction*/ return new String[] {"markdown", "Reference"};
805        default: return super.getTypesForProperty(hash, name);
806        }
807
808      }
809
810      @Override
811      public Base addChild(String name) throws FHIRException {
812        if (name.equals("instructionMarkdown")) {
813          this.instruction = new MarkdownType();
814          return this.instruction;
815        }
816        else if (name.equals("instructionReference")) {
817          this.instruction = new Reference();
818          return this.instruction;
819        }
820        else
821          return super.addChild(name);
822      }
823
824      public ServiceRequestPatientInstructionComponent copy() {
825        ServiceRequestPatientInstructionComponent dst = new ServiceRequestPatientInstructionComponent();
826        copyValues(dst);
827        return dst;
828      }
829
830      public void copyValues(ServiceRequestPatientInstructionComponent dst) {
831        super.copyValues(dst);
832        dst.instruction = instruction == null ? null : instruction.copy();
833      }
834
835      @Override
836      public boolean equalsDeep(Base other_) {
837        if (!super.equalsDeep(other_))
838          return false;
839        if (!(other_ instanceof ServiceRequestPatientInstructionComponent))
840          return false;
841        ServiceRequestPatientInstructionComponent o = (ServiceRequestPatientInstructionComponent) other_;
842        return compareDeep(instruction, o.instruction, true);
843      }
844
845      @Override
846      public boolean equalsShallow(Base other_) {
847        if (!super.equalsShallow(other_))
848          return false;
849        if (!(other_ instanceof ServiceRequestPatientInstructionComponent))
850          return false;
851        ServiceRequestPatientInstructionComponent o = (ServiceRequestPatientInstructionComponent) other_;
852        return true;
853      }
854
855      public boolean isEmpty() {
856        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(instruction);
857      }
858
859  public String fhirType() {
860    return "ServiceRequest.patientInstruction";
861
862  }
863
864  }
865
866    /**
867     * Identifiers assigned to this order instance by the orderer and/or the receiver and/or order fulfiller.
868     */
869    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
870    @Description(shortDefinition="Identifiers assigned to this order", formalDefinition="Identifiers assigned to this order instance by the orderer and/or the receiver and/or order fulfiller." )
871    protected List<Identifier> identifier;
872
873    /**
874     * The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest.
875     */
876    @Child(name = "instantiatesCanonical", type = {CanonicalType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
877    @Description(shortDefinition="Instantiates FHIR protocol or definition", formalDefinition="The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest." )
878    protected List<CanonicalType> instantiatesCanonical;
879
880    /**
881     * The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest.
882     */
883    @Child(name = "instantiatesUri", type = {UriType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
884    @Description(shortDefinition="Instantiates external protocol or definition", formalDefinition="The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest." )
885    protected List<UriType> instantiatesUri;
886
887    /**
888     * Plan/proposal/order fulfilled by this request.
889     */
890    @Child(name = "basedOn", type = {CarePlan.class, ServiceRequest.class, MedicationRequest.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
891    @Description(shortDefinition="What request fulfills", formalDefinition="Plan/proposal/order fulfilled by this request." )
892    protected List<Reference> basedOn;
893
894    /**
895     * The request takes the place of the referenced completed or terminated request(s).
896     */
897    @Child(name = "replaces", type = {ServiceRequest.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
898    @Description(shortDefinition="What request replaces", formalDefinition="The request takes the place of the referenced completed or terminated request(s)." )
899    protected List<Reference> replaces;
900
901    /**
902     * A shared identifier common to all service requests that were authorized more or less simultaneously by a single author, representing the composite or group identifier.
903     */
904    @Child(name = "requisition", type = {Identifier.class}, order=5, min=0, max=1, modifier=false, summary=true)
905    @Description(shortDefinition="Composite Request ID", formalDefinition="A shared identifier common to all service requests that were authorized more or less simultaneously by a single author, representing the composite or group identifier." )
906    protected Identifier requisition;
907
908    /**
909     * The status of the order.
910     */
911    @Child(name = "status", type = {CodeType.class}, order=6, min=1, max=1, modifier=true, summary=true)
912    @Description(shortDefinition="draft | active | on-hold | revoked | completed | entered-in-error | unknown", formalDefinition="The status of the order." )
913    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-status")
914    protected Enumeration<RequestStatus> status;
915
916    /**
917     * Whether the request is a proposal, plan, an original order or a reflex order.
918     */
919    @Child(name = "intent", type = {CodeType.class}, order=7, min=1, max=1, modifier=true, summary=true)
920    @Description(shortDefinition="proposal | plan | directive | order +", formalDefinition="Whether the request is a proposal, plan, an original order or a reflex order." )
921    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-intent")
922    protected Enumeration<RequestIntent> intent;
923
924    /**
925     * A code that classifies the service for searching, sorting and display purposes (e.g. "Surgical Procedure").
926     */
927    @Child(name = "category", type = {CodeableConcept.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
928    @Description(shortDefinition="Classification of service", formalDefinition="A code that classifies the service for searching, sorting and display purposes (e.g. \"Surgical Procedure\")." )
929    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/servicerequest-category")
930    protected List<CodeableConcept> category;
931
932    /**
933     * Indicates how quickly the ServiceRequest should be addressed with respect to other requests.
934     */
935    @Child(name = "priority", type = {CodeType.class}, order=9, min=0, max=1, modifier=false, summary=true)
936    @Description(shortDefinition="routine | urgent | asap | stat", formalDefinition="Indicates how quickly the ServiceRequest should be addressed with respect to other requests." )
937    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/request-priority")
938    protected Enumeration<RequestPriority> priority;
939
940    /**
941     * Set this to true if the record is saying that the service/procedure should NOT be performed.
942     */
943    @Child(name = "doNotPerform", type = {BooleanType.class}, order=10, min=0, max=1, modifier=true, summary=true)
944    @Description(shortDefinition="True if service/procedure should not be performed", formalDefinition="Set this to true if the record is saying that the service/procedure should NOT be performed." )
945    protected BooleanType doNotPerform;
946
947    /**
948     * A code or reference that identifies a particular service (i.e., procedure, diagnostic investigation, or panel of investigations) that have been requested.
949     */
950    @Child(name = "code", type = {CodeableReference.class}, order=11, min=0, max=1, modifier=false, summary=true)
951    @Description(shortDefinition="What is being requested/ordered", formalDefinition="A code or reference that identifies a particular service (i.e., procedure, diagnostic investigation, or panel of investigations) that have been requested." )
952    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/procedure-code")
953    protected CodeableReference code;
954
955    /**
956     * Additional details and instructions about the how the services are to be delivered.   For example, and order for a urinary catheter may have an order detail for an external or indwelling catheter, or an order for a bandage may require additional instructions specifying how the bandage should be applied.
957     */
958    @Child(name = "orderDetail", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
959    @Description(shortDefinition="Additional order information", formalDefinition="Additional details and instructions about the how the services are to be delivered.   For example, and order for a urinary catheter may have an order detail for an external or indwelling catheter, or an order for a bandage may require additional instructions specifying how the bandage should be applied." )
960    protected List<ServiceRequestOrderDetailComponent> orderDetail;
961
962    /**
963     * An amount of service being requested which can be a quantity ( for example $1,500 home modification), a ratio ( for example, 20 half day visits per month), or a range (2.0 to 1.8 Gy per fraction).
964     */
965    @Child(name = "quantity", type = {Quantity.class, Ratio.class, Range.class}, order=13, min=0, max=1, modifier=false, summary=true)
966    @Description(shortDefinition="Service amount", formalDefinition="An amount of service being requested which can be a quantity ( for example $1,500 home modification), a ratio ( for example, 20 half day visits per month), or a range (2.0 to 1.8 Gy per fraction)." )
967    protected DataType quantity;
968
969    /**
970     * On whom or what the service is to be performed. This is usually a human patient, but can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans).
971     */
972    @Child(name = "subject", type = {Patient.class, Group.class, Location.class, Device.class}, order=14, min=1, max=1, modifier=false, summary=true)
973    @Description(shortDefinition="Individual or Entity the service is ordered for", formalDefinition="On whom or what the service is to be performed. This is usually a human patient, but can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans)." )
974    protected Reference subject;
975
976    /**
977     * The actual focus of a service request when it is not the subject of record representing something or someone associated with the subject such as a spouse, parent, fetus, or donor. The focus of a service request could also be an existing condition,  an intervention, the subject's diet,  another service request on the subject,  or a body structure such as tumor or implanted device.
978     */
979    @Child(name = "focus", type = {Reference.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
980    @Description(shortDefinition="What the service request is about, when it is not about the subject of record", formalDefinition="The actual focus of a service request when it is not the subject of record representing something or someone associated with the subject such as a spouse, parent, fetus, or donor. The focus of a service request could also be an existing condition,  an intervention, the subject's diet,  another service request on the subject,  or a body structure such as tumor or implanted device." )
981    protected List<Reference> focus;
982
983    /**
984     * An encounter that provides additional information about the healthcare context in which this request is made.
985     */
986    @Child(name = "encounter", type = {Encounter.class}, order=16, min=0, max=1, modifier=false, summary=true)
987    @Description(shortDefinition="Encounter in which the request was created", formalDefinition="An encounter that provides additional information about the healthcare context in which this request is made." )
988    protected Reference encounter;
989
990    /**
991     * The date/time at which the requested service should occur.
992     */
993    @Child(name = "occurrence", type = {DateTimeType.class, Period.class, Timing.class}, order=17, min=0, max=1, modifier=false, summary=true)
994    @Description(shortDefinition="When service should occur", formalDefinition="The date/time at which the requested service should occur." )
995    protected DataType occurrence;
996
997    /**
998     * If a CodeableConcept is present, it indicates the pre-condition for performing the service.  For example "pain", "on flare-up", etc.
999     */
1000    @Child(name = "asNeeded", type = {BooleanType.class, CodeableConcept.class}, order=18, min=0, max=1, modifier=false, summary=true)
1001    @Description(shortDefinition="Preconditions for service", formalDefinition="If a CodeableConcept is present, it indicates the pre-condition for performing the service.  For example \"pain\", \"on flare-up\", etc." )
1002    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-as-needed-reason")
1003    protected DataType asNeeded;
1004
1005    /**
1006     * When the request transitioned to being actionable.
1007     */
1008    @Child(name = "authoredOn", type = {DateTimeType.class}, order=19, min=0, max=1, modifier=false, summary=true)
1009    @Description(shortDefinition="Date request signed", formalDefinition="When the request transitioned to being actionable." )
1010    protected DateTimeType authoredOn;
1011
1012    /**
1013     * The individual who initiated the request and has responsibility for its activation.
1014     */
1015    @Child(name = "requester", type = {Practitioner.class, PractitionerRole.class, Organization.class, Patient.class, RelatedPerson.class, Device.class}, order=20, min=0, max=1, modifier=false, summary=true)
1016    @Description(shortDefinition="Who/what is requesting service", formalDefinition="The individual who initiated the request and has responsibility for its activation." )
1017    protected Reference requester;
1018
1019    /**
1020     * Desired type of performer for doing the requested service.
1021     */
1022    @Child(name = "performerType", type = {CodeableConcept.class}, order=21, min=0, max=1, modifier=false, summary=true)
1023    @Description(shortDefinition="Performer role", formalDefinition="Desired type of performer for doing the requested service." )
1024    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/participant-role")
1025    protected CodeableConcept performerType;
1026
1027    /**
1028     * The desired performer for doing the requested service.  For example, the surgeon, dermatopathologist, endoscopist, etc.
1029     */
1030    @Child(name = "performer", type = {Practitioner.class, PractitionerRole.class, Organization.class, CareTeam.class, HealthcareService.class, Patient.class, Device.class, RelatedPerson.class}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1031    @Description(shortDefinition="Requested performer", formalDefinition="The desired performer for doing the requested service.  For example, the surgeon, dermatopathologist, endoscopist, etc." )
1032    protected List<Reference> performer;
1033
1034    /**
1035     * The preferred location(s) where the procedure should actually happen in coded or free text form. E.g. at home or nursing day care center.
1036     */
1037    @Child(name = "location", type = {CodeableReference.class}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1038    @Description(shortDefinition="Requested location", formalDefinition="The preferred location(s) where the procedure should actually happen in coded or free text form. E.g. at home or nursing day care center." )
1039    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/v3-ServiceDeliveryLocationRoleType")
1040    protected List<CodeableReference> location;
1041
1042    /**
1043     * An explanation or justification for why this service is being requested in coded or textual form.   This is often for billing purposes.  May relate to the resources referred to in `supportingInfo`.
1044     */
1045    @Child(name = "reason", type = {CodeableReference.class}, order=24, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1046    @Description(shortDefinition="Explanation/Justification for procedure or service", formalDefinition="An explanation or justification for why this service is being requested in coded or textual form.   This is often for billing purposes.  May relate to the resources referred to in `supportingInfo`." )
1047    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/procedure-reason")
1048    protected List<CodeableReference> reason;
1049
1050    /**
1051     * Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be needed for delivering the requested service.
1052     */
1053    @Child(name = "insurance", type = {Coverage.class, ClaimResponse.class}, order=25, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1054    @Description(shortDefinition="Associated insurance coverage", formalDefinition="Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be needed for delivering the requested service." )
1055    protected List<Reference> insurance;
1056
1057    /**
1058     * Additional clinical information about the patient or specimen that may influence the services or their interpretations.     This information includes diagnosis, clinical findings and other observations.  In laboratory ordering these are typically referred to as "ask at order entry questions (AOEs)".  This includes observations explicitly requested by the producer (filler) to provide context or supporting information needed to complete the order. For example,  reporting the amount of inspired oxygen for blood gas measurements.
1059     */
1060    @Child(name = "supportingInfo", type = {CodeableReference.class}, order=26, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1061    @Description(shortDefinition="Additional clinical information", formalDefinition="Additional clinical information about the patient or specimen that may influence the services or their interpretations.     This information includes diagnosis, clinical findings and other observations.  In laboratory ordering these are typically referred to as \"ask at order entry questions (AOEs)\".  This includes observations explicitly requested by the producer (filler) to provide context or supporting information needed to complete the order. For example,  reporting the amount of inspired oxygen for blood gas measurements." )
1062    protected List<CodeableReference> supportingInfo;
1063
1064    /**
1065     * One or more specimens that the laboratory procedure will use.
1066     */
1067    @Child(name = "specimen", type = {Specimen.class}, order=27, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1068    @Description(shortDefinition="Procedure Samples", formalDefinition="One or more specimens that the laboratory procedure will use." )
1069    protected List<Reference> specimen;
1070
1071    /**
1072     * Anatomic location where the procedure should be performed. This is the target site.
1073     */
1074    @Child(name = "bodySite", type = {CodeableConcept.class}, order=28, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1075    @Description(shortDefinition="Coded location on Body", formalDefinition="Anatomic location where the procedure should be performed. This is the target site." )
1076    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/body-site")
1077    protected List<CodeableConcept> bodySite;
1078
1079    /**
1080     * Anatomic location where the procedure should be performed. This is the target site.
1081     */
1082    @Child(name = "bodyStructure", type = {BodyStructure.class}, order=29, min=0, max=1, modifier=false, summary=true)
1083    @Description(shortDefinition="BodyStructure-based location on the body", formalDefinition="Anatomic location where the procedure should be performed. This is the target site." )
1084    protected Reference bodyStructure;
1085
1086    /**
1087     * Any other notes and comments made about the service request. For example, internal billing notes.
1088     */
1089    @Child(name = "note", type = {Annotation.class}, order=30, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1090    @Description(shortDefinition="Comments", formalDefinition="Any other notes and comments made about the service request. For example, internal billing notes." )
1091    protected List<Annotation> note;
1092
1093    /**
1094     * Instructions in terms that are understood by the patient or consumer.
1095     */
1096    @Child(name = "patientInstruction", type = {}, order=31, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1097    @Description(shortDefinition="Patient or consumer-oriented instructions", formalDefinition="Instructions in terms that are understood by the patient or consumer." )
1098    protected List<ServiceRequestPatientInstructionComponent> patientInstruction;
1099
1100    /**
1101     * Key events in the history of the request.
1102     */
1103    @Child(name = "relevantHistory", type = {Provenance.class}, order=32, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1104    @Description(shortDefinition="Request provenance", formalDefinition="Key events in the history of the request." )
1105    protected List<Reference> relevantHistory;
1106
1107    private static final long serialVersionUID = -1785672942L;
1108
1109  /**
1110   * Constructor
1111   */
1112    public ServiceRequest() {
1113      super();
1114    }
1115
1116  /**
1117   * Constructor
1118   */
1119    public ServiceRequest(RequestStatus status, RequestIntent intent, Reference subject) {
1120      super();
1121      this.setStatus(status);
1122      this.setIntent(intent);
1123      this.setSubject(subject);
1124    }
1125
1126    /**
1127     * @return {@link #identifier} (Identifiers assigned to this order instance by the orderer and/or the receiver and/or order fulfiller.)
1128     */
1129    public List<Identifier> getIdentifier() { 
1130      if (this.identifier == null)
1131        this.identifier = new ArrayList<Identifier>();
1132      return this.identifier;
1133    }
1134
1135    /**
1136     * @return Returns a reference to <code>this</code> for easy method chaining
1137     */
1138    public ServiceRequest setIdentifier(List<Identifier> theIdentifier) { 
1139      this.identifier = theIdentifier;
1140      return this;
1141    }
1142
1143    public boolean hasIdentifier() { 
1144      if (this.identifier == null)
1145        return false;
1146      for (Identifier item : this.identifier)
1147        if (!item.isEmpty())
1148          return true;
1149      return false;
1150    }
1151
1152    public Identifier addIdentifier() { //3
1153      Identifier t = new Identifier();
1154      if (this.identifier == null)
1155        this.identifier = new ArrayList<Identifier>();
1156      this.identifier.add(t);
1157      return t;
1158    }
1159
1160    public ServiceRequest addIdentifier(Identifier t) { //3
1161      if (t == null)
1162        return this;
1163      if (this.identifier == null)
1164        this.identifier = new ArrayList<Identifier>();
1165      this.identifier.add(t);
1166      return this;
1167    }
1168
1169    /**
1170     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
1171     */
1172    public Identifier getIdentifierFirstRep() { 
1173      if (getIdentifier().isEmpty()) {
1174        addIdentifier();
1175      }
1176      return getIdentifier().get(0);
1177    }
1178
1179    /**
1180     * @return {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest.)
1181     */
1182    public List<CanonicalType> getInstantiatesCanonical() { 
1183      if (this.instantiatesCanonical == null)
1184        this.instantiatesCanonical = new ArrayList<CanonicalType>();
1185      return this.instantiatesCanonical;
1186    }
1187
1188    /**
1189     * @return Returns a reference to <code>this</code> for easy method chaining
1190     */
1191    public ServiceRequest setInstantiatesCanonical(List<CanonicalType> theInstantiatesCanonical) { 
1192      this.instantiatesCanonical = theInstantiatesCanonical;
1193      return this;
1194    }
1195
1196    public boolean hasInstantiatesCanonical() { 
1197      if (this.instantiatesCanonical == null)
1198        return false;
1199      for (CanonicalType item : this.instantiatesCanonical)
1200        if (!item.isEmpty())
1201          return true;
1202      return false;
1203    }
1204
1205    /**
1206     * @return {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest.)
1207     */
1208    public CanonicalType addInstantiatesCanonicalElement() {//2 
1209      CanonicalType t = new CanonicalType();
1210      if (this.instantiatesCanonical == null)
1211        this.instantiatesCanonical = new ArrayList<CanonicalType>();
1212      this.instantiatesCanonical.add(t);
1213      return t;
1214    }
1215
1216    /**
1217     * @param value {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest.)
1218     */
1219    public ServiceRequest addInstantiatesCanonical(String value) { //1
1220      CanonicalType t = new CanonicalType();
1221      t.setValue(value);
1222      if (this.instantiatesCanonical == null)
1223        this.instantiatesCanonical = new ArrayList<CanonicalType>();
1224      this.instantiatesCanonical.add(t);
1225      return this;
1226    }
1227
1228    /**
1229     * @param value {@link #instantiatesCanonical} (The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest.)
1230     */
1231    public boolean hasInstantiatesCanonical(String value) { 
1232      if (this.instantiatesCanonical == null)
1233        return false;
1234      for (CanonicalType v : this.instantiatesCanonical)
1235        if (v.getValue().equals(value)) // canonical
1236          return true;
1237      return false;
1238    }
1239
1240    /**
1241     * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest.)
1242     */
1243    public List<UriType> getInstantiatesUri() { 
1244      if (this.instantiatesUri == null)
1245        this.instantiatesUri = new ArrayList<UriType>();
1246      return this.instantiatesUri;
1247    }
1248
1249    /**
1250     * @return Returns a reference to <code>this</code> for easy method chaining
1251     */
1252    public ServiceRequest setInstantiatesUri(List<UriType> theInstantiatesUri) { 
1253      this.instantiatesUri = theInstantiatesUri;
1254      return this;
1255    }
1256
1257    public boolean hasInstantiatesUri() { 
1258      if (this.instantiatesUri == null)
1259        return false;
1260      for (UriType item : this.instantiatesUri)
1261        if (!item.isEmpty())
1262          return true;
1263      return false;
1264    }
1265
1266    /**
1267     * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest.)
1268     */
1269    public UriType addInstantiatesUriElement() {//2 
1270      UriType t = new UriType();
1271      if (this.instantiatesUri == null)
1272        this.instantiatesUri = new ArrayList<UriType>();
1273      this.instantiatesUri.add(t);
1274      return t;
1275    }
1276
1277    /**
1278     * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest.)
1279     */
1280    public ServiceRequest addInstantiatesUri(String value) { //1
1281      UriType t = new UriType();
1282      t.setValue(value);
1283      if (this.instantiatesUri == null)
1284        this.instantiatesUri = new ArrayList<UriType>();
1285      this.instantiatesUri.add(t);
1286      return this;
1287    }
1288
1289    /**
1290     * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest.)
1291     */
1292    public boolean hasInstantiatesUri(String value) { 
1293      if (this.instantiatesUri == null)
1294        return false;
1295      for (UriType v : this.instantiatesUri)
1296        if (v.getValue().equals(value)) // uri
1297          return true;
1298      return false;
1299    }
1300
1301    /**
1302     * @return {@link #basedOn} (Plan/proposal/order fulfilled by this request.)
1303     */
1304    public List<Reference> getBasedOn() { 
1305      if (this.basedOn == null)
1306        this.basedOn = new ArrayList<Reference>();
1307      return this.basedOn;
1308    }
1309
1310    /**
1311     * @return Returns a reference to <code>this</code> for easy method chaining
1312     */
1313    public ServiceRequest setBasedOn(List<Reference> theBasedOn) { 
1314      this.basedOn = theBasedOn;
1315      return this;
1316    }
1317
1318    public boolean hasBasedOn() { 
1319      if (this.basedOn == null)
1320        return false;
1321      for (Reference item : this.basedOn)
1322        if (!item.isEmpty())
1323          return true;
1324      return false;
1325    }
1326
1327    public Reference addBasedOn() { //3
1328      Reference t = new Reference();
1329      if (this.basedOn == null)
1330        this.basedOn = new ArrayList<Reference>();
1331      this.basedOn.add(t);
1332      return t;
1333    }
1334
1335    public ServiceRequest addBasedOn(Reference t) { //3
1336      if (t == null)
1337        return this;
1338      if (this.basedOn == null)
1339        this.basedOn = new ArrayList<Reference>();
1340      this.basedOn.add(t);
1341      return this;
1342    }
1343
1344    /**
1345     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
1346     */
1347    public Reference getBasedOnFirstRep() { 
1348      if (getBasedOn().isEmpty()) {
1349        addBasedOn();
1350      }
1351      return getBasedOn().get(0);
1352    }
1353
1354    /**
1355     * @return {@link #replaces} (The request takes the place of the referenced completed or terminated request(s).)
1356     */
1357    public List<Reference> getReplaces() { 
1358      if (this.replaces == null)
1359        this.replaces = new ArrayList<Reference>();
1360      return this.replaces;
1361    }
1362
1363    /**
1364     * @return Returns a reference to <code>this</code> for easy method chaining
1365     */
1366    public ServiceRequest setReplaces(List<Reference> theReplaces) { 
1367      this.replaces = theReplaces;
1368      return this;
1369    }
1370
1371    public boolean hasReplaces() { 
1372      if (this.replaces == null)
1373        return false;
1374      for (Reference item : this.replaces)
1375        if (!item.isEmpty())
1376          return true;
1377      return false;
1378    }
1379
1380    public Reference addReplaces() { //3
1381      Reference t = new Reference();
1382      if (this.replaces == null)
1383        this.replaces = new ArrayList<Reference>();
1384      this.replaces.add(t);
1385      return t;
1386    }
1387
1388    public ServiceRequest addReplaces(Reference t) { //3
1389      if (t == null)
1390        return this;
1391      if (this.replaces == null)
1392        this.replaces = new ArrayList<Reference>();
1393      this.replaces.add(t);
1394      return this;
1395    }
1396
1397    /**
1398     * @return The first repetition of repeating field {@link #replaces}, creating it if it does not already exist {3}
1399     */
1400    public Reference getReplacesFirstRep() { 
1401      if (getReplaces().isEmpty()) {
1402        addReplaces();
1403      }
1404      return getReplaces().get(0);
1405    }
1406
1407    /**
1408     * @return {@link #requisition} (A shared identifier common to all service requests that were authorized more or less simultaneously by a single author, representing the composite or group identifier.)
1409     */
1410    public Identifier getRequisition() { 
1411      if (this.requisition == null)
1412        if (Configuration.errorOnAutoCreate())
1413          throw new Error("Attempt to auto-create ServiceRequest.requisition");
1414        else if (Configuration.doAutoCreate())
1415          this.requisition = new Identifier(); // cc
1416      return this.requisition;
1417    }
1418
1419    public boolean hasRequisition() { 
1420      return this.requisition != null && !this.requisition.isEmpty();
1421    }
1422
1423    /**
1424     * @param value {@link #requisition} (A shared identifier common to all service requests that were authorized more or less simultaneously by a single author, representing the composite or group identifier.)
1425     */
1426    public ServiceRequest setRequisition(Identifier value) { 
1427      this.requisition = value;
1428      return this;
1429    }
1430
1431    /**
1432     * @return {@link #status} (The status of the order.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1433     */
1434    public Enumeration<RequestStatus> getStatusElement() { 
1435      if (this.status == null)
1436        if (Configuration.errorOnAutoCreate())
1437          throw new Error("Attempt to auto-create ServiceRequest.status");
1438        else if (Configuration.doAutoCreate())
1439          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory()); // bb
1440      return this.status;
1441    }
1442
1443    public boolean hasStatusElement() { 
1444      return this.status != null && !this.status.isEmpty();
1445    }
1446
1447    public boolean hasStatus() { 
1448      return this.status != null && !this.status.isEmpty();
1449    }
1450
1451    /**
1452     * @param value {@link #status} (The status of the order.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1453     */
1454    public ServiceRequest setStatusElement(Enumeration<RequestStatus> value) { 
1455      this.status = value;
1456      return this;
1457    }
1458
1459    /**
1460     * @return The status of the order.
1461     */
1462    public RequestStatus getStatus() { 
1463      return this.status == null ? null : this.status.getValue();
1464    }
1465
1466    /**
1467     * @param value The status of the order.
1468     */
1469    public ServiceRequest setStatus(RequestStatus value) { 
1470        if (this.status == null)
1471          this.status = new Enumeration<RequestStatus>(new RequestStatusEnumFactory());
1472        this.status.setValue(value);
1473      return this;
1474    }
1475
1476    /**
1477     * @return {@link #intent} (Whether the request is a proposal, plan, an original order or a reflex order.). This is the underlying object with id, value and extensions. The accessor "getIntent" gives direct access to the value
1478     */
1479    public Enumeration<RequestIntent> getIntentElement() { 
1480      if (this.intent == null)
1481        if (Configuration.errorOnAutoCreate())
1482          throw new Error("Attempt to auto-create ServiceRequest.intent");
1483        else if (Configuration.doAutoCreate())
1484          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory()); // bb
1485      return this.intent;
1486    }
1487
1488    public boolean hasIntentElement() { 
1489      return this.intent != null && !this.intent.isEmpty();
1490    }
1491
1492    public boolean hasIntent() { 
1493      return this.intent != null && !this.intent.isEmpty();
1494    }
1495
1496    /**
1497     * @param value {@link #intent} (Whether the request is a proposal, plan, an original order or a reflex order.). This is the underlying object with id, value and extensions. The accessor "getIntent" gives direct access to the value
1498     */
1499    public ServiceRequest setIntentElement(Enumeration<RequestIntent> value) { 
1500      this.intent = value;
1501      return this;
1502    }
1503
1504    /**
1505     * @return Whether the request is a proposal, plan, an original order or a reflex order.
1506     */
1507    public RequestIntent getIntent() { 
1508      return this.intent == null ? null : this.intent.getValue();
1509    }
1510
1511    /**
1512     * @param value Whether the request is a proposal, plan, an original order or a reflex order.
1513     */
1514    public ServiceRequest setIntent(RequestIntent value) { 
1515        if (this.intent == null)
1516          this.intent = new Enumeration<RequestIntent>(new RequestIntentEnumFactory());
1517        this.intent.setValue(value);
1518      return this;
1519    }
1520
1521    /**
1522     * @return {@link #category} (A code that classifies the service for searching, sorting and display purposes (e.g. "Surgical Procedure").)
1523     */
1524    public List<CodeableConcept> getCategory() { 
1525      if (this.category == null)
1526        this.category = new ArrayList<CodeableConcept>();
1527      return this.category;
1528    }
1529
1530    /**
1531     * @return Returns a reference to <code>this</code> for easy method chaining
1532     */
1533    public ServiceRequest setCategory(List<CodeableConcept> theCategory) { 
1534      this.category = theCategory;
1535      return this;
1536    }
1537
1538    public boolean hasCategory() { 
1539      if (this.category == null)
1540        return false;
1541      for (CodeableConcept item : this.category)
1542        if (!item.isEmpty())
1543          return true;
1544      return false;
1545    }
1546
1547    public CodeableConcept addCategory() { //3
1548      CodeableConcept t = new CodeableConcept();
1549      if (this.category == null)
1550        this.category = new ArrayList<CodeableConcept>();
1551      this.category.add(t);
1552      return t;
1553    }
1554
1555    public ServiceRequest addCategory(CodeableConcept t) { //3
1556      if (t == null)
1557        return this;
1558      if (this.category == null)
1559        this.category = new ArrayList<CodeableConcept>();
1560      this.category.add(t);
1561      return this;
1562    }
1563
1564    /**
1565     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
1566     */
1567    public CodeableConcept getCategoryFirstRep() { 
1568      if (getCategory().isEmpty()) {
1569        addCategory();
1570      }
1571      return getCategory().get(0);
1572    }
1573
1574    /**
1575     * @return {@link #priority} (Indicates how quickly the ServiceRequest should be addressed with respect to other requests.). This is the underlying object with id, value and extensions. The accessor "getPriority" gives direct access to the value
1576     */
1577    public Enumeration<RequestPriority> getPriorityElement() { 
1578      if (this.priority == null)
1579        if (Configuration.errorOnAutoCreate())
1580          throw new Error("Attempt to auto-create ServiceRequest.priority");
1581        else if (Configuration.doAutoCreate())
1582          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory()); // bb
1583      return this.priority;
1584    }
1585
1586    public boolean hasPriorityElement() { 
1587      return this.priority != null && !this.priority.isEmpty();
1588    }
1589
1590    public boolean hasPriority() { 
1591      return this.priority != null && !this.priority.isEmpty();
1592    }
1593
1594    /**
1595     * @param value {@link #priority} (Indicates how quickly the ServiceRequest should be addressed with respect to other requests.). This is the underlying object with id, value and extensions. The accessor "getPriority" gives direct access to the value
1596     */
1597    public ServiceRequest setPriorityElement(Enumeration<RequestPriority> value) { 
1598      this.priority = value;
1599      return this;
1600    }
1601
1602    /**
1603     * @return Indicates how quickly the ServiceRequest should be addressed with respect to other requests.
1604     */
1605    public RequestPriority getPriority() { 
1606      return this.priority == null ? null : this.priority.getValue();
1607    }
1608
1609    /**
1610     * @param value Indicates how quickly the ServiceRequest should be addressed with respect to other requests.
1611     */
1612    public ServiceRequest setPriority(RequestPriority value) { 
1613      if (value == null)
1614        this.priority = null;
1615      else {
1616        if (this.priority == null)
1617          this.priority = new Enumeration<RequestPriority>(new RequestPriorityEnumFactory());
1618        this.priority.setValue(value);
1619      }
1620      return this;
1621    }
1622
1623    /**
1624     * @return {@link #doNotPerform} (Set this to true if the record is saying that the service/procedure should NOT be performed.). This is the underlying object with id, value and extensions. The accessor "getDoNotPerform" gives direct access to the value
1625     */
1626    public BooleanType getDoNotPerformElement() { 
1627      if (this.doNotPerform == null)
1628        if (Configuration.errorOnAutoCreate())
1629          throw new Error("Attempt to auto-create ServiceRequest.doNotPerform");
1630        else if (Configuration.doAutoCreate())
1631          this.doNotPerform = new BooleanType(); // bb
1632      return this.doNotPerform;
1633    }
1634
1635    public boolean hasDoNotPerformElement() { 
1636      return this.doNotPerform != null && !this.doNotPerform.isEmpty();
1637    }
1638
1639    public boolean hasDoNotPerform() { 
1640      return this.doNotPerform != null && !this.doNotPerform.isEmpty();
1641    }
1642
1643    /**
1644     * @param value {@link #doNotPerform} (Set this to true if the record is saying that the service/procedure should NOT be performed.). This is the underlying object with id, value and extensions. The accessor "getDoNotPerform" gives direct access to the value
1645     */
1646    public ServiceRequest setDoNotPerformElement(BooleanType value) { 
1647      this.doNotPerform = value;
1648      return this;
1649    }
1650
1651    /**
1652     * @return Set this to true if the record is saying that the service/procedure should NOT be performed.
1653     */
1654    public boolean getDoNotPerform() { 
1655      return this.doNotPerform == null || this.doNotPerform.isEmpty() ? false : this.doNotPerform.getValue();
1656    }
1657
1658    /**
1659     * @param value Set this to true if the record is saying that the service/procedure should NOT be performed.
1660     */
1661    public ServiceRequest setDoNotPerform(boolean value) { 
1662        if (this.doNotPerform == null)
1663          this.doNotPerform = new BooleanType();
1664        this.doNotPerform.setValue(value);
1665      return this;
1666    }
1667
1668    /**
1669     * @return {@link #code} (A code or reference that identifies a particular service (i.e., procedure, diagnostic investigation, or panel of investigations) that have been requested.)
1670     */
1671    public CodeableReference getCode() { 
1672      if (this.code == null)
1673        if (Configuration.errorOnAutoCreate())
1674          throw new Error("Attempt to auto-create ServiceRequest.code");
1675        else if (Configuration.doAutoCreate())
1676          this.code = new CodeableReference(); // cc
1677      return this.code;
1678    }
1679
1680    public boolean hasCode() { 
1681      return this.code != null && !this.code.isEmpty();
1682    }
1683
1684    /**
1685     * @param value {@link #code} (A code or reference that identifies a particular service (i.e., procedure, diagnostic investigation, or panel of investigations) that have been requested.)
1686     */
1687    public ServiceRequest setCode(CodeableReference value) { 
1688      this.code = value;
1689      return this;
1690    }
1691
1692    /**
1693     * @return {@link #orderDetail} (Additional details and instructions about the how the services are to be delivered.   For example, and order for a urinary catheter may have an order detail for an external or indwelling catheter, or an order for a bandage may require additional instructions specifying how the bandage should be applied.)
1694     */
1695    public List<ServiceRequestOrderDetailComponent> getOrderDetail() { 
1696      if (this.orderDetail == null)
1697        this.orderDetail = new ArrayList<ServiceRequestOrderDetailComponent>();
1698      return this.orderDetail;
1699    }
1700
1701    /**
1702     * @return Returns a reference to <code>this</code> for easy method chaining
1703     */
1704    public ServiceRequest setOrderDetail(List<ServiceRequestOrderDetailComponent> theOrderDetail) { 
1705      this.orderDetail = theOrderDetail;
1706      return this;
1707    }
1708
1709    public boolean hasOrderDetail() { 
1710      if (this.orderDetail == null)
1711        return false;
1712      for (ServiceRequestOrderDetailComponent item : this.orderDetail)
1713        if (!item.isEmpty())
1714          return true;
1715      return false;
1716    }
1717
1718    public ServiceRequestOrderDetailComponent addOrderDetail() { //3
1719      ServiceRequestOrderDetailComponent t = new ServiceRequestOrderDetailComponent();
1720      if (this.orderDetail == null)
1721        this.orderDetail = new ArrayList<ServiceRequestOrderDetailComponent>();
1722      this.orderDetail.add(t);
1723      return t;
1724    }
1725
1726    public ServiceRequest addOrderDetail(ServiceRequestOrderDetailComponent t) { //3
1727      if (t == null)
1728        return this;
1729      if (this.orderDetail == null)
1730        this.orderDetail = new ArrayList<ServiceRequestOrderDetailComponent>();
1731      this.orderDetail.add(t);
1732      return this;
1733    }
1734
1735    /**
1736     * @return The first repetition of repeating field {@link #orderDetail}, creating it if it does not already exist {3}
1737     */
1738    public ServiceRequestOrderDetailComponent getOrderDetailFirstRep() { 
1739      if (getOrderDetail().isEmpty()) {
1740        addOrderDetail();
1741      }
1742      return getOrderDetail().get(0);
1743    }
1744
1745    /**
1746     * @return {@link #quantity} (An amount of service being requested which can be a quantity ( for example $1,500 home modification), a ratio ( for example, 20 half day visits per month), or a range (2.0 to 1.8 Gy per fraction).)
1747     */
1748    public DataType getQuantity() { 
1749      return this.quantity;
1750    }
1751
1752    /**
1753     * @return {@link #quantity} (An amount of service being requested which can be a quantity ( for example $1,500 home modification), a ratio ( for example, 20 half day visits per month), or a range (2.0 to 1.8 Gy per fraction).)
1754     */
1755    public Quantity getQuantityQuantity() throws FHIRException { 
1756      if (this.quantity == null)
1757        this.quantity = new Quantity();
1758      if (!(this.quantity instanceof Quantity))
1759        throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.quantity.getClass().getName()+" was encountered");
1760      return (Quantity) this.quantity;
1761    }
1762
1763    public boolean hasQuantityQuantity() { 
1764      return this != null && this.quantity instanceof Quantity;
1765    }
1766
1767    /**
1768     * @return {@link #quantity} (An amount of service being requested which can be a quantity ( for example $1,500 home modification), a ratio ( for example, 20 half day visits per month), or a range (2.0 to 1.8 Gy per fraction).)
1769     */
1770    public Ratio getQuantityRatio() throws FHIRException { 
1771      if (this.quantity == null)
1772        this.quantity = new Ratio();
1773      if (!(this.quantity instanceof Ratio))
1774        throw new FHIRException("Type mismatch: the type Ratio was expected, but "+this.quantity.getClass().getName()+" was encountered");
1775      return (Ratio) this.quantity;
1776    }
1777
1778    public boolean hasQuantityRatio() { 
1779      return this != null && this.quantity instanceof Ratio;
1780    }
1781
1782    /**
1783     * @return {@link #quantity} (An amount of service being requested which can be a quantity ( for example $1,500 home modification), a ratio ( for example, 20 half day visits per month), or a range (2.0 to 1.8 Gy per fraction).)
1784     */
1785    public Range getQuantityRange() throws FHIRException { 
1786      if (this.quantity == null)
1787        this.quantity = new Range();
1788      if (!(this.quantity instanceof Range))
1789        throw new FHIRException("Type mismatch: the type Range was expected, but "+this.quantity.getClass().getName()+" was encountered");
1790      return (Range) this.quantity;
1791    }
1792
1793    public boolean hasQuantityRange() { 
1794      return this != null && this.quantity instanceof Range;
1795    }
1796
1797    public boolean hasQuantity() { 
1798      return this.quantity != null && !this.quantity.isEmpty();
1799    }
1800
1801    /**
1802     * @param value {@link #quantity} (An amount of service being requested which can be a quantity ( for example $1,500 home modification), a ratio ( for example, 20 half day visits per month), or a range (2.0 to 1.8 Gy per fraction).)
1803     */
1804    public ServiceRequest setQuantity(DataType value) { 
1805      if (value != null && !(value instanceof Quantity || value instanceof Ratio || value instanceof Range))
1806        throw new FHIRException("Not the right type for ServiceRequest.quantity[x]: "+value.fhirType());
1807      this.quantity = value;
1808      return this;
1809    }
1810
1811    /**
1812     * @return {@link #subject} (On whom or what the service is to be performed. This is usually a human patient, but can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans).)
1813     */
1814    public Reference getSubject() { 
1815      if (this.subject == null)
1816        if (Configuration.errorOnAutoCreate())
1817          throw new Error("Attempt to auto-create ServiceRequest.subject");
1818        else if (Configuration.doAutoCreate())
1819          this.subject = new Reference(); // cc
1820      return this.subject;
1821    }
1822
1823    public boolean hasSubject() { 
1824      return this.subject != null && !this.subject.isEmpty();
1825    }
1826
1827    /**
1828     * @param value {@link #subject} (On whom or what the service is to be performed. This is usually a human patient, but can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans).)
1829     */
1830    public ServiceRequest setSubject(Reference value) { 
1831      this.subject = value;
1832      return this;
1833    }
1834
1835    /**
1836     * @return {@link #focus} (The actual focus of a service request when it is not the subject of record representing something or someone associated with the subject such as a spouse, parent, fetus, or donor. The focus of a service request could also be an existing condition,  an intervention, the subject's diet,  another service request on the subject,  or a body structure such as tumor or implanted device.)
1837     */
1838    public List<Reference> getFocus() { 
1839      if (this.focus == null)
1840        this.focus = new ArrayList<Reference>();
1841      return this.focus;
1842    }
1843
1844    /**
1845     * @return Returns a reference to <code>this</code> for easy method chaining
1846     */
1847    public ServiceRequest setFocus(List<Reference> theFocus) { 
1848      this.focus = theFocus;
1849      return this;
1850    }
1851
1852    public boolean hasFocus() { 
1853      if (this.focus == null)
1854        return false;
1855      for (Reference item : this.focus)
1856        if (!item.isEmpty())
1857          return true;
1858      return false;
1859    }
1860
1861    public Reference addFocus() { //3
1862      Reference t = new Reference();
1863      if (this.focus == null)
1864        this.focus = new ArrayList<Reference>();
1865      this.focus.add(t);
1866      return t;
1867    }
1868
1869    public ServiceRequest addFocus(Reference t) { //3
1870      if (t == null)
1871        return this;
1872      if (this.focus == null)
1873        this.focus = new ArrayList<Reference>();
1874      this.focus.add(t);
1875      return this;
1876    }
1877
1878    /**
1879     * @return The first repetition of repeating field {@link #focus}, creating it if it does not already exist {3}
1880     */
1881    public Reference getFocusFirstRep() { 
1882      if (getFocus().isEmpty()) {
1883        addFocus();
1884      }
1885      return getFocus().get(0);
1886    }
1887
1888    /**
1889     * @return {@link #encounter} (An encounter that provides additional information about the healthcare context in which this request is made.)
1890     */
1891    public Reference getEncounter() { 
1892      if (this.encounter == null)
1893        if (Configuration.errorOnAutoCreate())
1894          throw new Error("Attempt to auto-create ServiceRequest.encounter");
1895        else if (Configuration.doAutoCreate())
1896          this.encounter = new Reference(); // cc
1897      return this.encounter;
1898    }
1899
1900    public boolean hasEncounter() { 
1901      return this.encounter != null && !this.encounter.isEmpty();
1902    }
1903
1904    /**
1905     * @param value {@link #encounter} (An encounter that provides additional information about the healthcare context in which this request is made.)
1906     */
1907    public ServiceRequest setEncounter(Reference value) { 
1908      this.encounter = value;
1909      return this;
1910    }
1911
1912    /**
1913     * @return {@link #occurrence} (The date/time at which the requested service should occur.)
1914     */
1915    public DataType getOccurrence() { 
1916      return this.occurrence;
1917    }
1918
1919    /**
1920     * @return {@link #occurrence} (The date/time at which the requested service should occur.)
1921     */
1922    public DateTimeType getOccurrenceDateTimeType() throws FHIRException { 
1923      if (this.occurrence == null)
1924        this.occurrence = new DateTimeType();
1925      if (!(this.occurrence instanceof DateTimeType))
1926        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1927      return (DateTimeType) this.occurrence;
1928    }
1929
1930    public boolean hasOccurrenceDateTimeType() { 
1931      return this != null && this.occurrence instanceof DateTimeType;
1932    }
1933
1934    /**
1935     * @return {@link #occurrence} (The date/time at which the requested service should occur.)
1936     */
1937    public Period getOccurrencePeriod() throws FHIRException { 
1938      if (this.occurrence == null)
1939        this.occurrence = new Period();
1940      if (!(this.occurrence instanceof Period))
1941        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1942      return (Period) this.occurrence;
1943    }
1944
1945    public boolean hasOccurrencePeriod() { 
1946      return this != null && this.occurrence instanceof Period;
1947    }
1948
1949    /**
1950     * @return {@link #occurrence} (The date/time at which the requested service should occur.)
1951     */
1952    public Timing getOccurrenceTiming() throws FHIRException { 
1953      if (this.occurrence == null)
1954        this.occurrence = new Timing();
1955      if (!(this.occurrence instanceof Timing))
1956        throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.occurrence.getClass().getName()+" was encountered");
1957      return (Timing) this.occurrence;
1958    }
1959
1960    public boolean hasOccurrenceTiming() { 
1961      return this != null && this.occurrence instanceof Timing;
1962    }
1963
1964    public boolean hasOccurrence() { 
1965      return this.occurrence != null && !this.occurrence.isEmpty();
1966    }
1967
1968    /**
1969     * @param value {@link #occurrence} (The date/time at which the requested service should occur.)
1970     */
1971    public ServiceRequest setOccurrence(DataType value) { 
1972      if (value != null && !(value instanceof DateTimeType || value instanceof Period || value instanceof Timing))
1973        throw new FHIRException("Not the right type for ServiceRequest.occurrence[x]: "+value.fhirType());
1974      this.occurrence = value;
1975      return this;
1976    }
1977
1978    /**
1979     * @return {@link #asNeeded} (If a CodeableConcept is present, it indicates the pre-condition for performing the service.  For example "pain", "on flare-up", etc.)
1980     */
1981    public DataType getAsNeeded() { 
1982      return this.asNeeded;
1983    }
1984
1985    /**
1986     * @return {@link #asNeeded} (If a CodeableConcept is present, it indicates the pre-condition for performing the service.  For example "pain", "on flare-up", etc.)
1987     */
1988    public BooleanType getAsNeededBooleanType() throws FHIRException { 
1989      if (this.asNeeded == null)
1990        this.asNeeded = new BooleanType();
1991      if (!(this.asNeeded instanceof BooleanType))
1992        throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.asNeeded.getClass().getName()+" was encountered");
1993      return (BooleanType) this.asNeeded;
1994    }
1995
1996    public boolean hasAsNeededBooleanType() { 
1997      return this != null && this.asNeeded instanceof BooleanType;
1998    }
1999
2000    /**
2001     * @return {@link #asNeeded} (If a CodeableConcept is present, it indicates the pre-condition for performing the service.  For example "pain", "on flare-up", etc.)
2002     */
2003    public CodeableConcept getAsNeededCodeableConcept() throws FHIRException { 
2004      if (this.asNeeded == null)
2005        this.asNeeded = new CodeableConcept();
2006      if (!(this.asNeeded instanceof CodeableConcept))
2007        throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.asNeeded.getClass().getName()+" was encountered");
2008      return (CodeableConcept) this.asNeeded;
2009    }
2010
2011    public boolean hasAsNeededCodeableConcept() { 
2012      return this != null && this.asNeeded instanceof CodeableConcept;
2013    }
2014
2015    public boolean hasAsNeeded() { 
2016      return this.asNeeded != null && !this.asNeeded.isEmpty();
2017    }
2018
2019    /**
2020     * @param value {@link #asNeeded} (If a CodeableConcept is present, it indicates the pre-condition for performing the service.  For example "pain", "on flare-up", etc.)
2021     */
2022    public ServiceRequest setAsNeeded(DataType value) { 
2023      if (value != null && !(value instanceof BooleanType || value instanceof CodeableConcept))
2024        throw new FHIRException("Not the right type for ServiceRequest.asNeeded[x]: "+value.fhirType());
2025      this.asNeeded = value;
2026      return this;
2027    }
2028
2029    /**
2030     * @return {@link #authoredOn} (When the request transitioned to being actionable.). This is the underlying object with id, value and extensions. The accessor "getAuthoredOn" gives direct access to the value
2031     */
2032    public DateTimeType getAuthoredOnElement() { 
2033      if (this.authoredOn == null)
2034        if (Configuration.errorOnAutoCreate())
2035          throw new Error("Attempt to auto-create ServiceRequest.authoredOn");
2036        else if (Configuration.doAutoCreate())
2037          this.authoredOn = new DateTimeType(); // bb
2038      return this.authoredOn;
2039    }
2040
2041    public boolean hasAuthoredOnElement() { 
2042      return this.authoredOn != null && !this.authoredOn.isEmpty();
2043    }
2044
2045    public boolean hasAuthoredOn() { 
2046      return this.authoredOn != null && !this.authoredOn.isEmpty();
2047    }
2048
2049    /**
2050     * @param value {@link #authoredOn} (When the request transitioned to being actionable.). This is the underlying object with id, value and extensions. The accessor "getAuthoredOn" gives direct access to the value
2051     */
2052    public ServiceRequest setAuthoredOnElement(DateTimeType value) { 
2053      this.authoredOn = value;
2054      return this;
2055    }
2056
2057    /**
2058     * @return When the request transitioned to being actionable.
2059     */
2060    public Date getAuthoredOn() { 
2061      return this.authoredOn == null ? null : this.authoredOn.getValue();
2062    }
2063
2064    /**
2065     * @param value When the request transitioned to being actionable.
2066     */
2067    public ServiceRequest setAuthoredOn(Date value) { 
2068      if (value == null)
2069        this.authoredOn = null;
2070      else {
2071        if (this.authoredOn == null)
2072          this.authoredOn = new DateTimeType();
2073        this.authoredOn.setValue(value);
2074      }
2075      return this;
2076    }
2077
2078    /**
2079     * @return {@link #requester} (The individual who initiated the request and has responsibility for its activation.)
2080     */
2081    public Reference getRequester() { 
2082      if (this.requester == null)
2083        if (Configuration.errorOnAutoCreate())
2084          throw new Error("Attempt to auto-create ServiceRequest.requester");
2085        else if (Configuration.doAutoCreate())
2086          this.requester = new Reference(); // cc
2087      return this.requester;
2088    }
2089
2090    public boolean hasRequester() { 
2091      return this.requester != null && !this.requester.isEmpty();
2092    }
2093
2094    /**
2095     * @param value {@link #requester} (The individual who initiated the request and has responsibility for its activation.)
2096     */
2097    public ServiceRequest setRequester(Reference value) { 
2098      this.requester = value;
2099      return this;
2100    }
2101
2102    /**
2103     * @return {@link #performerType} (Desired type of performer for doing the requested service.)
2104     */
2105    public CodeableConcept getPerformerType() { 
2106      if (this.performerType == null)
2107        if (Configuration.errorOnAutoCreate())
2108          throw new Error("Attempt to auto-create ServiceRequest.performerType");
2109        else if (Configuration.doAutoCreate())
2110          this.performerType = new CodeableConcept(); // cc
2111      return this.performerType;
2112    }
2113
2114    public boolean hasPerformerType() { 
2115      return this.performerType != null && !this.performerType.isEmpty();
2116    }
2117
2118    /**
2119     * @param value {@link #performerType} (Desired type of performer for doing the requested service.)
2120     */
2121    public ServiceRequest setPerformerType(CodeableConcept value) { 
2122      this.performerType = value;
2123      return this;
2124    }
2125
2126    /**
2127     * @return {@link #performer} (The desired performer for doing the requested service.  For example, the surgeon, dermatopathologist, endoscopist, etc.)
2128     */
2129    public List<Reference> getPerformer() { 
2130      if (this.performer == null)
2131        this.performer = new ArrayList<Reference>();
2132      return this.performer;
2133    }
2134
2135    /**
2136     * @return Returns a reference to <code>this</code> for easy method chaining
2137     */
2138    public ServiceRequest setPerformer(List<Reference> thePerformer) { 
2139      this.performer = thePerformer;
2140      return this;
2141    }
2142
2143    public boolean hasPerformer() { 
2144      if (this.performer == null)
2145        return false;
2146      for (Reference item : this.performer)
2147        if (!item.isEmpty())
2148          return true;
2149      return false;
2150    }
2151
2152    public Reference addPerformer() { //3
2153      Reference t = new Reference();
2154      if (this.performer == null)
2155        this.performer = new ArrayList<Reference>();
2156      this.performer.add(t);
2157      return t;
2158    }
2159
2160    public ServiceRequest addPerformer(Reference t) { //3
2161      if (t == null)
2162        return this;
2163      if (this.performer == null)
2164        this.performer = new ArrayList<Reference>();
2165      this.performer.add(t);
2166      return this;
2167    }
2168
2169    /**
2170     * @return The first repetition of repeating field {@link #performer}, creating it if it does not already exist {3}
2171     */
2172    public Reference getPerformerFirstRep() { 
2173      if (getPerformer().isEmpty()) {
2174        addPerformer();
2175      }
2176      return getPerformer().get(0);
2177    }
2178
2179    /**
2180     * @return {@link #location} (The preferred location(s) where the procedure should actually happen in coded or free text form. E.g. at home or nursing day care center.)
2181     */
2182    public List<CodeableReference> getLocation() { 
2183      if (this.location == null)
2184        this.location = new ArrayList<CodeableReference>();
2185      return this.location;
2186    }
2187
2188    /**
2189     * @return Returns a reference to <code>this</code> for easy method chaining
2190     */
2191    public ServiceRequest setLocation(List<CodeableReference> theLocation) { 
2192      this.location = theLocation;
2193      return this;
2194    }
2195
2196    public boolean hasLocation() { 
2197      if (this.location == null)
2198        return false;
2199      for (CodeableReference item : this.location)
2200        if (!item.isEmpty())
2201          return true;
2202      return false;
2203    }
2204
2205    public CodeableReference addLocation() { //3
2206      CodeableReference t = new CodeableReference();
2207      if (this.location == null)
2208        this.location = new ArrayList<CodeableReference>();
2209      this.location.add(t);
2210      return t;
2211    }
2212
2213    public ServiceRequest addLocation(CodeableReference t) { //3
2214      if (t == null)
2215        return this;
2216      if (this.location == null)
2217        this.location = new ArrayList<CodeableReference>();
2218      this.location.add(t);
2219      return this;
2220    }
2221
2222    /**
2223     * @return The first repetition of repeating field {@link #location}, creating it if it does not already exist {3}
2224     */
2225    public CodeableReference getLocationFirstRep() { 
2226      if (getLocation().isEmpty()) {
2227        addLocation();
2228      }
2229      return getLocation().get(0);
2230    }
2231
2232    /**
2233     * @return {@link #reason} (An explanation or justification for why this service is being requested in coded or textual form.   This is often for billing purposes.  May relate to the resources referred to in `supportingInfo`.)
2234     */
2235    public List<CodeableReference> getReason() { 
2236      if (this.reason == null)
2237        this.reason = new ArrayList<CodeableReference>();
2238      return this.reason;
2239    }
2240
2241    /**
2242     * @return Returns a reference to <code>this</code> for easy method chaining
2243     */
2244    public ServiceRequest setReason(List<CodeableReference> theReason) { 
2245      this.reason = theReason;
2246      return this;
2247    }
2248
2249    public boolean hasReason() { 
2250      if (this.reason == null)
2251        return false;
2252      for (CodeableReference item : this.reason)
2253        if (!item.isEmpty())
2254          return true;
2255      return false;
2256    }
2257
2258    public CodeableReference addReason() { //3
2259      CodeableReference t = new CodeableReference();
2260      if (this.reason == null)
2261        this.reason = new ArrayList<CodeableReference>();
2262      this.reason.add(t);
2263      return t;
2264    }
2265
2266    public ServiceRequest addReason(CodeableReference t) { //3
2267      if (t == null)
2268        return this;
2269      if (this.reason == null)
2270        this.reason = new ArrayList<CodeableReference>();
2271      this.reason.add(t);
2272      return this;
2273    }
2274
2275    /**
2276     * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3}
2277     */
2278    public CodeableReference getReasonFirstRep() { 
2279      if (getReason().isEmpty()) {
2280        addReason();
2281      }
2282      return getReason().get(0);
2283    }
2284
2285    /**
2286     * @return {@link #insurance} (Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be needed for delivering the requested service.)
2287     */
2288    public List<Reference> getInsurance() { 
2289      if (this.insurance == null)
2290        this.insurance = new ArrayList<Reference>();
2291      return this.insurance;
2292    }
2293
2294    /**
2295     * @return Returns a reference to <code>this</code> for easy method chaining
2296     */
2297    public ServiceRequest setInsurance(List<Reference> theInsurance) { 
2298      this.insurance = theInsurance;
2299      return this;
2300    }
2301
2302    public boolean hasInsurance() { 
2303      if (this.insurance == null)
2304        return false;
2305      for (Reference item : this.insurance)
2306        if (!item.isEmpty())
2307          return true;
2308      return false;
2309    }
2310
2311    public Reference addInsurance() { //3
2312      Reference t = new Reference();
2313      if (this.insurance == null)
2314        this.insurance = new ArrayList<Reference>();
2315      this.insurance.add(t);
2316      return t;
2317    }
2318
2319    public ServiceRequest addInsurance(Reference t) { //3
2320      if (t == null)
2321        return this;
2322      if (this.insurance == null)
2323        this.insurance = new ArrayList<Reference>();
2324      this.insurance.add(t);
2325      return this;
2326    }
2327
2328    /**
2329     * @return The first repetition of repeating field {@link #insurance}, creating it if it does not already exist {3}
2330     */
2331    public Reference getInsuranceFirstRep() { 
2332      if (getInsurance().isEmpty()) {
2333        addInsurance();
2334      }
2335      return getInsurance().get(0);
2336    }
2337
2338    /**
2339     * @return {@link #supportingInfo} (Additional clinical information about the patient or specimen that may influence the services or their interpretations.     This information includes diagnosis, clinical findings and other observations.  In laboratory ordering these are typically referred to as "ask at order entry questions (AOEs)".  This includes observations explicitly requested by the producer (filler) to provide context or supporting information needed to complete the order. For example,  reporting the amount of inspired oxygen for blood gas measurements.)
2340     */
2341    public List<CodeableReference> getSupportingInfo() { 
2342      if (this.supportingInfo == null)
2343        this.supportingInfo = new ArrayList<CodeableReference>();
2344      return this.supportingInfo;
2345    }
2346
2347    /**
2348     * @return Returns a reference to <code>this</code> for easy method chaining
2349     */
2350    public ServiceRequest setSupportingInfo(List<CodeableReference> theSupportingInfo) { 
2351      this.supportingInfo = theSupportingInfo;
2352      return this;
2353    }
2354
2355    public boolean hasSupportingInfo() { 
2356      if (this.supportingInfo == null)
2357        return false;
2358      for (CodeableReference item : this.supportingInfo)
2359        if (!item.isEmpty())
2360          return true;
2361      return false;
2362    }
2363
2364    public CodeableReference addSupportingInfo() { //3
2365      CodeableReference t = new CodeableReference();
2366      if (this.supportingInfo == null)
2367        this.supportingInfo = new ArrayList<CodeableReference>();
2368      this.supportingInfo.add(t);
2369      return t;
2370    }
2371
2372    public ServiceRequest addSupportingInfo(CodeableReference t) { //3
2373      if (t == null)
2374        return this;
2375      if (this.supportingInfo == null)
2376        this.supportingInfo = new ArrayList<CodeableReference>();
2377      this.supportingInfo.add(t);
2378      return this;
2379    }
2380
2381    /**
2382     * @return The first repetition of repeating field {@link #supportingInfo}, creating it if it does not already exist {3}
2383     */
2384    public CodeableReference getSupportingInfoFirstRep() { 
2385      if (getSupportingInfo().isEmpty()) {
2386        addSupportingInfo();
2387      }
2388      return getSupportingInfo().get(0);
2389    }
2390
2391    /**
2392     * @return {@link #specimen} (One or more specimens that the laboratory procedure will use.)
2393     */
2394    public List<Reference> getSpecimen() { 
2395      if (this.specimen == null)
2396        this.specimen = new ArrayList<Reference>();
2397      return this.specimen;
2398    }
2399
2400    /**
2401     * @return Returns a reference to <code>this</code> for easy method chaining
2402     */
2403    public ServiceRequest setSpecimen(List<Reference> theSpecimen) { 
2404      this.specimen = theSpecimen;
2405      return this;
2406    }
2407
2408    public boolean hasSpecimen() { 
2409      if (this.specimen == null)
2410        return false;
2411      for (Reference item : this.specimen)
2412        if (!item.isEmpty())
2413          return true;
2414      return false;
2415    }
2416
2417    public Reference addSpecimen() { //3
2418      Reference t = new Reference();
2419      if (this.specimen == null)
2420        this.specimen = new ArrayList<Reference>();
2421      this.specimen.add(t);
2422      return t;
2423    }
2424
2425    public ServiceRequest addSpecimen(Reference t) { //3
2426      if (t == null)
2427        return this;
2428      if (this.specimen == null)
2429        this.specimen = new ArrayList<Reference>();
2430      this.specimen.add(t);
2431      return this;
2432    }
2433
2434    /**
2435     * @return The first repetition of repeating field {@link #specimen}, creating it if it does not already exist {3}
2436     */
2437    public Reference getSpecimenFirstRep() { 
2438      if (getSpecimen().isEmpty()) {
2439        addSpecimen();
2440      }
2441      return getSpecimen().get(0);
2442    }
2443
2444    /**
2445     * @return {@link #bodySite} (Anatomic location where the procedure should be performed. This is the target site.)
2446     */
2447    public List<CodeableConcept> getBodySite() { 
2448      if (this.bodySite == null)
2449        this.bodySite = new ArrayList<CodeableConcept>();
2450      return this.bodySite;
2451    }
2452
2453    /**
2454     * @return Returns a reference to <code>this</code> for easy method chaining
2455     */
2456    public ServiceRequest setBodySite(List<CodeableConcept> theBodySite) { 
2457      this.bodySite = theBodySite;
2458      return this;
2459    }
2460
2461    public boolean hasBodySite() { 
2462      if (this.bodySite == null)
2463        return false;
2464      for (CodeableConcept item : this.bodySite)
2465        if (!item.isEmpty())
2466          return true;
2467      return false;
2468    }
2469
2470    public CodeableConcept addBodySite() { //3
2471      CodeableConcept t = new CodeableConcept();
2472      if (this.bodySite == null)
2473        this.bodySite = new ArrayList<CodeableConcept>();
2474      this.bodySite.add(t);
2475      return t;
2476    }
2477
2478    public ServiceRequest addBodySite(CodeableConcept t) { //3
2479      if (t == null)
2480        return this;
2481      if (this.bodySite == null)
2482        this.bodySite = new ArrayList<CodeableConcept>();
2483      this.bodySite.add(t);
2484      return this;
2485    }
2486
2487    /**
2488     * @return The first repetition of repeating field {@link #bodySite}, creating it if it does not already exist {3}
2489     */
2490    public CodeableConcept getBodySiteFirstRep() { 
2491      if (getBodySite().isEmpty()) {
2492        addBodySite();
2493      }
2494      return getBodySite().get(0);
2495    }
2496
2497    /**
2498     * @return {@link #bodyStructure} (Anatomic location where the procedure should be performed. This is the target site.)
2499     */
2500    public Reference getBodyStructure() { 
2501      if (this.bodyStructure == null)
2502        if (Configuration.errorOnAutoCreate())
2503          throw new Error("Attempt to auto-create ServiceRequest.bodyStructure");
2504        else if (Configuration.doAutoCreate())
2505          this.bodyStructure = new Reference(); // cc
2506      return this.bodyStructure;
2507    }
2508
2509    public boolean hasBodyStructure() { 
2510      return this.bodyStructure != null && !this.bodyStructure.isEmpty();
2511    }
2512
2513    /**
2514     * @param value {@link #bodyStructure} (Anatomic location where the procedure should be performed. This is the target site.)
2515     */
2516    public ServiceRequest setBodyStructure(Reference value) { 
2517      this.bodyStructure = value;
2518      return this;
2519    }
2520
2521    /**
2522     * @return {@link #note} (Any other notes and comments made about the service request. For example, internal billing notes.)
2523     */
2524    public List<Annotation> getNote() { 
2525      if (this.note == null)
2526        this.note = new ArrayList<Annotation>();
2527      return this.note;
2528    }
2529
2530    /**
2531     * @return Returns a reference to <code>this</code> for easy method chaining
2532     */
2533    public ServiceRequest setNote(List<Annotation> theNote) { 
2534      this.note = theNote;
2535      return this;
2536    }
2537
2538    public boolean hasNote() { 
2539      if (this.note == null)
2540        return false;
2541      for (Annotation item : this.note)
2542        if (!item.isEmpty())
2543          return true;
2544      return false;
2545    }
2546
2547    public Annotation addNote() { //3
2548      Annotation t = new Annotation();
2549      if (this.note == null)
2550        this.note = new ArrayList<Annotation>();
2551      this.note.add(t);
2552      return t;
2553    }
2554
2555    public ServiceRequest addNote(Annotation t) { //3
2556      if (t == null)
2557        return this;
2558      if (this.note == null)
2559        this.note = new ArrayList<Annotation>();
2560      this.note.add(t);
2561      return this;
2562    }
2563
2564    /**
2565     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
2566     */
2567    public Annotation getNoteFirstRep() { 
2568      if (getNote().isEmpty()) {
2569        addNote();
2570      }
2571      return getNote().get(0);
2572    }
2573
2574    /**
2575     * @return {@link #patientInstruction} (Instructions in terms that are understood by the patient or consumer.)
2576     */
2577    public List<ServiceRequestPatientInstructionComponent> getPatientInstruction() { 
2578      if (this.patientInstruction == null)
2579        this.patientInstruction = new ArrayList<ServiceRequestPatientInstructionComponent>();
2580      return this.patientInstruction;
2581    }
2582
2583    /**
2584     * @return Returns a reference to <code>this</code> for easy method chaining
2585     */
2586    public ServiceRequest setPatientInstruction(List<ServiceRequestPatientInstructionComponent> thePatientInstruction) { 
2587      this.patientInstruction = thePatientInstruction;
2588      return this;
2589    }
2590
2591    public boolean hasPatientInstruction() { 
2592      if (this.patientInstruction == null)
2593        return false;
2594      for (ServiceRequestPatientInstructionComponent item : this.patientInstruction)
2595        if (!item.isEmpty())
2596          return true;
2597      return false;
2598    }
2599
2600    public ServiceRequestPatientInstructionComponent addPatientInstruction() { //3
2601      ServiceRequestPatientInstructionComponent t = new ServiceRequestPatientInstructionComponent();
2602      if (this.patientInstruction == null)
2603        this.patientInstruction = new ArrayList<ServiceRequestPatientInstructionComponent>();
2604      this.patientInstruction.add(t);
2605      return t;
2606    }
2607
2608    public ServiceRequest addPatientInstruction(ServiceRequestPatientInstructionComponent t) { //3
2609      if (t == null)
2610        return this;
2611      if (this.patientInstruction == null)
2612        this.patientInstruction = new ArrayList<ServiceRequestPatientInstructionComponent>();
2613      this.patientInstruction.add(t);
2614      return this;
2615    }
2616
2617    /**
2618     * @return The first repetition of repeating field {@link #patientInstruction}, creating it if it does not already exist {3}
2619     */
2620    public ServiceRequestPatientInstructionComponent getPatientInstructionFirstRep() { 
2621      if (getPatientInstruction().isEmpty()) {
2622        addPatientInstruction();
2623      }
2624      return getPatientInstruction().get(0);
2625    }
2626
2627    /**
2628     * @return {@link #relevantHistory} (Key events in the history of the request.)
2629     */
2630    public List<Reference> getRelevantHistory() { 
2631      if (this.relevantHistory == null)
2632        this.relevantHistory = new ArrayList<Reference>();
2633      return this.relevantHistory;
2634    }
2635
2636    /**
2637     * @return Returns a reference to <code>this</code> for easy method chaining
2638     */
2639    public ServiceRequest setRelevantHistory(List<Reference> theRelevantHistory) { 
2640      this.relevantHistory = theRelevantHistory;
2641      return this;
2642    }
2643
2644    public boolean hasRelevantHistory() { 
2645      if (this.relevantHistory == null)
2646        return false;
2647      for (Reference item : this.relevantHistory)
2648        if (!item.isEmpty())
2649          return true;
2650      return false;
2651    }
2652
2653    public Reference addRelevantHistory() { //3
2654      Reference t = new Reference();
2655      if (this.relevantHistory == null)
2656        this.relevantHistory = new ArrayList<Reference>();
2657      this.relevantHistory.add(t);
2658      return t;
2659    }
2660
2661    public ServiceRequest addRelevantHistory(Reference t) { //3
2662      if (t == null)
2663        return this;
2664      if (this.relevantHistory == null)
2665        this.relevantHistory = new ArrayList<Reference>();
2666      this.relevantHistory.add(t);
2667      return this;
2668    }
2669
2670    /**
2671     * @return The first repetition of repeating field {@link #relevantHistory}, creating it if it does not already exist {3}
2672     */
2673    public Reference getRelevantHistoryFirstRep() { 
2674      if (getRelevantHistory().isEmpty()) {
2675        addRelevantHistory();
2676      }
2677      return getRelevantHistory().get(0);
2678    }
2679
2680      protected void listChildren(List<Property> children) {
2681        super.listChildren(children);
2682        children.add(new Property("identifier", "Identifier", "Identifiers assigned to this order instance by the orderer and/or the receiver and/or order fulfiller.", 0, java.lang.Integer.MAX_VALUE, identifier));
2683        children.add(new Property("instantiatesCanonical", "canonical(ActivityDefinition|PlanDefinition)", "The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest.", 0, java.lang.Integer.MAX_VALUE, instantiatesCanonical));
2684        children.add(new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest.", 0, java.lang.Integer.MAX_VALUE, instantiatesUri));
2685        children.add(new Property("basedOn", "Reference(CarePlan|ServiceRequest|MedicationRequest)", "Plan/proposal/order fulfilled by this request.", 0, java.lang.Integer.MAX_VALUE, basedOn));
2686        children.add(new Property("replaces", "Reference(ServiceRequest)", "The request takes the place of the referenced completed or terminated request(s).", 0, java.lang.Integer.MAX_VALUE, replaces));
2687        children.add(new Property("requisition", "Identifier", "A shared identifier common to all service requests that were authorized more or less simultaneously by a single author, representing the composite or group identifier.", 0, 1, requisition));
2688        children.add(new Property("status", "code", "The status of the order.", 0, 1, status));
2689        children.add(new Property("intent", "code", "Whether the request is a proposal, plan, an original order or a reflex order.", 0, 1, intent));
2690        children.add(new Property("category", "CodeableConcept", "A code that classifies the service for searching, sorting and display purposes (e.g. \"Surgical Procedure\").", 0, java.lang.Integer.MAX_VALUE, category));
2691        children.add(new Property("priority", "code", "Indicates how quickly the ServiceRequest should be addressed with respect to other requests.", 0, 1, priority));
2692        children.add(new Property("doNotPerform", "boolean", "Set this to true if the record is saying that the service/procedure should NOT be performed.", 0, 1, doNotPerform));
2693        children.add(new Property("code", "CodeableReference(ActivityDefinition|PlanDefinition)", "A code or reference that identifies a particular service (i.e., procedure, diagnostic investigation, or panel of investigations) that have been requested.", 0, 1, code));
2694        children.add(new Property("orderDetail", "", "Additional details and instructions about the how the services are to be delivered.   For example, and order for a urinary catheter may have an order detail for an external or indwelling catheter, or an order for a bandage may require additional instructions specifying how the bandage should be applied.", 0, java.lang.Integer.MAX_VALUE, orderDetail));
2695        children.add(new Property("quantity[x]", "Quantity|Ratio|Range", "An amount of service being requested which can be a quantity ( for example $1,500 home modification), a ratio ( for example, 20 half day visits per month), or a range (2.0 to 1.8 Gy per fraction).", 0, 1, quantity));
2696        children.add(new Property("subject", "Reference(Patient|Group|Location|Device)", "On whom or what the service is to be performed. This is usually a human patient, but can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans).", 0, 1, subject));
2697        children.add(new Property("focus", "Reference(Any)", "The actual focus of a service request when it is not the subject of record representing something or someone associated with the subject such as a spouse, parent, fetus, or donor. The focus of a service request could also be an existing condition,  an intervention, the subject's diet,  another service request on the subject,  or a body structure such as tumor or implanted device.", 0, java.lang.Integer.MAX_VALUE, focus));
2698        children.add(new Property("encounter", "Reference(Encounter)", "An encounter that provides additional information about the healthcare context in which this request is made.", 0, 1, encounter));
2699        children.add(new Property("occurrence[x]", "dateTime|Period|Timing", "The date/time at which the requested service should occur.", 0, 1, occurrence));
2700        children.add(new Property("asNeeded[x]", "boolean|CodeableConcept", "If a CodeableConcept is present, it indicates the pre-condition for performing the service.  For example \"pain\", \"on flare-up\", etc.", 0, 1, asNeeded));
2701        children.add(new Property("authoredOn", "dateTime", "When the request transitioned to being actionable.", 0, 1, authoredOn));
2702        children.add(new Property("requester", "Reference(Practitioner|PractitionerRole|Organization|Patient|RelatedPerson|Device)", "The individual who initiated the request and has responsibility for its activation.", 0, 1, requester));
2703        children.add(new Property("performerType", "CodeableConcept", "Desired type of performer for doing the requested service.", 0, 1, performerType));
2704        children.add(new Property("performer", "Reference(Practitioner|PractitionerRole|Organization|CareTeam|HealthcareService|Patient|Device|RelatedPerson)", "The desired performer for doing the requested service.  For example, the surgeon, dermatopathologist, endoscopist, etc.", 0, java.lang.Integer.MAX_VALUE, performer));
2705        children.add(new Property("location", "CodeableReference(Location)", "The preferred location(s) where the procedure should actually happen in coded or free text form. E.g. at home or nursing day care center.", 0, java.lang.Integer.MAX_VALUE, location));
2706        children.add(new Property("reason", "CodeableReference(Condition|Observation|DiagnosticReport|DocumentReference|DetectedIssue)", "An explanation or justification for why this service is being requested in coded or textual form.   This is often for billing purposes.  May relate to the resources referred to in `supportingInfo`.", 0, java.lang.Integer.MAX_VALUE, reason));
2707        children.add(new Property("insurance", "Reference(Coverage|ClaimResponse)", "Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be needed for delivering the requested service.", 0, java.lang.Integer.MAX_VALUE, insurance));
2708        children.add(new Property("supportingInfo", "CodeableReference(Any)", "Additional clinical information about the patient or specimen that may influence the services or their interpretations.     This information includes diagnosis, clinical findings and other observations.  In laboratory ordering these are typically referred to as \"ask at order entry questions (AOEs)\".  This includes observations explicitly requested by the producer (filler) to provide context or supporting information needed to complete the order. For example,  reporting the amount of inspired oxygen for blood gas measurements.", 0, java.lang.Integer.MAX_VALUE, supportingInfo));
2709        children.add(new Property("specimen", "Reference(Specimen)", "One or more specimens that the laboratory procedure will use.", 0, java.lang.Integer.MAX_VALUE, specimen));
2710        children.add(new Property("bodySite", "CodeableConcept", "Anatomic location where the procedure should be performed. This is the target site.", 0, java.lang.Integer.MAX_VALUE, bodySite));
2711        children.add(new Property("bodyStructure", "Reference(BodyStructure)", "Anatomic location where the procedure should be performed. This is the target site.", 0, 1, bodyStructure));
2712        children.add(new Property("note", "Annotation", "Any other notes and comments made about the service request. For example, internal billing notes.", 0, java.lang.Integer.MAX_VALUE, note));
2713        children.add(new Property("patientInstruction", "", "Instructions in terms that are understood by the patient or consumer.", 0, java.lang.Integer.MAX_VALUE, patientInstruction));
2714        children.add(new Property("relevantHistory", "Reference(Provenance)", "Key events in the history of the request.", 0, java.lang.Integer.MAX_VALUE, relevantHistory));
2715      }
2716
2717      @Override
2718      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2719        switch (_hash) {
2720        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Identifiers assigned to this order instance by the orderer and/or the receiver and/or order fulfiller.", 0, java.lang.Integer.MAX_VALUE, identifier);
2721        case 8911915: /*instantiatesCanonical*/  return new Property("instantiatesCanonical", "canonical(ActivityDefinition|PlanDefinition)", "The URL pointing to a FHIR-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest.", 0, java.lang.Integer.MAX_VALUE, instantiatesCanonical);
2722        case -1926393373: /*instantiatesUri*/  return new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this ServiceRequest.", 0, java.lang.Integer.MAX_VALUE, instantiatesUri);
2723        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(CarePlan|ServiceRequest|MedicationRequest)", "Plan/proposal/order fulfilled by this request.", 0, java.lang.Integer.MAX_VALUE, basedOn);
2724        case -430332865: /*replaces*/  return new Property("replaces", "Reference(ServiceRequest)", "The request takes the place of the referenced completed or terminated request(s).", 0, java.lang.Integer.MAX_VALUE, replaces);
2725        case 395923612: /*requisition*/  return new Property("requisition", "Identifier", "A shared identifier common to all service requests that were authorized more or less simultaneously by a single author, representing the composite or group identifier.", 0, 1, requisition);
2726        case -892481550: /*status*/  return new Property("status", "code", "The status of the order.", 0, 1, status);
2727        case -1183762788: /*intent*/  return new Property("intent", "code", "Whether the request is a proposal, plan, an original order or a reflex order.", 0, 1, intent);
2728        case 50511102: /*category*/  return new Property("category", "CodeableConcept", "A code that classifies the service for searching, sorting and display purposes (e.g. \"Surgical Procedure\").", 0, java.lang.Integer.MAX_VALUE, category);
2729        case -1165461084: /*priority*/  return new Property("priority", "code", "Indicates how quickly the ServiceRequest should be addressed with respect to other requests.", 0, 1, priority);
2730        case -1788508167: /*doNotPerform*/  return new Property("doNotPerform", "boolean", "Set this to true if the record is saying that the service/procedure should NOT be performed.", 0, 1, doNotPerform);
2731        case 3059181: /*code*/  return new Property("code", "CodeableReference(ActivityDefinition|PlanDefinition)", "A code or reference that identifies a particular service (i.e., procedure, diagnostic investigation, or panel of investigations) that have been requested.", 0, 1, code);
2732        case 1187338559: /*orderDetail*/  return new Property("orderDetail", "", "Additional details and instructions about the how the services are to be delivered.   For example, and order for a urinary catheter may have an order detail for an external or indwelling catheter, or an order for a bandage may require additional instructions specifying how the bandage should be applied.", 0, java.lang.Integer.MAX_VALUE, orderDetail);
2733        case -515002347: /*quantity[x]*/  return new Property("quantity[x]", "Quantity|Ratio|Range", "An amount of service being requested which can be a quantity ( for example $1,500 home modification), a ratio ( for example, 20 half day visits per month), or a range (2.0 to 1.8 Gy per fraction).", 0, 1, quantity);
2734        case -1285004149: /*quantity*/  return new Property("quantity[x]", "Quantity|Ratio|Range", "An amount of service being requested which can be a quantity ( for example $1,500 home modification), a ratio ( for example, 20 half day visits per month), or a range (2.0 to 1.8 Gy per fraction).", 0, 1, quantity);
2735        case -1087409610: /*quantityQuantity*/  return new Property("quantity[x]", "Quantity", "An amount of service being requested which can be a quantity ( for example $1,500 home modification), a ratio ( for example, 20 half day visits per month), or a range (2.0 to 1.8 Gy per fraction).", 0, 1, quantity);
2736        case -1004987840: /*quantityRatio*/  return new Property("quantity[x]", "Ratio", "An amount of service being requested which can be a quantity ( for example $1,500 home modification), a ratio ( for example, 20 half day visits per month), or a range (2.0 to 1.8 Gy per fraction).", 0, 1, quantity);
2737        case -1004993678: /*quantityRange*/  return new Property("quantity[x]", "Range", "An amount of service being requested which can be a quantity ( for example $1,500 home modification), a ratio ( for example, 20 half day visits per month), or a range (2.0 to 1.8 Gy per fraction).", 0, 1, quantity);
2738        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group|Location|Device)", "On whom or what the service is to be performed. This is usually a human patient, but can also be requested on animals, groups of humans or animals, devices such as dialysis machines, or even locations (typically for environmental scans).", 0, 1, subject);
2739        case 97604824: /*focus*/  return new Property("focus", "Reference(Any)", "The actual focus of a service request when it is not the subject of record representing something or someone associated with the subject such as a spouse, parent, fetus, or donor. The focus of a service request could also be an existing condition,  an intervention, the subject's diet,  another service request on the subject,  or a body structure such as tumor or implanted device.", 0, java.lang.Integer.MAX_VALUE, focus);
2740        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "An encounter that provides additional information about the healthcare context in which this request is made.", 0, 1, encounter);
2741        case -2022646513: /*occurrence[x]*/  return new Property("occurrence[x]", "dateTime|Period|Timing", "The date/time at which the requested service should occur.", 0, 1, occurrence);
2742        case 1687874001: /*occurrence*/  return new Property("occurrence[x]", "dateTime|Period|Timing", "The date/time at which the requested service should occur.", 0, 1, occurrence);
2743        case -298443636: /*occurrenceDateTime*/  return new Property("occurrence[x]", "dateTime", "The date/time at which the requested service should occur.", 0, 1, occurrence);
2744        case 1397156594: /*occurrencePeriod*/  return new Property("occurrence[x]", "Period", "The date/time at which the requested service should occur.", 0, 1, occurrence);
2745        case 1515218299: /*occurrenceTiming*/  return new Property("occurrence[x]", "Timing", "The date/time at which the requested service should occur.", 0, 1, occurrence);
2746        case -544329575: /*asNeeded[x]*/  return new Property("asNeeded[x]", "boolean|CodeableConcept", "If a CodeableConcept is present, it indicates the pre-condition for performing the service.  For example \"pain\", \"on flare-up\", etc.", 0, 1, asNeeded);
2747        case -1432923513: /*asNeeded*/  return new Property("asNeeded[x]", "boolean|CodeableConcept", "If a CodeableConcept is present, it indicates the pre-condition for performing the service.  For example \"pain\", \"on flare-up\", etc.", 0, 1, asNeeded);
2748        case -591717471: /*asNeededBoolean*/  return new Property("asNeeded[x]", "boolean", "If a CodeableConcept is present, it indicates the pre-condition for performing the service.  For example \"pain\", \"on flare-up\", etc.", 0, 1, asNeeded);
2749        case 1556420122: /*asNeededCodeableConcept*/  return new Property("asNeeded[x]", "CodeableConcept", "If a CodeableConcept is present, it indicates the pre-condition for performing the service.  For example \"pain\", \"on flare-up\", etc.", 0, 1, asNeeded);
2750        case -1500852503: /*authoredOn*/  return new Property("authoredOn", "dateTime", "When the request transitioned to being actionable.", 0, 1, authoredOn);
2751        case 693933948: /*requester*/  return new Property("requester", "Reference(Practitioner|PractitionerRole|Organization|Patient|RelatedPerson|Device)", "The individual who initiated the request and has responsibility for its activation.", 0, 1, requester);
2752        case -901444568: /*performerType*/  return new Property("performerType", "CodeableConcept", "Desired type of performer for doing the requested service.", 0, 1, performerType);
2753        case 481140686: /*performer*/  return new Property("performer", "Reference(Practitioner|PractitionerRole|Organization|CareTeam|HealthcareService|Patient|Device|RelatedPerson)", "The desired performer for doing the requested service.  For example, the surgeon, dermatopathologist, endoscopist, etc.", 0, java.lang.Integer.MAX_VALUE, performer);
2754        case 1901043637: /*location*/  return new Property("location", "CodeableReference(Location)", "The preferred location(s) where the procedure should actually happen in coded or free text form. E.g. at home or nursing day care center.", 0, java.lang.Integer.MAX_VALUE, location);
2755        case -934964668: /*reason*/  return new Property("reason", "CodeableReference(Condition|Observation|DiagnosticReport|DocumentReference|DetectedIssue)", "An explanation or justification for why this service is being requested in coded or textual form.   This is often for billing purposes.  May relate to the resources referred to in `supportingInfo`.", 0, java.lang.Integer.MAX_VALUE, reason);
2756        case 73049818: /*insurance*/  return new Property("insurance", "Reference(Coverage|ClaimResponse)", "Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be needed for delivering the requested service.", 0, java.lang.Integer.MAX_VALUE, insurance);
2757        case 1922406657: /*supportingInfo*/  return new Property("supportingInfo", "CodeableReference(Any)", "Additional clinical information about the patient or specimen that may influence the services or their interpretations.     This information includes diagnosis, clinical findings and other observations.  In laboratory ordering these are typically referred to as \"ask at order entry questions (AOEs)\".  This includes observations explicitly requested by the producer (filler) to provide context or supporting information needed to complete the order. For example,  reporting the amount of inspired oxygen for blood gas measurements.", 0, java.lang.Integer.MAX_VALUE, supportingInfo);
2758        case -2132868344: /*specimen*/  return new Property("specimen", "Reference(Specimen)", "One or more specimens that the laboratory procedure will use.", 0, java.lang.Integer.MAX_VALUE, specimen);
2759        case 1702620169: /*bodySite*/  return new Property("bodySite", "CodeableConcept", "Anatomic location where the procedure should be performed. This is the target site.", 0, java.lang.Integer.MAX_VALUE, bodySite);
2760        case -1001731599: /*bodyStructure*/  return new Property("bodyStructure", "Reference(BodyStructure)", "Anatomic location where the procedure should be performed. This is the target site.", 0, 1, bodyStructure);
2761        case 3387378: /*note*/  return new Property("note", "Annotation", "Any other notes and comments made about the service request. For example, internal billing notes.", 0, java.lang.Integer.MAX_VALUE, note);
2762        case 737543241: /*patientInstruction*/  return new Property("patientInstruction", "", "Instructions in terms that are understood by the patient or consumer.", 0, java.lang.Integer.MAX_VALUE, patientInstruction);
2763        case 1538891575: /*relevantHistory*/  return new Property("relevantHistory", "Reference(Provenance)", "Key events in the history of the request.", 0, java.lang.Integer.MAX_VALUE, relevantHistory);
2764        default: return super.getNamedProperty(_hash, _name, _checkValid);
2765        }
2766
2767      }
2768
2769      @Override
2770      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2771        switch (hash) {
2772        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
2773        case 8911915: /*instantiatesCanonical*/ return this.instantiatesCanonical == null ? new Base[0] : this.instantiatesCanonical.toArray(new Base[this.instantiatesCanonical.size()]); // CanonicalType
2774        case -1926393373: /*instantiatesUri*/ return this.instantiatesUri == null ? new Base[0] : this.instantiatesUri.toArray(new Base[this.instantiatesUri.size()]); // UriType
2775        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
2776        case -430332865: /*replaces*/ return this.replaces == null ? new Base[0] : this.replaces.toArray(new Base[this.replaces.size()]); // Reference
2777        case 395923612: /*requisition*/ return this.requisition == null ? new Base[0] : new Base[] {this.requisition}; // Identifier
2778        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<RequestStatus>
2779        case -1183762788: /*intent*/ return this.intent == null ? new Base[0] : new Base[] {this.intent}; // Enumeration<RequestIntent>
2780        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept
2781        case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // Enumeration<RequestPriority>
2782        case -1788508167: /*doNotPerform*/ return this.doNotPerform == null ? new Base[0] : new Base[] {this.doNotPerform}; // BooleanType
2783        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableReference
2784        case 1187338559: /*orderDetail*/ return this.orderDetail == null ? new Base[0] : this.orderDetail.toArray(new Base[this.orderDetail.size()]); // ServiceRequestOrderDetailComponent
2785        case -1285004149: /*quantity*/ return this.quantity == null ? new Base[0] : new Base[] {this.quantity}; // DataType
2786        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
2787        case 97604824: /*focus*/ return this.focus == null ? new Base[0] : this.focus.toArray(new Base[this.focus.size()]); // Reference
2788        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
2789        case 1687874001: /*occurrence*/ return this.occurrence == null ? new Base[0] : new Base[] {this.occurrence}; // DataType
2790        case -1432923513: /*asNeeded*/ return this.asNeeded == null ? new Base[0] : new Base[] {this.asNeeded}; // DataType
2791        case -1500852503: /*authoredOn*/ return this.authoredOn == null ? new Base[0] : new Base[] {this.authoredOn}; // DateTimeType
2792        case 693933948: /*requester*/ return this.requester == null ? new Base[0] : new Base[] {this.requester}; // Reference
2793        case -901444568: /*performerType*/ return this.performerType == null ? new Base[0] : new Base[] {this.performerType}; // CodeableConcept
2794        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : this.performer.toArray(new Base[this.performer.size()]); // Reference
2795        case 1901043637: /*location*/ return this.location == null ? new Base[0] : this.location.toArray(new Base[this.location.size()]); // CodeableReference
2796        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableReference
2797        case 73049818: /*insurance*/ return this.insurance == null ? new Base[0] : this.insurance.toArray(new Base[this.insurance.size()]); // Reference
2798        case 1922406657: /*supportingInfo*/ return this.supportingInfo == null ? new Base[0] : this.supportingInfo.toArray(new Base[this.supportingInfo.size()]); // CodeableReference
2799        case -2132868344: /*specimen*/ return this.specimen == null ? new Base[0] : this.specimen.toArray(new Base[this.specimen.size()]); // Reference
2800        case 1702620169: /*bodySite*/ return this.bodySite == null ? new Base[0] : this.bodySite.toArray(new Base[this.bodySite.size()]); // CodeableConcept
2801        case -1001731599: /*bodyStructure*/ return this.bodyStructure == null ? new Base[0] : new Base[] {this.bodyStructure}; // Reference
2802        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
2803        case 737543241: /*patientInstruction*/ return this.patientInstruction == null ? new Base[0] : this.patientInstruction.toArray(new Base[this.patientInstruction.size()]); // ServiceRequestPatientInstructionComponent
2804        case 1538891575: /*relevantHistory*/ return this.relevantHistory == null ? new Base[0] : this.relevantHistory.toArray(new Base[this.relevantHistory.size()]); // Reference
2805        default: return super.getProperty(hash, name, checkValid);
2806        }
2807
2808      }
2809
2810      @Override
2811      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2812        switch (hash) {
2813        case -1618432855: // identifier
2814          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
2815          return value;
2816        case 8911915: // instantiatesCanonical
2817          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value)); // CanonicalType
2818          return value;
2819        case -1926393373: // instantiatesUri
2820          this.getInstantiatesUri().add(TypeConvertor.castToUri(value)); // UriType
2821          return value;
2822        case -332612366: // basedOn
2823          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
2824          return value;
2825        case -430332865: // replaces
2826          this.getReplaces().add(TypeConvertor.castToReference(value)); // Reference
2827          return value;
2828        case 395923612: // requisition
2829          this.requisition = TypeConvertor.castToIdentifier(value); // Identifier
2830          return value;
2831        case -892481550: // status
2832          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2833          this.status = (Enumeration) value; // Enumeration<RequestStatus>
2834          return value;
2835        case -1183762788: // intent
2836          value = new RequestIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
2837          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
2838          return value;
2839        case 50511102: // category
2840          this.getCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2841          return value;
2842        case -1165461084: // priority
2843          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
2844          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
2845          return value;
2846        case -1788508167: // doNotPerform
2847          this.doNotPerform = TypeConvertor.castToBoolean(value); // BooleanType
2848          return value;
2849        case 3059181: // code
2850          this.code = TypeConvertor.castToCodeableReference(value); // CodeableReference
2851          return value;
2852        case 1187338559: // orderDetail
2853          this.getOrderDetail().add((ServiceRequestOrderDetailComponent) value); // ServiceRequestOrderDetailComponent
2854          return value;
2855        case -1285004149: // quantity
2856          this.quantity = TypeConvertor.castToType(value); // DataType
2857          return value;
2858        case -1867885268: // subject
2859          this.subject = TypeConvertor.castToReference(value); // Reference
2860          return value;
2861        case 97604824: // focus
2862          this.getFocus().add(TypeConvertor.castToReference(value)); // Reference
2863          return value;
2864        case 1524132147: // encounter
2865          this.encounter = TypeConvertor.castToReference(value); // Reference
2866          return value;
2867        case 1687874001: // occurrence
2868          this.occurrence = TypeConvertor.castToType(value); // DataType
2869          return value;
2870        case -1432923513: // asNeeded
2871          this.asNeeded = TypeConvertor.castToType(value); // DataType
2872          return value;
2873        case -1500852503: // authoredOn
2874          this.authoredOn = TypeConvertor.castToDateTime(value); // DateTimeType
2875          return value;
2876        case 693933948: // requester
2877          this.requester = TypeConvertor.castToReference(value); // Reference
2878          return value;
2879        case -901444568: // performerType
2880          this.performerType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2881          return value;
2882        case 481140686: // performer
2883          this.getPerformer().add(TypeConvertor.castToReference(value)); // Reference
2884          return value;
2885        case 1901043637: // location
2886          this.getLocation().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
2887          return value;
2888        case -934964668: // reason
2889          this.getReason().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
2890          return value;
2891        case 73049818: // insurance
2892          this.getInsurance().add(TypeConvertor.castToReference(value)); // Reference
2893          return value;
2894        case 1922406657: // supportingInfo
2895          this.getSupportingInfo().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
2896          return value;
2897        case -2132868344: // specimen
2898          this.getSpecimen().add(TypeConvertor.castToReference(value)); // Reference
2899          return value;
2900        case 1702620169: // bodySite
2901          this.getBodySite().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2902          return value;
2903        case -1001731599: // bodyStructure
2904          this.bodyStructure = TypeConvertor.castToReference(value); // Reference
2905          return value;
2906        case 3387378: // note
2907          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
2908          return value;
2909        case 737543241: // patientInstruction
2910          this.getPatientInstruction().add((ServiceRequestPatientInstructionComponent) value); // ServiceRequestPatientInstructionComponent
2911          return value;
2912        case 1538891575: // relevantHistory
2913          this.getRelevantHistory().add(TypeConvertor.castToReference(value)); // Reference
2914          return value;
2915        default: return super.setProperty(hash, name, value);
2916        }
2917
2918      }
2919
2920      @Override
2921      public Base setProperty(String name, Base value) throws FHIRException {
2922        if (name.equals("identifier")) {
2923          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
2924        } else if (name.equals("instantiatesCanonical")) {
2925          this.getInstantiatesCanonical().add(TypeConvertor.castToCanonical(value));
2926        } else if (name.equals("instantiatesUri")) {
2927          this.getInstantiatesUri().add(TypeConvertor.castToUri(value));
2928        } else if (name.equals("basedOn")) {
2929          this.getBasedOn().add(TypeConvertor.castToReference(value));
2930        } else if (name.equals("replaces")) {
2931          this.getReplaces().add(TypeConvertor.castToReference(value));
2932        } else if (name.equals("requisition")) {
2933          this.requisition = TypeConvertor.castToIdentifier(value); // Identifier
2934        } else if (name.equals("status")) {
2935          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2936          this.status = (Enumeration) value; // Enumeration<RequestStatus>
2937        } else if (name.equals("intent")) {
2938          value = new RequestIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
2939          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
2940        } else if (name.equals("category")) {
2941          this.getCategory().add(TypeConvertor.castToCodeableConcept(value));
2942        } else if (name.equals("priority")) {
2943          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
2944          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
2945        } else if (name.equals("doNotPerform")) {
2946          this.doNotPerform = TypeConvertor.castToBoolean(value); // BooleanType
2947        } else if (name.equals("code")) {
2948          this.code = TypeConvertor.castToCodeableReference(value); // CodeableReference
2949        } else if (name.equals("orderDetail")) {
2950          this.getOrderDetail().add((ServiceRequestOrderDetailComponent) value);
2951        } else if (name.equals("quantity[x]")) {
2952          this.quantity = TypeConvertor.castToType(value); // DataType
2953        } else if (name.equals("subject")) {
2954          this.subject = TypeConvertor.castToReference(value); // Reference
2955        } else if (name.equals("focus")) {
2956          this.getFocus().add(TypeConvertor.castToReference(value));
2957        } else if (name.equals("encounter")) {
2958          this.encounter = TypeConvertor.castToReference(value); // Reference
2959        } else if (name.equals("occurrence[x]")) {
2960          this.occurrence = TypeConvertor.castToType(value); // DataType
2961        } else if (name.equals("asNeeded[x]")) {
2962          this.asNeeded = TypeConvertor.castToType(value); // DataType
2963        } else if (name.equals("authoredOn")) {
2964          this.authoredOn = TypeConvertor.castToDateTime(value); // DateTimeType
2965        } else if (name.equals("requester")) {
2966          this.requester = TypeConvertor.castToReference(value); // Reference
2967        } else if (name.equals("performerType")) {
2968          this.performerType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2969        } else if (name.equals("performer")) {
2970          this.getPerformer().add(TypeConvertor.castToReference(value));
2971        } else if (name.equals("location")) {
2972          this.getLocation().add(TypeConvertor.castToCodeableReference(value));
2973        } else if (name.equals("reason")) {
2974          this.getReason().add(TypeConvertor.castToCodeableReference(value));
2975        } else if (name.equals("insurance")) {
2976          this.getInsurance().add(TypeConvertor.castToReference(value));
2977        } else if (name.equals("supportingInfo")) {
2978          this.getSupportingInfo().add(TypeConvertor.castToCodeableReference(value));
2979        } else if (name.equals("specimen")) {
2980          this.getSpecimen().add(TypeConvertor.castToReference(value));
2981        } else if (name.equals("bodySite")) {
2982          this.getBodySite().add(TypeConvertor.castToCodeableConcept(value));
2983        } else if (name.equals("bodyStructure")) {
2984          this.bodyStructure = TypeConvertor.castToReference(value); // Reference
2985        } else if (name.equals("note")) {
2986          this.getNote().add(TypeConvertor.castToAnnotation(value));
2987        } else if (name.equals("patientInstruction")) {
2988          this.getPatientInstruction().add((ServiceRequestPatientInstructionComponent) value);
2989        } else if (name.equals("relevantHistory")) {
2990          this.getRelevantHistory().add(TypeConvertor.castToReference(value));
2991        } else
2992          return super.setProperty(name, value);
2993        return value;
2994      }
2995
2996  @Override
2997  public void removeChild(String name, Base value) throws FHIRException {
2998        if (name.equals("identifier")) {
2999          this.getIdentifier().remove(value);
3000        } else if (name.equals("instantiatesCanonical")) {
3001          this.getInstantiatesCanonical().remove(value);
3002        } else if (name.equals("instantiatesUri")) {
3003          this.getInstantiatesUri().remove(value);
3004        } else if (name.equals("basedOn")) {
3005          this.getBasedOn().remove(value);
3006        } else if (name.equals("replaces")) {
3007          this.getReplaces().remove(value);
3008        } else if (name.equals("requisition")) {
3009          this.requisition = null;
3010        } else if (name.equals("status")) {
3011          value = new RequestStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3012          this.status = (Enumeration) value; // Enumeration<RequestStatus>
3013        } else if (name.equals("intent")) {
3014          value = new RequestIntentEnumFactory().fromType(TypeConvertor.castToCode(value));
3015          this.intent = (Enumeration) value; // Enumeration<RequestIntent>
3016        } else if (name.equals("category")) {
3017          this.getCategory().remove(value);
3018        } else if (name.equals("priority")) {
3019          value = new RequestPriorityEnumFactory().fromType(TypeConvertor.castToCode(value));
3020          this.priority = (Enumeration) value; // Enumeration<RequestPriority>
3021        } else if (name.equals("doNotPerform")) {
3022          this.doNotPerform = null;
3023        } else if (name.equals("code")) {
3024          this.code = null;
3025        } else if (name.equals("orderDetail")) {
3026          this.getOrderDetail().remove((ServiceRequestOrderDetailComponent) value);
3027        } else if (name.equals("quantity[x]")) {
3028          this.quantity = null;
3029        } else if (name.equals("subject")) {
3030          this.subject = null;
3031        } else if (name.equals("focus")) {
3032          this.getFocus().remove(value);
3033        } else if (name.equals("encounter")) {
3034          this.encounter = null;
3035        } else if (name.equals("occurrence[x]")) {
3036          this.occurrence = null;
3037        } else if (name.equals("asNeeded[x]")) {
3038          this.asNeeded = null;
3039        } else if (name.equals("authoredOn")) {
3040          this.authoredOn = null;
3041        } else if (name.equals("requester")) {
3042          this.requester = null;
3043        } else if (name.equals("performerType")) {
3044          this.performerType = null;
3045        } else if (name.equals("performer")) {
3046          this.getPerformer().remove(value);
3047        } else if (name.equals("location")) {
3048          this.getLocation().remove(value);
3049        } else if (name.equals("reason")) {
3050          this.getReason().remove(value);
3051        } else if (name.equals("insurance")) {
3052          this.getInsurance().remove(value);
3053        } else if (name.equals("supportingInfo")) {
3054          this.getSupportingInfo().remove(value);
3055        } else if (name.equals("specimen")) {
3056          this.getSpecimen().remove(value);
3057        } else if (name.equals("bodySite")) {
3058          this.getBodySite().remove(value);
3059        } else if (name.equals("bodyStructure")) {
3060          this.bodyStructure = null;
3061        } else if (name.equals("note")) {
3062          this.getNote().remove(value);
3063        } else if (name.equals("patientInstruction")) {
3064          this.getPatientInstruction().remove((ServiceRequestPatientInstructionComponent) value);
3065        } else if (name.equals("relevantHistory")) {
3066          this.getRelevantHistory().remove(value);
3067        } else
3068          super.removeChild(name, value);
3069        
3070      }
3071
3072      @Override
3073      public Base makeProperty(int hash, String name) throws FHIRException {
3074        switch (hash) {
3075        case -1618432855:  return addIdentifier(); 
3076        case 8911915:  return addInstantiatesCanonicalElement();
3077        case -1926393373:  return addInstantiatesUriElement();
3078        case -332612366:  return addBasedOn(); 
3079        case -430332865:  return addReplaces(); 
3080        case 395923612:  return getRequisition();
3081        case -892481550:  return getStatusElement();
3082        case -1183762788:  return getIntentElement();
3083        case 50511102:  return addCategory(); 
3084        case -1165461084:  return getPriorityElement();
3085        case -1788508167:  return getDoNotPerformElement();
3086        case 3059181:  return getCode();
3087        case 1187338559:  return addOrderDetail(); 
3088        case -515002347:  return getQuantity();
3089        case -1285004149:  return getQuantity();
3090        case -1867885268:  return getSubject();
3091        case 97604824:  return addFocus(); 
3092        case 1524132147:  return getEncounter();
3093        case -2022646513:  return getOccurrence();
3094        case 1687874001:  return getOccurrence();
3095        case -544329575:  return getAsNeeded();
3096        case -1432923513:  return getAsNeeded();
3097        case -1500852503:  return getAuthoredOnElement();
3098        case 693933948:  return getRequester();
3099        case -901444568:  return getPerformerType();
3100        case 481140686:  return addPerformer(); 
3101        case 1901043637:  return addLocation(); 
3102        case -934964668:  return addReason(); 
3103        case 73049818:  return addInsurance(); 
3104        case 1922406657:  return addSupportingInfo(); 
3105        case -2132868344:  return addSpecimen(); 
3106        case 1702620169:  return addBodySite(); 
3107        case -1001731599:  return getBodyStructure();
3108        case 3387378:  return addNote(); 
3109        case 737543241:  return addPatientInstruction(); 
3110        case 1538891575:  return addRelevantHistory(); 
3111        default: return super.makeProperty(hash, name);
3112        }
3113
3114      }
3115
3116      @Override
3117      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3118        switch (hash) {
3119        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
3120        case 8911915: /*instantiatesCanonical*/ return new String[] {"canonical"};
3121        case -1926393373: /*instantiatesUri*/ return new String[] {"uri"};
3122        case -332612366: /*basedOn*/ return new String[] {"Reference"};
3123        case -430332865: /*replaces*/ return new String[] {"Reference"};
3124        case 395923612: /*requisition*/ return new String[] {"Identifier"};
3125        case -892481550: /*status*/ return new String[] {"code"};
3126        case -1183762788: /*intent*/ return new String[] {"code"};
3127        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
3128        case -1165461084: /*priority*/ return new String[] {"code"};
3129        case -1788508167: /*doNotPerform*/ return new String[] {"boolean"};
3130        case 3059181: /*code*/ return new String[] {"CodeableReference"};
3131        case 1187338559: /*orderDetail*/ return new String[] {};
3132        case -1285004149: /*quantity*/ return new String[] {"Quantity", "Ratio", "Range"};
3133        case -1867885268: /*subject*/ return new String[] {"Reference"};
3134        case 97604824: /*focus*/ return new String[] {"Reference"};
3135        case 1524132147: /*encounter*/ return new String[] {"Reference"};
3136        case 1687874001: /*occurrence*/ return new String[] {"dateTime", "Period", "Timing"};
3137        case -1432923513: /*asNeeded*/ return new String[] {"boolean", "CodeableConcept"};
3138        case -1500852503: /*authoredOn*/ return new String[] {"dateTime"};
3139        case 693933948: /*requester*/ return new String[] {"Reference"};
3140        case -901444568: /*performerType*/ return new String[] {"CodeableConcept"};
3141        case 481140686: /*performer*/ return new String[] {"Reference"};
3142        case 1901043637: /*location*/ return new String[] {"CodeableReference"};
3143        case -934964668: /*reason*/ return new String[] {"CodeableReference"};
3144        case 73049818: /*insurance*/ return new String[] {"Reference"};
3145        case 1922406657: /*supportingInfo*/ return new String[] {"CodeableReference"};
3146        case -2132868344: /*specimen*/ return new String[] {"Reference"};
3147        case 1702620169: /*bodySite*/ return new String[] {"CodeableConcept"};
3148        case -1001731599: /*bodyStructure*/ return new String[] {"Reference"};
3149        case 3387378: /*note*/ return new String[] {"Annotation"};
3150        case 737543241: /*patientInstruction*/ return new String[] {};
3151        case 1538891575: /*relevantHistory*/ return new String[] {"Reference"};
3152        default: return super.getTypesForProperty(hash, name);
3153        }
3154
3155      }
3156
3157      @Override
3158      public Base addChild(String name) throws FHIRException {
3159        if (name.equals("identifier")) {
3160          return addIdentifier();
3161        }
3162        else if (name.equals("instantiatesCanonical")) {
3163          throw new FHIRException("Cannot call addChild on a singleton property ServiceRequest.instantiatesCanonical");
3164        }
3165        else if (name.equals("instantiatesUri")) {
3166          throw new FHIRException("Cannot call addChild on a singleton property ServiceRequest.instantiatesUri");
3167        }
3168        else if (name.equals("basedOn")) {
3169          return addBasedOn();
3170        }
3171        else if (name.equals("replaces")) {
3172          return addReplaces();
3173        }
3174        else if (name.equals("requisition")) {
3175          this.requisition = new Identifier();
3176          return this.requisition;
3177        }
3178        else if (name.equals("status")) {
3179          throw new FHIRException("Cannot call addChild on a singleton property ServiceRequest.status");
3180        }
3181        else if (name.equals("intent")) {
3182          throw new FHIRException("Cannot call addChild on a singleton property ServiceRequest.intent");
3183        }
3184        else if (name.equals("category")) {
3185          return addCategory();
3186        }
3187        else if (name.equals("priority")) {
3188          throw new FHIRException("Cannot call addChild on a singleton property ServiceRequest.priority");
3189        }
3190        else if (name.equals("doNotPerform")) {
3191          throw new FHIRException("Cannot call addChild on a singleton property ServiceRequest.doNotPerform");
3192        }
3193        else if (name.equals("code")) {
3194          this.code = new CodeableReference();
3195          return this.code;
3196        }
3197        else if (name.equals("orderDetail")) {
3198          return addOrderDetail();
3199        }
3200        else if (name.equals("quantityQuantity")) {
3201          this.quantity = new Quantity();
3202          return this.quantity;
3203        }
3204        else if (name.equals("quantityRatio")) {
3205          this.quantity = new Ratio();
3206          return this.quantity;
3207        }
3208        else if (name.equals("quantityRange")) {
3209          this.quantity = new Range();
3210          return this.quantity;
3211        }
3212        else if (name.equals("subject")) {
3213          this.subject = new Reference();
3214          return this.subject;
3215        }
3216        else if (name.equals("focus")) {
3217          return addFocus();
3218        }
3219        else if (name.equals("encounter")) {
3220          this.encounter = new Reference();
3221          return this.encounter;
3222        }
3223        else if (name.equals("occurrenceDateTime")) {
3224          this.occurrence = new DateTimeType();
3225          return this.occurrence;
3226        }
3227        else if (name.equals("occurrencePeriod")) {
3228          this.occurrence = new Period();
3229          return this.occurrence;
3230        }
3231        else if (name.equals("occurrenceTiming")) {
3232          this.occurrence = new Timing();
3233          return this.occurrence;
3234        }
3235        else if (name.equals("asNeededBoolean")) {
3236          this.asNeeded = new BooleanType();
3237          return this.asNeeded;
3238        }
3239        else if (name.equals("asNeededCodeableConcept")) {
3240          this.asNeeded = new CodeableConcept();
3241          return this.asNeeded;
3242        }
3243        else if (name.equals("authoredOn")) {
3244          throw new FHIRException("Cannot call addChild on a singleton property ServiceRequest.authoredOn");
3245        }
3246        else if (name.equals("requester")) {
3247          this.requester = new Reference();
3248          return this.requester;
3249        }
3250        else if (name.equals("performerType")) {
3251          this.performerType = new CodeableConcept();
3252          return this.performerType;
3253        }
3254        else if (name.equals("performer")) {
3255          return addPerformer();
3256        }
3257        else if (name.equals("location")) {
3258          return addLocation();
3259        }
3260        else if (name.equals("reason")) {
3261          return addReason();
3262        }
3263        else if (name.equals("insurance")) {
3264          return addInsurance();
3265        }
3266        else if (name.equals("supportingInfo")) {
3267          return addSupportingInfo();
3268        }
3269        else if (name.equals("specimen")) {
3270          return addSpecimen();
3271        }
3272        else if (name.equals("bodySite")) {
3273          return addBodySite();
3274        }
3275        else if (name.equals("bodyStructure")) {
3276          this.bodyStructure = new Reference();
3277          return this.bodyStructure;
3278        }
3279        else if (name.equals("note")) {
3280          return addNote();
3281        }
3282        else if (name.equals("patientInstruction")) {
3283          return addPatientInstruction();
3284        }
3285        else if (name.equals("relevantHistory")) {
3286          return addRelevantHistory();
3287        }
3288        else
3289          return super.addChild(name);
3290      }
3291
3292  public String fhirType() {
3293    return "ServiceRequest";
3294
3295  }
3296
3297      public ServiceRequest copy() {
3298        ServiceRequest dst = new ServiceRequest();
3299        copyValues(dst);
3300        return dst;
3301      }
3302
3303      public void copyValues(ServiceRequest dst) {
3304        super.copyValues(dst);
3305        if (identifier != null) {
3306          dst.identifier = new ArrayList<Identifier>();
3307          for (Identifier i : identifier)
3308            dst.identifier.add(i.copy());
3309        };
3310        if (instantiatesCanonical != null) {
3311          dst.instantiatesCanonical = new ArrayList<CanonicalType>();
3312          for (CanonicalType i : instantiatesCanonical)
3313            dst.instantiatesCanonical.add(i.copy());
3314        };
3315        if (instantiatesUri != null) {
3316          dst.instantiatesUri = new ArrayList<UriType>();
3317          for (UriType i : instantiatesUri)
3318            dst.instantiatesUri.add(i.copy());
3319        };
3320        if (basedOn != null) {
3321          dst.basedOn = new ArrayList<Reference>();
3322          for (Reference i : basedOn)
3323            dst.basedOn.add(i.copy());
3324        };
3325        if (replaces != null) {
3326          dst.replaces = new ArrayList<Reference>();
3327          for (Reference i : replaces)
3328            dst.replaces.add(i.copy());
3329        };
3330        dst.requisition = requisition == null ? null : requisition.copy();
3331        dst.status = status == null ? null : status.copy();
3332        dst.intent = intent == null ? null : intent.copy();
3333        if (category != null) {
3334          dst.category = new ArrayList<CodeableConcept>();
3335          for (CodeableConcept i : category)
3336            dst.category.add(i.copy());
3337        };
3338        dst.priority = priority == null ? null : priority.copy();
3339        dst.doNotPerform = doNotPerform == null ? null : doNotPerform.copy();
3340        dst.code = code == null ? null : code.copy();
3341        if (orderDetail != null) {
3342          dst.orderDetail = new ArrayList<ServiceRequestOrderDetailComponent>();
3343          for (ServiceRequestOrderDetailComponent i : orderDetail)
3344            dst.orderDetail.add(i.copy());
3345        };
3346        dst.quantity = quantity == null ? null : quantity.copy();
3347        dst.subject = subject == null ? null : subject.copy();
3348        if (focus != null) {
3349          dst.focus = new ArrayList<Reference>();
3350          for (Reference i : focus)
3351            dst.focus.add(i.copy());
3352        };
3353        dst.encounter = encounter == null ? null : encounter.copy();
3354        dst.occurrence = occurrence == null ? null : occurrence.copy();
3355        dst.asNeeded = asNeeded == null ? null : asNeeded.copy();
3356        dst.authoredOn = authoredOn == null ? null : authoredOn.copy();
3357        dst.requester = requester == null ? null : requester.copy();
3358        dst.performerType = performerType == null ? null : performerType.copy();
3359        if (performer != null) {
3360          dst.performer = new ArrayList<Reference>();
3361          for (Reference i : performer)
3362            dst.performer.add(i.copy());
3363        };
3364        if (location != null) {
3365          dst.location = new ArrayList<CodeableReference>();
3366          for (CodeableReference i : location)
3367            dst.location.add(i.copy());
3368        };
3369        if (reason != null) {
3370          dst.reason = new ArrayList<CodeableReference>();
3371          for (CodeableReference i : reason)
3372            dst.reason.add(i.copy());
3373        };
3374        if (insurance != null) {
3375          dst.insurance = new ArrayList<Reference>();
3376          for (Reference i : insurance)
3377            dst.insurance.add(i.copy());
3378        };
3379        if (supportingInfo != null) {
3380          dst.supportingInfo = new ArrayList<CodeableReference>();
3381          for (CodeableReference i : supportingInfo)
3382            dst.supportingInfo.add(i.copy());
3383        };
3384        if (specimen != null) {
3385          dst.specimen = new ArrayList<Reference>();
3386          for (Reference i : specimen)
3387            dst.specimen.add(i.copy());
3388        };
3389        if (bodySite != null) {
3390          dst.bodySite = new ArrayList<CodeableConcept>();
3391          for (CodeableConcept i : bodySite)
3392            dst.bodySite.add(i.copy());
3393        };
3394        dst.bodyStructure = bodyStructure == null ? null : bodyStructure.copy();
3395        if (note != null) {
3396          dst.note = new ArrayList<Annotation>();
3397          for (Annotation i : note)
3398            dst.note.add(i.copy());
3399        };
3400        if (patientInstruction != null) {
3401          dst.patientInstruction = new ArrayList<ServiceRequestPatientInstructionComponent>();
3402          for (ServiceRequestPatientInstructionComponent i : patientInstruction)
3403            dst.patientInstruction.add(i.copy());
3404        };
3405        if (relevantHistory != null) {
3406          dst.relevantHistory = new ArrayList<Reference>();
3407          for (Reference i : relevantHistory)
3408            dst.relevantHistory.add(i.copy());
3409        };
3410      }
3411
3412      protected ServiceRequest typedCopy() {
3413        return copy();
3414      }
3415
3416      @Override
3417      public boolean equalsDeep(Base other_) {
3418        if (!super.equalsDeep(other_))
3419          return false;
3420        if (!(other_ instanceof ServiceRequest))
3421          return false;
3422        ServiceRequest o = (ServiceRequest) other_;
3423        return compareDeep(identifier, o.identifier, true) && compareDeep(instantiatesCanonical, o.instantiatesCanonical, true)
3424           && compareDeep(instantiatesUri, o.instantiatesUri, true) && compareDeep(basedOn, o.basedOn, true)
3425           && compareDeep(replaces, o.replaces, true) && compareDeep(requisition, o.requisition, true) && compareDeep(status, o.status, true)
3426           && compareDeep(intent, o.intent, true) && compareDeep(category, o.category, true) && compareDeep(priority, o.priority, true)
3427           && compareDeep(doNotPerform, o.doNotPerform, true) && compareDeep(code, o.code, true) && compareDeep(orderDetail, o.orderDetail, true)
3428           && compareDeep(quantity, o.quantity, true) && compareDeep(subject, o.subject, true) && compareDeep(focus, o.focus, true)
3429           && compareDeep(encounter, o.encounter, true) && compareDeep(occurrence, o.occurrence, true) && compareDeep(asNeeded, o.asNeeded, true)
3430           && compareDeep(authoredOn, o.authoredOn, true) && compareDeep(requester, o.requester, true) && compareDeep(performerType, o.performerType, true)
3431           && compareDeep(performer, o.performer, true) && compareDeep(location, o.location, true) && compareDeep(reason, o.reason, true)
3432           && compareDeep(insurance, o.insurance, true) && compareDeep(supportingInfo, o.supportingInfo, true)
3433           && compareDeep(specimen, o.specimen, true) && compareDeep(bodySite, o.bodySite, true) && compareDeep(bodyStructure, o.bodyStructure, true)
3434           && compareDeep(note, o.note, true) && compareDeep(patientInstruction, o.patientInstruction, true)
3435           && compareDeep(relevantHistory, o.relevantHistory, true);
3436      }
3437
3438      @Override
3439      public boolean equalsShallow(Base other_) {
3440        if (!super.equalsShallow(other_))
3441          return false;
3442        if (!(other_ instanceof ServiceRequest))
3443          return false;
3444        ServiceRequest o = (ServiceRequest) other_;
3445        return compareValues(instantiatesCanonical, o.instantiatesCanonical, true) && compareValues(instantiatesUri, o.instantiatesUri, true)
3446           && compareValues(status, o.status, true) && compareValues(intent, o.intent, true) && compareValues(priority, o.priority, true)
3447           && compareValues(doNotPerform, o.doNotPerform, true) && compareValues(authoredOn, o.authoredOn, true)
3448          ;
3449      }
3450
3451      public boolean isEmpty() {
3452        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, instantiatesCanonical
3453          , instantiatesUri, basedOn, replaces, requisition, status, intent, category, priority
3454          , doNotPerform, code, orderDetail, quantity, subject, focus, encounter, occurrence
3455          , asNeeded, authoredOn, requester, performerType, performer, location, reason
3456          , insurance, supportingInfo, specimen, bodySite, bodyStructure, note, patientInstruction
3457          , relevantHistory);
3458      }
3459
3460  @Override
3461  public ResourceType getResourceType() {
3462    return ResourceType.ServiceRequest;
3463   }
3464
3465 /**
3466   * Search parameter: <b>authored</b>
3467   * <p>
3468   * Description: <b>Date request signed</b><br>
3469   * Type: <b>date</b><br>
3470   * Path: <b>ServiceRequest.authoredOn</b><br>
3471   * </p>
3472   */
3473  @SearchParamDefinition(name="authored", path="ServiceRequest.authoredOn", description="Date request signed", type="date" )
3474  public static final String SP_AUTHORED = "authored";
3475 /**
3476   * <b>Fluent Client</b> search parameter constant for <b>authored</b>
3477   * <p>
3478   * Description: <b>Date request signed</b><br>
3479   * Type: <b>date</b><br>
3480   * Path: <b>ServiceRequest.authoredOn</b><br>
3481   * </p>
3482   */
3483  public static final ca.uhn.fhir.rest.gclient.DateClientParam AUTHORED = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_AUTHORED);
3484
3485 /**
3486   * Search parameter: <b>based-on</b>
3487   * <p>
3488   * Description: <b>What request fulfills</b><br>
3489   * Type: <b>reference</b><br>
3490   * Path: <b>ServiceRequest.basedOn</b><br>
3491   * </p>
3492   */
3493  @SearchParamDefinition(name="based-on", path="ServiceRequest.basedOn", description="What request fulfills", type="reference", target={CarePlan.class, MedicationRequest.class, ServiceRequest.class } )
3494  public static final String SP_BASED_ON = "based-on";
3495 /**
3496   * <b>Fluent Client</b> search parameter constant for <b>based-on</b>
3497   * <p>
3498   * Description: <b>What request fulfills</b><br>
3499   * Type: <b>reference</b><br>
3500   * Path: <b>ServiceRequest.basedOn</b><br>
3501   * </p>
3502   */
3503  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASED_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASED_ON);
3504
3505/**
3506   * Constant for fluent queries to be used to add include statements. Specifies
3507   * the path value of "<b>ServiceRequest:based-on</b>".
3508   */
3509  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASED_ON = new ca.uhn.fhir.model.api.Include("ServiceRequest:based-on").toLocked();
3510
3511 /**
3512   * Search parameter: <b>body-site</b>
3513   * <p>
3514   * Description: <b>Where procedure is going to be done</b><br>
3515   * Type: <b>token</b><br>
3516   * Path: <b>ServiceRequest.bodySite</b><br>
3517   * </p>
3518   */
3519  @SearchParamDefinition(name="body-site", path="ServiceRequest.bodySite", description="Where procedure is going to be done", type="token" )
3520  public static final String SP_BODY_SITE = "body-site";
3521 /**
3522   * <b>Fluent Client</b> search parameter constant for <b>body-site</b>
3523   * <p>
3524   * Description: <b>Where procedure is going to be done</b><br>
3525   * Type: <b>token</b><br>
3526   * Path: <b>ServiceRequest.bodySite</b><br>
3527   * </p>
3528   */
3529  public static final ca.uhn.fhir.rest.gclient.TokenClientParam BODY_SITE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_BODY_SITE);
3530
3531 /**
3532   * Search parameter: <b>body-structure</b>
3533   * <p>
3534   * Description: <b>Body structure Where procedure is going to be done</b><br>
3535   * Type: <b>reference</b><br>
3536   * Path: <b>ServiceRequest.bodyStructure</b><br>
3537   * </p>
3538   */
3539  @SearchParamDefinition(name="body-structure", path="ServiceRequest.bodyStructure", description="Body structure Where procedure is going to be done", type="reference", target={BodyStructure.class } )
3540  public static final String SP_BODY_STRUCTURE = "body-structure";
3541 /**
3542   * <b>Fluent Client</b> search parameter constant for <b>body-structure</b>
3543   * <p>
3544   * Description: <b>Body structure Where procedure is going to be done</b><br>
3545   * Type: <b>reference</b><br>
3546   * Path: <b>ServiceRequest.bodyStructure</b><br>
3547   * </p>
3548   */
3549  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BODY_STRUCTURE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BODY_STRUCTURE);
3550
3551/**
3552   * Constant for fluent queries to be used to add include statements. Specifies
3553   * the path value of "<b>ServiceRequest:body-structure</b>".
3554   */
3555  public static final ca.uhn.fhir.model.api.Include INCLUDE_BODY_STRUCTURE = new ca.uhn.fhir.model.api.Include("ServiceRequest:body-structure").toLocked();
3556
3557 /**
3558   * Search parameter: <b>category</b>
3559   * <p>
3560   * Description: <b>Classification of service</b><br>
3561   * Type: <b>token</b><br>
3562   * Path: <b>ServiceRequest.category</b><br>
3563   * </p>
3564   */
3565  @SearchParamDefinition(name="category", path="ServiceRequest.category", description="Classification of service", type="token" )
3566  public static final String SP_CATEGORY = "category";
3567 /**
3568   * <b>Fluent Client</b> search parameter constant for <b>category</b>
3569   * <p>
3570   * Description: <b>Classification of service</b><br>
3571   * Type: <b>token</b><br>
3572   * Path: <b>ServiceRequest.category</b><br>
3573   * </p>
3574   */
3575  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
3576
3577 /**
3578   * Search parameter: <b>code-concept</b>
3579   * <p>
3580   * Description: <b>What is being requested/ordered</b><br>
3581   * Type: <b>token</b><br>
3582   * Path: <b>ServiceRequest.code.concept</b><br>
3583   * </p>
3584   */
3585  @SearchParamDefinition(name="code-concept", path="ServiceRequest.code.concept", description="What is being requested/ordered", type="token" )
3586  public static final String SP_CODE_CONCEPT = "code-concept";
3587 /**
3588   * <b>Fluent Client</b> search parameter constant for <b>code-concept</b>
3589   * <p>
3590   * Description: <b>What is being requested/ordered</b><br>
3591   * Type: <b>token</b><br>
3592   * Path: <b>ServiceRequest.code.concept</b><br>
3593   * </p>
3594   */
3595  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE_CONCEPT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE_CONCEPT);
3596
3597 /**
3598   * Search parameter: <b>code-reference</b>
3599   * <p>
3600   * Description: <b>What is being requested/ordered</b><br>
3601   * Type: <b>reference</b><br>
3602   * Path: <b>ServiceRequest.code.reference</b><br>
3603   * </p>
3604   */
3605  @SearchParamDefinition(name="code-reference", path="ServiceRequest.code.reference", description="What is being requested/ordered", type="reference", target={ActivityDefinition.class, PlanDefinition.class } )
3606  public static final String SP_CODE_REFERENCE = "code-reference";
3607 /**
3608   * <b>Fluent Client</b> search parameter constant for <b>code-reference</b>
3609   * <p>
3610   * Description: <b>What is being requested/ordered</b><br>
3611   * Type: <b>reference</b><br>
3612   * Path: <b>ServiceRequest.code.reference</b><br>
3613   * </p>
3614   */
3615  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam CODE_REFERENCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_CODE_REFERENCE);
3616
3617/**
3618   * Constant for fluent queries to be used to add include statements. Specifies
3619   * the path value of "<b>ServiceRequest:code-reference</b>".
3620   */
3621  public static final ca.uhn.fhir.model.api.Include INCLUDE_CODE_REFERENCE = new ca.uhn.fhir.model.api.Include("ServiceRequest:code-reference").toLocked();
3622
3623 /**
3624   * Search parameter: <b>instantiates-canonical</b>
3625   * <p>
3626   * Description: <b>Instantiates FHIR protocol or definition</b><br>
3627   * Type: <b>reference</b><br>
3628   * Path: <b>ServiceRequest.instantiatesCanonical</b><br>
3629   * </p>
3630   */
3631  @SearchParamDefinition(name="instantiates-canonical", path="ServiceRequest.instantiatesCanonical", description="Instantiates FHIR protocol or definition", type="reference", target={ActivityDefinition.class, PlanDefinition.class } )
3632  public static final String SP_INSTANTIATES_CANONICAL = "instantiates-canonical";
3633 /**
3634   * <b>Fluent Client</b> search parameter constant for <b>instantiates-canonical</b>
3635   * <p>
3636   * Description: <b>Instantiates FHIR protocol or definition</b><br>
3637   * Type: <b>reference</b><br>
3638   * Path: <b>ServiceRequest.instantiatesCanonical</b><br>
3639   * </p>
3640   */
3641  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INSTANTIATES_CANONICAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INSTANTIATES_CANONICAL);
3642
3643/**
3644   * Constant for fluent queries to be used to add include statements. Specifies
3645   * the path value of "<b>ServiceRequest:instantiates-canonical</b>".
3646   */
3647  public static final ca.uhn.fhir.model.api.Include INCLUDE_INSTANTIATES_CANONICAL = new ca.uhn.fhir.model.api.Include("ServiceRequest:instantiates-canonical").toLocked();
3648
3649 /**
3650   * Search parameter: <b>instantiates-uri</b>
3651   * <p>
3652   * Description: <b>Instantiates external protocol or definition</b><br>
3653   * Type: <b>uri</b><br>
3654   * Path: <b>ServiceRequest.instantiatesUri</b><br>
3655   * </p>
3656   */
3657  @SearchParamDefinition(name="instantiates-uri", path="ServiceRequest.instantiatesUri", description="Instantiates external protocol or definition", type="uri" )
3658  public static final String SP_INSTANTIATES_URI = "instantiates-uri";
3659 /**
3660   * <b>Fluent Client</b> search parameter constant for <b>instantiates-uri</b>
3661   * <p>
3662   * Description: <b>Instantiates external protocol or definition</b><br>
3663   * Type: <b>uri</b><br>
3664   * Path: <b>ServiceRequest.instantiatesUri</b><br>
3665   * </p>
3666   */
3667  public static final ca.uhn.fhir.rest.gclient.UriClientParam INSTANTIATES_URI = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_INSTANTIATES_URI);
3668
3669 /**
3670   * Search parameter: <b>intent</b>
3671   * <p>
3672   * Description: <b>proposal | plan | directive | order +</b><br>
3673   * Type: <b>token</b><br>
3674   * Path: <b>ServiceRequest.intent</b><br>
3675   * </p>
3676   */
3677  @SearchParamDefinition(name="intent", path="ServiceRequest.intent", description="proposal | plan | directive | order +", type="token" )
3678  public static final String SP_INTENT = "intent";
3679 /**
3680   * <b>Fluent Client</b> search parameter constant for <b>intent</b>
3681   * <p>
3682   * Description: <b>proposal | plan | directive | order +</b><br>
3683   * Type: <b>token</b><br>
3684   * Path: <b>ServiceRequest.intent</b><br>
3685   * </p>
3686   */
3687  public static final ca.uhn.fhir.rest.gclient.TokenClientParam INTENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_INTENT);
3688
3689 /**
3690   * Search parameter: <b>occurrence</b>
3691   * <p>
3692   * Description: <b>When service should occur</b><br>
3693   * Type: <b>date</b><br>
3694   * Path: <b>ServiceRequest.occurrence.ofType(dateTime) | ServiceRequest.occurrence.ofType(Period) | ServiceRequest.occurrence.ofType(Timing)</b><br>
3695   * </p>
3696   */
3697  @SearchParamDefinition(name="occurrence", path="ServiceRequest.occurrence.ofType(dateTime) | ServiceRequest.occurrence.ofType(Period) | ServiceRequest.occurrence.ofType(Timing)", description="When service should occur", type="date" )
3698  public static final String SP_OCCURRENCE = "occurrence";
3699 /**
3700   * <b>Fluent Client</b> search parameter constant for <b>occurrence</b>
3701   * <p>
3702   * Description: <b>When service should occur</b><br>
3703   * Type: <b>date</b><br>
3704   * Path: <b>ServiceRequest.occurrence.ofType(dateTime) | ServiceRequest.occurrence.ofType(Period) | ServiceRequest.occurrence.ofType(Timing)</b><br>
3705   * </p>
3706   */
3707  public static final ca.uhn.fhir.rest.gclient.DateClientParam OCCURRENCE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_OCCURRENCE);
3708
3709 /**
3710   * Search parameter: <b>performer-type</b>
3711   * <p>
3712   * Description: <b>Performer role</b><br>
3713   * Type: <b>token</b><br>
3714   * Path: <b>ServiceRequest.performerType</b><br>
3715   * </p>
3716   */
3717  @SearchParamDefinition(name="performer-type", path="ServiceRequest.performerType", description="Performer role", type="token" )
3718  public static final String SP_PERFORMER_TYPE = "performer-type";
3719 /**
3720   * <b>Fluent Client</b> search parameter constant for <b>performer-type</b>
3721   * <p>
3722   * Description: <b>Performer role</b><br>
3723   * Type: <b>token</b><br>
3724   * Path: <b>ServiceRequest.performerType</b><br>
3725   * </p>
3726   */
3727  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PERFORMER_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PERFORMER_TYPE);
3728
3729 /**
3730   * Search parameter: <b>performer</b>
3731   * <p>
3732   * Description: <b>Requested performer</b><br>
3733   * Type: <b>reference</b><br>
3734   * Path: <b>ServiceRequest.performer</b><br>
3735   * </p>
3736   */
3737  @SearchParamDefinition(name="performer", path="ServiceRequest.performer", description="Requested performer", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner"), @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 } )
3738  public static final String SP_PERFORMER = "performer";
3739 /**
3740   * <b>Fluent Client</b> search parameter constant for <b>performer</b>
3741   * <p>
3742   * Description: <b>Requested performer</b><br>
3743   * Type: <b>reference</b><br>
3744   * Path: <b>ServiceRequest.performer</b><br>
3745   * </p>
3746   */
3747  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PERFORMER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PERFORMER);
3748
3749/**
3750   * Constant for fluent queries to be used to add include statements. Specifies
3751   * the path value of "<b>ServiceRequest:performer</b>".
3752   */
3753  public static final ca.uhn.fhir.model.api.Include INCLUDE_PERFORMER = new ca.uhn.fhir.model.api.Include("ServiceRequest:performer").toLocked();
3754
3755 /**
3756   * Search parameter: <b>priority</b>
3757   * <p>
3758   * Description: <b>routine | urgent | asap | stat</b><br>
3759   * Type: <b>token</b><br>
3760   * Path: <b>ServiceRequest.priority</b><br>
3761   * </p>
3762   */
3763  @SearchParamDefinition(name="priority", path="ServiceRequest.priority", description="routine | urgent | asap | stat", type="token" )
3764  public static final String SP_PRIORITY = "priority";
3765 /**
3766   * <b>Fluent Client</b> search parameter constant for <b>priority</b>
3767   * <p>
3768   * Description: <b>routine | urgent | asap | stat</b><br>
3769   * Type: <b>token</b><br>
3770   * Path: <b>ServiceRequest.priority</b><br>
3771   * </p>
3772   */
3773  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PRIORITY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PRIORITY);
3774
3775 /**
3776   * Search parameter: <b>replaces</b>
3777   * <p>
3778   * Description: <b>What request replaces</b><br>
3779   * Type: <b>reference</b><br>
3780   * Path: <b>ServiceRequest.replaces</b><br>
3781   * </p>
3782   */
3783  @SearchParamDefinition(name="replaces", path="ServiceRequest.replaces", description="What request replaces", type="reference", target={ServiceRequest.class } )
3784  public static final String SP_REPLACES = "replaces";
3785 /**
3786   * <b>Fluent Client</b> search parameter constant for <b>replaces</b>
3787   * <p>
3788   * Description: <b>What request replaces</b><br>
3789   * Type: <b>reference</b><br>
3790   * Path: <b>ServiceRequest.replaces</b><br>
3791   * </p>
3792   */
3793  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REPLACES = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REPLACES);
3794
3795/**
3796   * Constant for fluent queries to be used to add include statements. Specifies
3797   * the path value of "<b>ServiceRequest:replaces</b>".
3798   */
3799  public static final ca.uhn.fhir.model.api.Include INCLUDE_REPLACES = new ca.uhn.fhir.model.api.Include("ServiceRequest:replaces").toLocked();
3800
3801 /**
3802   * Search parameter: <b>requester</b>
3803   * <p>
3804   * Description: <b>Who/what is requesting service</b><br>
3805   * Type: <b>reference</b><br>
3806   * Path: <b>ServiceRequest.requester</b><br>
3807   * </p>
3808   */
3809  @SearchParamDefinition(name="requester", path="ServiceRequest.requester", description="Who/what is requesting service", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={Device.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
3810  public static final String SP_REQUESTER = "requester";
3811 /**
3812   * <b>Fluent Client</b> search parameter constant for <b>requester</b>
3813   * <p>
3814   * Description: <b>Who/what is requesting service</b><br>
3815   * Type: <b>reference</b><br>
3816   * Path: <b>ServiceRequest.requester</b><br>
3817   * </p>
3818   */
3819  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REQUESTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REQUESTER);
3820
3821/**
3822   * Constant for fluent queries to be used to add include statements. Specifies
3823   * the path value of "<b>ServiceRequest:requester</b>".
3824   */
3825  public static final ca.uhn.fhir.model.api.Include INCLUDE_REQUESTER = new ca.uhn.fhir.model.api.Include("ServiceRequest:requester").toLocked();
3826
3827 /**
3828   * Search parameter: <b>requisition</b>
3829   * <p>
3830   * Description: <b>Composite Request ID</b><br>
3831   * Type: <b>token</b><br>
3832   * Path: <b>ServiceRequest.requisition</b><br>
3833   * </p>
3834   */
3835  @SearchParamDefinition(name="requisition", path="ServiceRequest.requisition", description="Composite Request ID", type="token" )
3836  public static final String SP_REQUISITION = "requisition";
3837 /**
3838   * <b>Fluent Client</b> search parameter constant for <b>requisition</b>
3839   * <p>
3840   * Description: <b>Composite Request ID</b><br>
3841   * Type: <b>token</b><br>
3842   * Path: <b>ServiceRequest.requisition</b><br>
3843   * </p>
3844   */
3845  public static final ca.uhn.fhir.rest.gclient.TokenClientParam REQUISITION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_REQUISITION);
3846
3847 /**
3848   * Search parameter: <b>specimen</b>
3849   * <p>
3850   * Description: <b>Specimen to be tested</b><br>
3851   * Type: <b>reference</b><br>
3852   * Path: <b>ServiceRequest.specimen</b><br>
3853   * </p>
3854   */
3855  @SearchParamDefinition(name="specimen", path="ServiceRequest.specimen", description="Specimen to be tested", type="reference", target={Specimen.class } )
3856  public static final String SP_SPECIMEN = "specimen";
3857 /**
3858   * <b>Fluent Client</b> search parameter constant for <b>specimen</b>
3859   * <p>
3860   * Description: <b>Specimen to be tested</b><br>
3861   * Type: <b>reference</b><br>
3862   * Path: <b>ServiceRequest.specimen</b><br>
3863   * </p>
3864   */
3865  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SPECIMEN = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SPECIMEN);
3866
3867/**
3868   * Constant for fluent queries to be used to add include statements. Specifies
3869   * the path value of "<b>ServiceRequest:specimen</b>".
3870   */
3871  public static final ca.uhn.fhir.model.api.Include INCLUDE_SPECIMEN = new ca.uhn.fhir.model.api.Include("ServiceRequest:specimen").toLocked();
3872
3873 /**
3874   * Search parameter: <b>status</b>
3875   * <p>
3876   * Description: <b>draft | active | on-hold | revoked | completed | entered-in-error | unknown</b><br>
3877   * Type: <b>token</b><br>
3878   * Path: <b>ServiceRequest.status</b><br>
3879   * </p>
3880   */
3881  @SearchParamDefinition(name="status", path="ServiceRequest.status", description="draft | active | on-hold | revoked | completed | entered-in-error | unknown", type="token" )
3882  public static final String SP_STATUS = "status";
3883 /**
3884   * <b>Fluent Client</b> search parameter constant for <b>status</b>
3885   * <p>
3886   * Description: <b>draft | active | on-hold | revoked | completed | entered-in-error | unknown</b><br>
3887   * Type: <b>token</b><br>
3888   * Path: <b>ServiceRequest.status</b><br>
3889   * </p>
3890   */
3891  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
3892
3893 /**
3894   * Search parameter: <b>subject</b>
3895   * <p>
3896   * Description: <b>Search by subject</b><br>
3897   * Type: <b>reference</b><br>
3898   * Path: <b>ServiceRequest.subject</b><br>
3899   * </p>
3900   */
3901  @SearchParamDefinition(name="subject", path="ServiceRequest.subject", description="Search by subject", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Device.class, Group.class, Location.class, Patient.class } )
3902  public static final String SP_SUBJECT = "subject";
3903 /**
3904   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
3905   * <p>
3906   * Description: <b>Search by subject</b><br>
3907   * Type: <b>reference</b><br>
3908   * Path: <b>ServiceRequest.subject</b><br>
3909   * </p>
3910   */
3911  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
3912
3913/**
3914   * Constant for fluent queries to be used to add include statements. Specifies
3915   * the path value of "<b>ServiceRequest:subject</b>".
3916   */
3917  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("ServiceRequest:subject").toLocked();
3918
3919 /**
3920   * Search parameter: <b>encounter</b>
3921   * <p>
3922   * Description: <b>Multiple Resources: 
3923
3924* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
3925* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
3926* [ChargeItem](chargeitem.html): Encounter associated with event
3927* [Claim](claim.html): Encounters associated with a billed line item
3928* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
3929* [Communication](communication.html): The Encounter during which this Communication was created
3930* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
3931* [Composition](composition.html): Context of the Composition
3932* [Condition](condition.html): The Encounter during which this Condition was created
3933* [DeviceRequest](devicerequest.html): Encounter during which request was created
3934* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
3935* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
3936* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
3937* [Flag](flag.html): Alert relevant during encounter
3938* [ImagingStudy](imagingstudy.html): The context of the study
3939* [List](list.html): Context in which list created
3940* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
3941* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
3942* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
3943* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
3944* [Observation](observation.html): Encounter related to the observation
3945* [Procedure](procedure.html): The Encounter during which this Procedure was created
3946* [Provenance](provenance.html): Encounter related to the Provenance
3947* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
3948* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
3949* [RiskAssessment](riskassessment.html): Where was assessment performed?
3950* [ServiceRequest](servicerequest.html): An encounter in which this request is made
3951* [Task](task.html): Search by encounter
3952* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
3953</b><br>
3954   * Type: <b>reference</b><br>
3955   * 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>
3956   * </p>
3957   */
3958  @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 } )
3959  public static final String SP_ENCOUNTER = "encounter";
3960 /**
3961   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
3962   * <p>
3963   * Description: <b>Multiple Resources: 
3964
3965* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
3966* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
3967* [ChargeItem](chargeitem.html): Encounter associated with event
3968* [Claim](claim.html): Encounters associated with a billed line item
3969* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
3970* [Communication](communication.html): The Encounter during which this Communication was created
3971* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
3972* [Composition](composition.html): Context of the Composition
3973* [Condition](condition.html): The Encounter during which this Condition was created
3974* [DeviceRequest](devicerequest.html): Encounter during which request was created
3975* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
3976* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
3977* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
3978* [Flag](flag.html): Alert relevant during encounter
3979* [ImagingStudy](imagingstudy.html): The context of the study
3980* [List](list.html): Context in which list created
3981* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
3982* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
3983* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
3984* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
3985* [Observation](observation.html): Encounter related to the observation
3986* [Procedure](procedure.html): The Encounter during which this Procedure was created
3987* [Provenance](provenance.html): Encounter related to the Provenance
3988* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
3989* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
3990* [RiskAssessment](riskassessment.html): Where was assessment performed?
3991* [ServiceRequest](servicerequest.html): An encounter in which this request is made
3992* [Task](task.html): Search by encounter
3993* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
3994</b><br>
3995   * Type: <b>reference</b><br>
3996   * 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>
3997   * </p>
3998   */
3999  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
4000
4001/**
4002   * Constant for fluent queries to be used to add include statements. Specifies
4003   * the path value of "<b>ServiceRequest:encounter</b>".
4004   */
4005  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("ServiceRequest:encounter").toLocked();
4006
4007 /**
4008   * Search parameter: <b>identifier</b>
4009   * <p>
4010   * Description: <b>Multiple Resources: 
4011
4012* [Account](account.html): Account number
4013* [AdverseEvent](adverseevent.html): Business identifier for the event
4014* [AllergyIntolerance](allergyintolerance.html): External ids for this item
4015* [Appointment](appointment.html): An Identifier of the Appointment
4016* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
4017* [Basic](basic.html): Business identifier
4018* [BodyStructure](bodystructure.html): Bodystructure identifier
4019* [CarePlan](careplan.html): External Ids for this plan
4020* [CareTeam](careteam.html): External Ids for this team
4021* [ChargeItem](chargeitem.html): Business Identifier for item
4022* [Claim](claim.html): The primary identifier of the financial resource
4023* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
4024* [ClinicalImpression](clinicalimpression.html): Business identifier
4025* [Communication](communication.html): Unique identifier
4026* [CommunicationRequest](communicationrequest.html): Unique identifier
4027* [Composition](composition.html): Version-independent identifier for the Composition
4028* [Condition](condition.html): A unique identifier of the condition record
4029* [Consent](consent.html): Identifier for this record (external references)
4030* [Contract](contract.html): The identity of the contract
4031* [Coverage](coverage.html): The primary identifier of the insured and the coverage
4032* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
4033* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
4034* [DetectedIssue](detectedissue.html): Unique id for the detected issue
4035* [DeviceRequest](devicerequest.html): Business identifier for request/order
4036* [DeviceUsage](deviceusage.html): Search by identifier
4037* [DiagnosticReport](diagnosticreport.html): An identifier for the report
4038* [DocumentReference](documentreference.html): Identifier of the attachment binary
4039* [Encounter](encounter.html): Identifier(s) by which this encounter is known
4040* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
4041* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
4042* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
4043* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
4044* [Flag](flag.html): Business identifier
4045* [Goal](goal.html): External Ids for this goal
4046* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
4047* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
4048* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
4049* [Immunization](immunization.html): Business identifier
4050* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
4051* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
4052* [Invoice](invoice.html): Business Identifier for item
4053* [List](list.html): Business identifier
4054* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
4055* [Medication](medication.html): Returns medications with this external identifier
4056* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
4057* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
4058* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
4059* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
4060* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
4061* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
4062* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
4063* [Observation](observation.html): The unique id for a particular observation
4064* [Person](person.html): A person Identifier
4065* [Procedure](procedure.html): A unique identifier for a procedure
4066* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
4067* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
4068* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
4069* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
4070* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
4071* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
4072* [Specimen](specimen.html): The unique identifier associated with the specimen
4073* [SupplyDelivery](supplydelivery.html): External identifier
4074* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
4075* [Task](task.html): Search for a task instance by its business identifier
4076* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
4077</b><br>
4078   * Type: <b>token</b><br>
4079   * 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>
4080   * </p>
4081   */
4082  @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" )
4083  public static final String SP_IDENTIFIER = "identifier";
4084 /**
4085   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
4086   * <p>
4087   * Description: <b>Multiple Resources: 
4088
4089* [Account](account.html): Account number
4090* [AdverseEvent](adverseevent.html): Business identifier for the event
4091* [AllergyIntolerance](allergyintolerance.html): External ids for this item
4092* [Appointment](appointment.html): An Identifier of the Appointment
4093* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
4094* [Basic](basic.html): Business identifier
4095* [BodyStructure](bodystructure.html): Bodystructure identifier
4096* [CarePlan](careplan.html): External Ids for this plan
4097* [CareTeam](careteam.html): External Ids for this team
4098* [ChargeItem](chargeitem.html): Business Identifier for item
4099* [Claim](claim.html): The primary identifier of the financial resource
4100* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
4101* [ClinicalImpression](clinicalimpression.html): Business identifier
4102* [Communication](communication.html): Unique identifier
4103* [CommunicationRequest](communicationrequest.html): Unique identifier
4104* [Composition](composition.html): Version-independent identifier for the Composition
4105* [Condition](condition.html): A unique identifier of the condition record
4106* [Consent](consent.html): Identifier for this record (external references)
4107* [Contract](contract.html): The identity of the contract
4108* [Coverage](coverage.html): The primary identifier of the insured and the coverage
4109* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
4110* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
4111* [DetectedIssue](detectedissue.html): Unique id for the detected issue
4112* [DeviceRequest](devicerequest.html): Business identifier for request/order
4113* [DeviceUsage](deviceusage.html): Search by identifier
4114* [DiagnosticReport](diagnosticreport.html): An identifier for the report
4115* [DocumentReference](documentreference.html): Identifier of the attachment binary
4116* [Encounter](encounter.html): Identifier(s) by which this encounter is known
4117* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
4118* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
4119* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
4120* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
4121* [Flag](flag.html): Business identifier
4122* [Goal](goal.html): External Ids for this goal
4123* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
4124* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
4125* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
4126* [Immunization](immunization.html): Business identifier
4127* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
4128* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
4129* [Invoice](invoice.html): Business Identifier for item
4130* [List](list.html): Business identifier
4131* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
4132* [Medication](medication.html): Returns medications with this external identifier
4133* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
4134* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
4135* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
4136* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
4137* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
4138* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
4139* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
4140* [Observation](observation.html): The unique id for a particular observation
4141* [Person](person.html): A person Identifier
4142* [Procedure](procedure.html): A unique identifier for a procedure
4143* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
4144* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
4145* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
4146* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
4147* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
4148* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
4149* [Specimen](specimen.html): The unique identifier associated with the specimen
4150* [SupplyDelivery](supplydelivery.html): External identifier
4151* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
4152* [Task](task.html): Search for a task instance by its business identifier
4153* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
4154</b><br>
4155   * Type: <b>token</b><br>
4156   * 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>
4157   * </p>
4158   */
4159  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
4160
4161 /**
4162   * Search parameter: <b>patient</b>
4163   * <p>
4164   * Description: <b>Multiple Resources: 
4165
4166* [Account](account.html): The entity that caused the expenses
4167* [AdverseEvent](adverseevent.html): Subject impacted by event
4168* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
4169* [Appointment](appointment.html): One of the individuals of the appointment is this patient
4170* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
4171* [AuditEvent](auditevent.html): Where the activity involved patient data
4172* [Basic](basic.html): Identifies the focus of this resource
4173* [BodyStructure](bodystructure.html): Who this is about
4174* [CarePlan](careplan.html): Who the care plan is for
4175* [CareTeam](careteam.html): Who care team is for
4176* [ChargeItem](chargeitem.html): Individual service was done for/to
4177* [Claim](claim.html): Patient receiving the products or services
4178* [ClaimResponse](claimresponse.html): The subject of care
4179* [ClinicalImpression](clinicalimpression.html): Patient assessed
4180* [Communication](communication.html): Focus of message
4181* [CommunicationRequest](communicationrequest.html): Focus of message
4182* [Composition](composition.html): Who and/or what the composition is about
4183* [Condition](condition.html): Who has the condition?
4184* [Consent](consent.html): Who the consent applies to
4185* [Contract](contract.html): The identity of the subject of the contract (if a patient)
4186* [Coverage](coverage.html): Retrieve coverages for a patient
4187* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
4188* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
4189* [DetectedIssue](detectedissue.html): Associated patient
4190* [DeviceRequest](devicerequest.html): Individual the service is ordered for
4191* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
4192* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
4193* [DocumentReference](documentreference.html): Who/what is the subject of the document
4194* [Encounter](encounter.html): The patient present at the encounter
4195* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
4196* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
4197* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
4198* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
4199* [Flag](flag.html): The identity of a subject to list flags for
4200* [Goal](goal.html): Who this goal is intended for
4201* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
4202* [ImagingSelection](imagingselection.html): Who the study is about
4203* [ImagingStudy](imagingstudy.html): Who the study is about
4204* [Immunization](immunization.html): The patient for the vaccination record
4205* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
4206* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
4207* [Invoice](invoice.html): Recipient(s) of goods and services
4208* [List](list.html): If all resources have the same subject
4209* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
4210* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
4211* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
4212* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
4213* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
4214* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
4215* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
4216* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
4217* [Observation](observation.html): The subject that the observation is about (if patient)
4218* [Person](person.html): The Person links to this Patient
4219* [Procedure](procedure.html): Search by subject - a patient
4220* [Provenance](provenance.html): Where the activity involved patient data
4221* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
4222* [RelatedPerson](relatedperson.html): The patient this related person is related to
4223* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
4224* [ResearchSubject](researchsubject.html): Who or what is part of study
4225* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
4226* [ServiceRequest](servicerequest.html): Search by subject - a patient
4227* [Specimen](specimen.html): The patient the specimen comes from
4228* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
4229* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
4230* [Task](task.html): Search by patient
4231* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
4232</b><br>
4233   * Type: <b>reference</b><br>
4234   * 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>
4235   * </p>
4236   */
4237  @SearchParamDefinition(name="patient", path="Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [Account](account.html): The entity that caused the expenses\r\n* [AdverseEvent](adverseevent.html): Subject impacted by event\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [Appointment](appointment.html): One of the individuals of the appointment is this patient\r\n* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient\r\n* [AuditEvent](auditevent.html): Where the activity involved patient data\r\n* [Basic](basic.html): Identifies the focus of this resource\r\n* [BodyStructure](bodystructure.html): Who this is about\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ChargeItem](chargeitem.html): Individual service was done for/to\r\n* [Claim](claim.html): Patient receiving the products or services\r\n* [ClaimResponse](claimresponse.html): The subject of care\r\n* [ClinicalImpression](clinicalimpression.html): Patient assessed\r\n* [Communication](communication.html): Focus of message\r\n* [CommunicationRequest](communicationrequest.html): Focus of message\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [Contract](contract.html): The identity of the subject of the contract (if a patient)\r\n* [Coverage](coverage.html): Retrieve coverages for a patient\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient present at the encounter\r\n* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results\r\n* [ImagingSelection](imagingselection.html): Who the study is about\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for\r\n* [Invoice](invoice.html): Recipient(s) of goods and services\r\n* [List](list.html): If all resources have the same subject\r\n* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.\r\n* [MolecularSequence](molecularsequence.html): The subject that the sequence is about\r\n* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Person](person.html): The Person links to this Patient\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [Provenance](provenance.html): Where the activity involved patient data\r\n* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response\r\n* [RelatedPerson](relatedperson.html): The patient this related person is related to\r\n* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations\r\n* [ResearchSubject](researchsubject.html): Who or what is part of study\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [Specimen](specimen.html): The patient the specimen comes from\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined\r\n* [Task](task.html): Search by patient\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", target={Patient.class } )
4238  public static final String SP_PATIENT = "patient";
4239 /**
4240   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
4241   * <p>
4242   * Description: <b>Multiple Resources: 
4243
4244* [Account](account.html): The entity that caused the expenses
4245* [AdverseEvent](adverseevent.html): Subject impacted by event
4246* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
4247* [Appointment](appointment.html): One of the individuals of the appointment is this patient
4248* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
4249* [AuditEvent](auditevent.html): Where the activity involved patient data
4250* [Basic](basic.html): Identifies the focus of this resource
4251* [BodyStructure](bodystructure.html): Who this is about
4252* [CarePlan](careplan.html): Who the care plan is for
4253* [CareTeam](careteam.html): Who care team is for
4254* [ChargeItem](chargeitem.html): Individual service was done for/to
4255* [Claim](claim.html): Patient receiving the products or services
4256* [ClaimResponse](claimresponse.html): The subject of care
4257* [ClinicalImpression](clinicalimpression.html): Patient assessed
4258* [Communication](communication.html): Focus of message
4259* [CommunicationRequest](communicationrequest.html): Focus of message
4260* [Composition](composition.html): Who and/or what the composition is about
4261* [Condition](condition.html): Who has the condition?
4262* [Consent](consent.html): Who the consent applies to
4263* [Contract](contract.html): The identity of the subject of the contract (if a patient)
4264* [Coverage](coverage.html): Retrieve coverages for a patient
4265* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
4266* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
4267* [DetectedIssue](detectedissue.html): Associated patient
4268* [DeviceRequest](devicerequest.html): Individual the service is ordered for
4269* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
4270* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
4271* [DocumentReference](documentreference.html): Who/what is the subject of the document
4272* [Encounter](encounter.html): The patient present at the encounter
4273* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
4274* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
4275* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
4276* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
4277* [Flag](flag.html): The identity of a subject to list flags for
4278* [Goal](goal.html): Who this goal is intended for
4279* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
4280* [ImagingSelection](imagingselection.html): Who the study is about
4281* [ImagingStudy](imagingstudy.html): Who the study is about
4282* [Immunization](immunization.html): The patient for the vaccination record
4283* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
4284* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
4285* [Invoice](invoice.html): Recipient(s) of goods and services
4286* [List](list.html): If all resources have the same subject
4287* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
4288* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
4289* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
4290* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
4291* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
4292* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
4293* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
4294* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
4295* [Observation](observation.html): The subject that the observation is about (if patient)
4296* [Person](person.html): The Person links to this Patient
4297* [Procedure](procedure.html): Search by subject - a patient
4298* [Provenance](provenance.html): Where the activity involved patient data
4299* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
4300* [RelatedPerson](relatedperson.html): The patient this related person is related to
4301* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
4302* [ResearchSubject](researchsubject.html): Who or what is part of study
4303* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
4304* [ServiceRequest](servicerequest.html): Search by subject - a patient
4305* [Specimen](specimen.html): The patient the specimen comes from
4306* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
4307* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
4308* [Task](task.html): Search by patient
4309* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
4310</b><br>
4311   * Type: <b>reference</b><br>
4312   * 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>
4313   * </p>
4314   */
4315  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
4316
4317/**
4318   * Constant for fluent queries to be used to add include statements. Specifies
4319   * the path value of "<b>ServiceRequest:patient</b>".
4320   */
4321  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("ServiceRequest:patient").toLocked();
4322
4323
4324}
4325