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 java.math.*;
038import org.hl7.fhir.utilities.Utilities;
039import org.hl7.fhir.r5.model.Enumerations.*;
040import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
041import org.hl7.fhir.exceptions.FHIRException;
042import org.hl7.fhir.instance.model.api.ICompositeType;
043import ca.uhn.fhir.model.api.annotation.ResourceDef;
044import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
045import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
046import ca.uhn.fhir.model.api.annotation.Child;
047import ca.uhn.fhir.model.api.annotation.ChildOrder;
048import ca.uhn.fhir.model.api.annotation.Description;
049import ca.uhn.fhir.model.api.annotation.Block;
050
051/**
052 * An authorization for the provision of glasses and/or contact lenses to a patient.
053 */
054@ResourceDef(name="VisionPrescription", profile="http://hl7.org/fhir/StructureDefinition/VisionPrescription")
055public class VisionPrescription extends DomainResource {
056
057    public enum VisionBase {
058        /**
059         * top.
060         */
061        UP, 
062        /**
063         * bottom.
064         */
065        DOWN, 
066        /**
067         * inner edge.
068         */
069        IN, 
070        /**
071         * outer edge.
072         */
073        OUT, 
074        /**
075         * added to help the parsers with the generic types
076         */
077        NULL;
078        public static VisionBase fromCode(String codeString) throws FHIRException {
079            if (codeString == null || "".equals(codeString))
080                return null;
081        if ("up".equals(codeString))
082          return UP;
083        if ("down".equals(codeString))
084          return DOWN;
085        if ("in".equals(codeString))
086          return IN;
087        if ("out".equals(codeString))
088          return OUT;
089        if (Configuration.isAcceptInvalidEnums())
090          return null;
091        else
092          throw new FHIRException("Unknown VisionBase code '"+codeString+"'");
093        }
094        public String toCode() {
095          switch (this) {
096            case UP: return "up";
097            case DOWN: return "down";
098            case IN: return "in";
099            case OUT: return "out";
100            case NULL: return null;
101            default: return "?";
102          }
103        }
104        public String getSystem() {
105          switch (this) {
106            case UP: return "http://hl7.org/fhir/vision-base-codes";
107            case DOWN: return "http://hl7.org/fhir/vision-base-codes";
108            case IN: return "http://hl7.org/fhir/vision-base-codes";
109            case OUT: return "http://hl7.org/fhir/vision-base-codes";
110            case NULL: return null;
111            default: return "?";
112          }
113        }
114        public String getDefinition() {
115          switch (this) {
116            case UP: return "top.";
117            case DOWN: return "bottom.";
118            case IN: return "inner edge.";
119            case OUT: return "outer edge.";
120            case NULL: return null;
121            default: return "?";
122          }
123        }
124        public String getDisplay() {
125          switch (this) {
126            case UP: return "Up";
127            case DOWN: return "Down";
128            case IN: return "In";
129            case OUT: return "Out";
130            case NULL: return null;
131            default: return "?";
132          }
133        }
134    }
135
136  public static class VisionBaseEnumFactory implements EnumFactory<VisionBase> {
137    public VisionBase fromCode(String codeString) throws IllegalArgumentException {
138      if (codeString == null || "".equals(codeString))
139            if (codeString == null || "".equals(codeString))
140                return null;
141        if ("up".equals(codeString))
142          return VisionBase.UP;
143        if ("down".equals(codeString))
144          return VisionBase.DOWN;
145        if ("in".equals(codeString))
146          return VisionBase.IN;
147        if ("out".equals(codeString))
148          return VisionBase.OUT;
149        throw new IllegalArgumentException("Unknown VisionBase code '"+codeString+"'");
150        }
151        public Enumeration<VisionBase> fromType(PrimitiveType<?> code) throws FHIRException {
152          if (code == null)
153            return null;
154          if (code.isEmpty())
155            return new Enumeration<VisionBase>(this, VisionBase.NULL, code);
156          String codeString = ((PrimitiveType) code).asStringValue();
157          if (codeString == null || "".equals(codeString))
158            return new Enumeration<VisionBase>(this, VisionBase.NULL, code);
159        if ("up".equals(codeString))
160          return new Enumeration<VisionBase>(this, VisionBase.UP, code);
161        if ("down".equals(codeString))
162          return new Enumeration<VisionBase>(this, VisionBase.DOWN, code);
163        if ("in".equals(codeString))
164          return new Enumeration<VisionBase>(this, VisionBase.IN, code);
165        if ("out".equals(codeString))
166          return new Enumeration<VisionBase>(this, VisionBase.OUT, code);
167        throw new FHIRException("Unknown VisionBase code '"+codeString+"'");
168        }
169    public String toCode(VisionBase code) {
170       if (code == VisionBase.NULL)
171           return null;
172       if (code == VisionBase.UP)
173        return "up";
174      if (code == VisionBase.DOWN)
175        return "down";
176      if (code == VisionBase.IN)
177        return "in";
178      if (code == VisionBase.OUT)
179        return "out";
180      return "?";
181   }
182    public String toSystem(VisionBase code) {
183      return code.getSystem();
184      }
185    }
186
187    public enum VisionEyes {
188        /**
189         * Right Eye.
190         */
191        RIGHT, 
192        /**
193         * Left Eye.
194         */
195        LEFT, 
196        /**
197         * added to help the parsers with the generic types
198         */
199        NULL;
200        public static VisionEyes fromCode(String codeString) throws FHIRException {
201            if (codeString == null || "".equals(codeString))
202                return null;
203        if ("right".equals(codeString))
204          return RIGHT;
205        if ("left".equals(codeString))
206          return LEFT;
207        if (Configuration.isAcceptInvalidEnums())
208          return null;
209        else
210          throw new FHIRException("Unknown VisionEyes code '"+codeString+"'");
211        }
212        public String toCode() {
213          switch (this) {
214            case RIGHT: return "right";
215            case LEFT: return "left";
216            case NULL: return null;
217            default: return "?";
218          }
219        }
220        public String getSystem() {
221          switch (this) {
222            case RIGHT: return "http://hl7.org/fhir/vision-eye-codes";
223            case LEFT: return "http://hl7.org/fhir/vision-eye-codes";
224            case NULL: return null;
225            default: return "?";
226          }
227        }
228        public String getDefinition() {
229          switch (this) {
230            case RIGHT: return "Right Eye.";
231            case LEFT: return "Left Eye.";
232            case NULL: return null;
233            default: return "?";
234          }
235        }
236        public String getDisplay() {
237          switch (this) {
238            case RIGHT: return "Right Eye";
239            case LEFT: return "Left Eye";
240            case NULL: return null;
241            default: return "?";
242          }
243        }
244    }
245
246  public static class VisionEyesEnumFactory implements EnumFactory<VisionEyes> {
247    public VisionEyes fromCode(String codeString) throws IllegalArgumentException {
248      if (codeString == null || "".equals(codeString))
249            if (codeString == null || "".equals(codeString))
250                return null;
251        if ("right".equals(codeString))
252          return VisionEyes.RIGHT;
253        if ("left".equals(codeString))
254          return VisionEyes.LEFT;
255        throw new IllegalArgumentException("Unknown VisionEyes code '"+codeString+"'");
256        }
257        public Enumeration<VisionEyes> fromType(PrimitiveType<?> code) throws FHIRException {
258          if (code == null)
259            return null;
260          if (code.isEmpty())
261            return new Enumeration<VisionEyes>(this, VisionEyes.NULL, code);
262          String codeString = ((PrimitiveType) code).asStringValue();
263          if (codeString == null || "".equals(codeString))
264            return new Enumeration<VisionEyes>(this, VisionEyes.NULL, code);
265        if ("right".equals(codeString))
266          return new Enumeration<VisionEyes>(this, VisionEyes.RIGHT, code);
267        if ("left".equals(codeString))
268          return new Enumeration<VisionEyes>(this, VisionEyes.LEFT, code);
269        throw new FHIRException("Unknown VisionEyes code '"+codeString+"'");
270        }
271    public String toCode(VisionEyes code) {
272       if (code == VisionEyes.NULL)
273           return null;
274       if (code == VisionEyes.RIGHT)
275        return "right";
276      if (code == VisionEyes.LEFT)
277        return "left";
278      return "?";
279   }
280    public String toSystem(VisionEyes code) {
281      return code.getSystem();
282      }
283    }
284
285    @Block()
286    public static class VisionPrescriptionLensSpecificationComponent extends BackboneElement implements IBaseBackboneElement {
287        /**
288         * Identifies the type of vision correction product which is required for the patient.
289         */
290        @Child(name = "product", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=true)
291        @Description(shortDefinition="Product to be supplied", formalDefinition="Identifies the type of vision correction product which is required for the patient." )
292        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/vision-product")
293        protected CodeableConcept product;
294
295        /**
296         * The eye for which the lens specification applies.
297         */
298        @Child(name = "eye", type = {CodeType.class}, order=2, min=1, max=1, modifier=false, summary=true)
299        @Description(shortDefinition="right | left", formalDefinition="The eye for which the lens specification applies." )
300        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/vision-eye-codes")
301        protected Enumeration<VisionEyes> eye;
302
303        /**
304         * Lens power measured in dioptres (0.25 units).
305         */
306        @Child(name = "sphere", type = {DecimalType.class}, order=3, min=0, max=1, modifier=false, summary=false)
307        @Description(shortDefinition="Power of the lens", formalDefinition="Lens power measured in dioptres (0.25 units)." )
308        protected DecimalType sphere;
309
310        /**
311         * Power adjustment for astigmatism measured in dioptres (0.25 units).
312         */
313        @Child(name = "cylinder", type = {DecimalType.class}, order=4, min=0, max=1, modifier=false, summary=false)
314        @Description(shortDefinition="Lens power for astigmatism", formalDefinition="Power adjustment for astigmatism measured in dioptres (0.25 units)." )
315        protected DecimalType cylinder;
316
317        /**
318         * Adjustment for astigmatism measured in integer degrees.
319         */
320        @Child(name = "axis", type = {IntegerType.class}, order=5, min=0, max=1, modifier=false, summary=false)
321        @Description(shortDefinition="Lens meridian which contain no power for astigmatism", formalDefinition="Adjustment for astigmatism measured in integer degrees." )
322        protected IntegerType axis;
323
324        /**
325         * Allows for adjustment on two axis.
326         */
327        @Child(name = "prism", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
328        @Description(shortDefinition="Eye alignment compensation", formalDefinition="Allows for adjustment on two axis." )
329        protected List<PrismComponent> prism;
330
331        /**
332         * Power adjustment for multifocal lenses measured in dioptres (0.25 units).
333         */
334        @Child(name = "add", type = {DecimalType.class}, order=7, min=0, max=1, modifier=false, summary=false)
335        @Description(shortDefinition="Added power for multifocal levels", formalDefinition="Power adjustment for multifocal lenses measured in dioptres (0.25 units)." )
336        protected DecimalType add;
337
338        /**
339         * Contact lens power measured in dioptres (0.25 units).
340         */
341        @Child(name = "power", type = {DecimalType.class}, order=8, min=0, max=1, modifier=false, summary=false)
342        @Description(shortDefinition="Contact lens power", formalDefinition="Contact lens power measured in dioptres (0.25 units)." )
343        protected DecimalType power;
344
345        /**
346         * Back curvature measured in millimetres.
347         */
348        @Child(name = "backCurve", type = {DecimalType.class}, order=9, min=0, max=1, modifier=false, summary=false)
349        @Description(shortDefinition="Contact lens back curvature", formalDefinition="Back curvature measured in millimetres." )
350        protected DecimalType backCurve;
351
352        /**
353         * Contact lens diameter measured in millimetres.
354         */
355        @Child(name = "diameter", type = {DecimalType.class}, order=10, min=0, max=1, modifier=false, summary=false)
356        @Description(shortDefinition="Contact lens diameter", formalDefinition="Contact lens diameter measured in millimetres." )
357        protected DecimalType diameter;
358
359        /**
360         * The recommended maximum wear period for the lens.
361         */
362        @Child(name = "duration", type = {Quantity.class}, order=11, min=0, max=1, modifier=false, summary=false)
363        @Description(shortDefinition="Lens wear duration", formalDefinition="The recommended maximum wear period for the lens." )
364        protected Quantity duration;
365
366        /**
367         * Special color or pattern.
368         */
369        @Child(name = "color", type = {StringType.class}, order=12, min=0, max=1, modifier=false, summary=false)
370        @Description(shortDefinition="Color required", formalDefinition="Special color or pattern." )
371        protected StringType color;
372
373        /**
374         * Brand recommendations or restrictions.
375         */
376        @Child(name = "brand", type = {StringType.class}, order=13, min=0, max=1, modifier=false, summary=false)
377        @Description(shortDefinition="Brand required", formalDefinition="Brand recommendations or restrictions." )
378        protected StringType brand;
379
380        /**
381         * Notes for special requirements such as coatings and lens materials.
382         */
383        @Child(name = "note", type = {Annotation.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
384        @Description(shortDefinition="Notes for coatings", formalDefinition="Notes for special requirements such as coatings and lens materials." )
385        protected List<Annotation> note;
386
387        private static final long serialVersionUID = 688924460L;
388
389    /**
390     * Constructor
391     */
392      public VisionPrescriptionLensSpecificationComponent() {
393        super();
394      }
395
396    /**
397     * Constructor
398     */
399      public VisionPrescriptionLensSpecificationComponent(CodeableConcept product, VisionEyes eye) {
400        super();
401        this.setProduct(product);
402        this.setEye(eye);
403      }
404
405        /**
406         * @return {@link #product} (Identifies the type of vision correction product which is required for the patient.)
407         */
408        public CodeableConcept getProduct() { 
409          if (this.product == null)
410            if (Configuration.errorOnAutoCreate())
411              throw new Error("Attempt to auto-create VisionPrescriptionLensSpecificationComponent.product");
412            else if (Configuration.doAutoCreate())
413              this.product = new CodeableConcept(); // cc
414          return this.product;
415        }
416
417        public boolean hasProduct() { 
418          return this.product != null && !this.product.isEmpty();
419        }
420
421        /**
422         * @param value {@link #product} (Identifies the type of vision correction product which is required for the patient.)
423         */
424        public VisionPrescriptionLensSpecificationComponent setProduct(CodeableConcept value) { 
425          this.product = value;
426          return this;
427        }
428
429        /**
430         * @return {@link #eye} (The eye for which the lens specification applies.). This is the underlying object with id, value and extensions. The accessor "getEye" gives direct access to the value
431         */
432        public Enumeration<VisionEyes> getEyeElement() { 
433          if (this.eye == null)
434            if (Configuration.errorOnAutoCreate())
435              throw new Error("Attempt to auto-create VisionPrescriptionLensSpecificationComponent.eye");
436            else if (Configuration.doAutoCreate())
437              this.eye = new Enumeration<VisionEyes>(new VisionEyesEnumFactory()); // bb
438          return this.eye;
439        }
440
441        public boolean hasEyeElement() { 
442          return this.eye != null && !this.eye.isEmpty();
443        }
444
445        public boolean hasEye() { 
446          return this.eye != null && !this.eye.isEmpty();
447        }
448
449        /**
450         * @param value {@link #eye} (The eye for which the lens specification applies.). This is the underlying object with id, value and extensions. The accessor "getEye" gives direct access to the value
451         */
452        public VisionPrescriptionLensSpecificationComponent setEyeElement(Enumeration<VisionEyes> value) { 
453          this.eye = value;
454          return this;
455        }
456
457        /**
458         * @return The eye for which the lens specification applies.
459         */
460        public VisionEyes getEye() { 
461          return this.eye == null ? null : this.eye.getValue();
462        }
463
464        /**
465         * @param value The eye for which the lens specification applies.
466         */
467        public VisionPrescriptionLensSpecificationComponent setEye(VisionEyes value) { 
468            if (this.eye == null)
469              this.eye = new Enumeration<VisionEyes>(new VisionEyesEnumFactory());
470            this.eye.setValue(value);
471          return this;
472        }
473
474        /**
475         * @return {@link #sphere} (Lens power measured in dioptres (0.25 units).). This is the underlying object with id, value and extensions. The accessor "getSphere" gives direct access to the value
476         */
477        public DecimalType getSphereElement() { 
478          if (this.sphere == null)
479            if (Configuration.errorOnAutoCreate())
480              throw new Error("Attempt to auto-create VisionPrescriptionLensSpecificationComponent.sphere");
481            else if (Configuration.doAutoCreate())
482              this.sphere = new DecimalType(); // bb
483          return this.sphere;
484        }
485
486        public boolean hasSphereElement() { 
487          return this.sphere != null && !this.sphere.isEmpty();
488        }
489
490        public boolean hasSphere() { 
491          return this.sphere != null && !this.sphere.isEmpty();
492        }
493
494        /**
495         * @param value {@link #sphere} (Lens power measured in dioptres (0.25 units).). This is the underlying object with id, value and extensions. The accessor "getSphere" gives direct access to the value
496         */
497        public VisionPrescriptionLensSpecificationComponent setSphereElement(DecimalType value) { 
498          this.sphere = value;
499          return this;
500        }
501
502        /**
503         * @return Lens power measured in dioptres (0.25 units).
504         */
505        public BigDecimal getSphere() { 
506          return this.sphere == null ? null : this.sphere.getValue();
507        }
508
509        /**
510         * @param value Lens power measured in dioptres (0.25 units).
511         */
512        public VisionPrescriptionLensSpecificationComponent setSphere(BigDecimal value) { 
513          if (value == null)
514            this.sphere = null;
515          else {
516            if (this.sphere == null)
517              this.sphere = new DecimalType();
518            this.sphere.setValue(value);
519          }
520          return this;
521        }
522
523        /**
524         * @param value Lens power measured in dioptres (0.25 units).
525         */
526        public VisionPrescriptionLensSpecificationComponent setSphere(long value) { 
527              this.sphere = new DecimalType();
528            this.sphere.setValue(value);
529          return this;
530        }
531
532        /**
533         * @param value Lens power measured in dioptres (0.25 units).
534         */
535        public VisionPrescriptionLensSpecificationComponent setSphere(double value) { 
536              this.sphere = new DecimalType();
537            this.sphere.setValue(value);
538          return this;
539        }
540
541        /**
542         * @return {@link #cylinder} (Power adjustment for astigmatism measured in dioptres (0.25 units).). This is the underlying object with id, value and extensions. The accessor "getCylinder" gives direct access to the value
543         */
544        public DecimalType getCylinderElement() { 
545          if (this.cylinder == null)
546            if (Configuration.errorOnAutoCreate())
547              throw new Error("Attempt to auto-create VisionPrescriptionLensSpecificationComponent.cylinder");
548            else if (Configuration.doAutoCreate())
549              this.cylinder = new DecimalType(); // bb
550          return this.cylinder;
551        }
552
553        public boolean hasCylinderElement() { 
554          return this.cylinder != null && !this.cylinder.isEmpty();
555        }
556
557        public boolean hasCylinder() { 
558          return this.cylinder != null && !this.cylinder.isEmpty();
559        }
560
561        /**
562         * @param value {@link #cylinder} (Power adjustment for astigmatism measured in dioptres (0.25 units).). This is the underlying object with id, value and extensions. The accessor "getCylinder" gives direct access to the value
563         */
564        public VisionPrescriptionLensSpecificationComponent setCylinderElement(DecimalType value) { 
565          this.cylinder = value;
566          return this;
567        }
568
569        /**
570         * @return Power adjustment for astigmatism measured in dioptres (0.25 units).
571         */
572        public BigDecimal getCylinder() { 
573          return this.cylinder == null ? null : this.cylinder.getValue();
574        }
575
576        /**
577         * @param value Power adjustment for astigmatism measured in dioptres (0.25 units).
578         */
579        public VisionPrescriptionLensSpecificationComponent setCylinder(BigDecimal value) { 
580          if (value == null)
581            this.cylinder = null;
582          else {
583            if (this.cylinder == null)
584              this.cylinder = new DecimalType();
585            this.cylinder.setValue(value);
586          }
587          return this;
588        }
589
590        /**
591         * @param value Power adjustment for astigmatism measured in dioptres (0.25 units).
592         */
593        public VisionPrescriptionLensSpecificationComponent setCylinder(long value) { 
594              this.cylinder = new DecimalType();
595            this.cylinder.setValue(value);
596          return this;
597        }
598
599        /**
600         * @param value Power adjustment for astigmatism measured in dioptres (0.25 units).
601         */
602        public VisionPrescriptionLensSpecificationComponent setCylinder(double value) { 
603              this.cylinder = new DecimalType();
604            this.cylinder.setValue(value);
605          return this;
606        }
607
608        /**
609         * @return {@link #axis} (Adjustment for astigmatism measured in integer degrees.). This is the underlying object with id, value and extensions. The accessor "getAxis" gives direct access to the value
610         */
611        public IntegerType getAxisElement() { 
612          if (this.axis == null)
613            if (Configuration.errorOnAutoCreate())
614              throw new Error("Attempt to auto-create VisionPrescriptionLensSpecificationComponent.axis");
615            else if (Configuration.doAutoCreate())
616              this.axis = new IntegerType(); // bb
617          return this.axis;
618        }
619
620        public boolean hasAxisElement() { 
621          return this.axis != null && !this.axis.isEmpty();
622        }
623
624        public boolean hasAxis() { 
625          return this.axis != null && !this.axis.isEmpty();
626        }
627
628        /**
629         * @param value {@link #axis} (Adjustment for astigmatism measured in integer degrees.). This is the underlying object with id, value and extensions. The accessor "getAxis" gives direct access to the value
630         */
631        public VisionPrescriptionLensSpecificationComponent setAxisElement(IntegerType value) { 
632          this.axis = value;
633          return this;
634        }
635
636        /**
637         * @return Adjustment for astigmatism measured in integer degrees.
638         */
639        public int getAxis() { 
640          return this.axis == null || this.axis.isEmpty() ? 0 : this.axis.getValue();
641        }
642
643        /**
644         * @param value Adjustment for astigmatism measured in integer degrees.
645         */
646        public VisionPrescriptionLensSpecificationComponent setAxis(int value) { 
647            if (this.axis == null)
648              this.axis = new IntegerType();
649            this.axis.setValue(value);
650          return this;
651        }
652
653        /**
654         * @return {@link #prism} (Allows for adjustment on two axis.)
655         */
656        public List<PrismComponent> getPrism() { 
657          if (this.prism == null)
658            this.prism = new ArrayList<PrismComponent>();
659          return this.prism;
660        }
661
662        /**
663         * @return Returns a reference to <code>this</code> for easy method chaining
664         */
665        public VisionPrescriptionLensSpecificationComponent setPrism(List<PrismComponent> thePrism) { 
666          this.prism = thePrism;
667          return this;
668        }
669
670        public boolean hasPrism() { 
671          if (this.prism == null)
672            return false;
673          for (PrismComponent item : this.prism)
674            if (!item.isEmpty())
675              return true;
676          return false;
677        }
678
679        public PrismComponent addPrism() { //3
680          PrismComponent t = new PrismComponent();
681          if (this.prism == null)
682            this.prism = new ArrayList<PrismComponent>();
683          this.prism.add(t);
684          return t;
685        }
686
687        public VisionPrescriptionLensSpecificationComponent addPrism(PrismComponent t) { //3
688          if (t == null)
689            return this;
690          if (this.prism == null)
691            this.prism = new ArrayList<PrismComponent>();
692          this.prism.add(t);
693          return this;
694        }
695
696        /**
697         * @return The first repetition of repeating field {@link #prism}, creating it if it does not already exist {3}
698         */
699        public PrismComponent getPrismFirstRep() { 
700          if (getPrism().isEmpty()) {
701            addPrism();
702          }
703          return getPrism().get(0);
704        }
705
706        /**
707         * @return {@link #add} (Power adjustment for multifocal lenses measured in dioptres (0.25 units).). This is the underlying object with id, value and extensions. The accessor "getAdd" gives direct access to the value
708         */
709        public DecimalType getAddElement() { 
710          if (this.add == null)
711            if (Configuration.errorOnAutoCreate())
712              throw new Error("Attempt to auto-create VisionPrescriptionLensSpecificationComponent.add");
713            else if (Configuration.doAutoCreate())
714              this.add = new DecimalType(); // bb
715          return this.add;
716        }
717
718        public boolean hasAddElement() { 
719          return this.add != null && !this.add.isEmpty();
720        }
721
722        public boolean hasAdd() { 
723          return this.add != null && !this.add.isEmpty();
724        }
725
726        /**
727         * @param value {@link #add} (Power adjustment for multifocal lenses measured in dioptres (0.25 units).). This is the underlying object with id, value and extensions. The accessor "getAdd" gives direct access to the value
728         */
729        public VisionPrescriptionLensSpecificationComponent setAddElement(DecimalType value) { 
730          this.add = value;
731          return this;
732        }
733
734        /**
735         * @return Power adjustment for multifocal lenses measured in dioptres (0.25 units).
736         */
737        public BigDecimal getAdd() { 
738          return this.add == null ? null : this.add.getValue();
739        }
740
741        /**
742         * @param value Power adjustment for multifocal lenses measured in dioptres (0.25 units).
743         */
744        public VisionPrescriptionLensSpecificationComponent setAdd(BigDecimal value) { 
745          if (value == null)
746            this.add = null;
747          else {
748            if (this.add == null)
749              this.add = new DecimalType();
750            this.add.setValue(value);
751          }
752          return this;
753        }
754
755        /**
756         * @param value Power adjustment for multifocal lenses measured in dioptres (0.25 units).
757         */
758        public VisionPrescriptionLensSpecificationComponent setAdd(long value) { 
759              this.add = new DecimalType();
760            this.add.setValue(value);
761          return this;
762        }
763
764        /**
765         * @param value Power adjustment for multifocal lenses measured in dioptres (0.25 units).
766         */
767        public VisionPrescriptionLensSpecificationComponent setAdd(double value) { 
768              this.add = new DecimalType();
769            this.add.setValue(value);
770          return this;
771        }
772
773        /**
774         * @return {@link #power} (Contact lens power measured in dioptres (0.25 units).). This is the underlying object with id, value and extensions. The accessor "getPower" gives direct access to the value
775         */
776        public DecimalType getPowerElement() { 
777          if (this.power == null)
778            if (Configuration.errorOnAutoCreate())
779              throw new Error("Attempt to auto-create VisionPrescriptionLensSpecificationComponent.power");
780            else if (Configuration.doAutoCreate())
781              this.power = new DecimalType(); // bb
782          return this.power;
783        }
784
785        public boolean hasPowerElement() { 
786          return this.power != null && !this.power.isEmpty();
787        }
788
789        public boolean hasPower() { 
790          return this.power != null && !this.power.isEmpty();
791        }
792
793        /**
794         * @param value {@link #power} (Contact lens power measured in dioptres (0.25 units).). This is the underlying object with id, value and extensions. The accessor "getPower" gives direct access to the value
795         */
796        public VisionPrescriptionLensSpecificationComponent setPowerElement(DecimalType value) { 
797          this.power = value;
798          return this;
799        }
800
801        /**
802         * @return Contact lens power measured in dioptres (0.25 units).
803         */
804        public BigDecimal getPower() { 
805          return this.power == null ? null : this.power.getValue();
806        }
807
808        /**
809         * @param value Contact lens power measured in dioptres (0.25 units).
810         */
811        public VisionPrescriptionLensSpecificationComponent setPower(BigDecimal value) { 
812          if (value == null)
813            this.power = null;
814          else {
815            if (this.power == null)
816              this.power = new DecimalType();
817            this.power.setValue(value);
818          }
819          return this;
820        }
821
822        /**
823         * @param value Contact lens power measured in dioptres (0.25 units).
824         */
825        public VisionPrescriptionLensSpecificationComponent setPower(long value) { 
826              this.power = new DecimalType();
827            this.power.setValue(value);
828          return this;
829        }
830
831        /**
832         * @param value Contact lens power measured in dioptres (0.25 units).
833         */
834        public VisionPrescriptionLensSpecificationComponent setPower(double value) { 
835              this.power = new DecimalType();
836            this.power.setValue(value);
837          return this;
838        }
839
840        /**
841         * @return {@link #backCurve} (Back curvature measured in millimetres.). This is the underlying object with id, value and extensions. The accessor "getBackCurve" gives direct access to the value
842         */
843        public DecimalType getBackCurveElement() { 
844          if (this.backCurve == null)
845            if (Configuration.errorOnAutoCreate())
846              throw new Error("Attempt to auto-create VisionPrescriptionLensSpecificationComponent.backCurve");
847            else if (Configuration.doAutoCreate())
848              this.backCurve = new DecimalType(); // bb
849          return this.backCurve;
850        }
851
852        public boolean hasBackCurveElement() { 
853          return this.backCurve != null && !this.backCurve.isEmpty();
854        }
855
856        public boolean hasBackCurve() { 
857          return this.backCurve != null && !this.backCurve.isEmpty();
858        }
859
860        /**
861         * @param value {@link #backCurve} (Back curvature measured in millimetres.). This is the underlying object with id, value and extensions. The accessor "getBackCurve" gives direct access to the value
862         */
863        public VisionPrescriptionLensSpecificationComponent setBackCurveElement(DecimalType value) { 
864          this.backCurve = value;
865          return this;
866        }
867
868        /**
869         * @return Back curvature measured in millimetres.
870         */
871        public BigDecimal getBackCurve() { 
872          return this.backCurve == null ? null : this.backCurve.getValue();
873        }
874
875        /**
876         * @param value Back curvature measured in millimetres.
877         */
878        public VisionPrescriptionLensSpecificationComponent setBackCurve(BigDecimal value) { 
879          if (value == null)
880            this.backCurve = null;
881          else {
882            if (this.backCurve == null)
883              this.backCurve = new DecimalType();
884            this.backCurve.setValue(value);
885          }
886          return this;
887        }
888
889        /**
890         * @param value Back curvature measured in millimetres.
891         */
892        public VisionPrescriptionLensSpecificationComponent setBackCurve(long value) { 
893              this.backCurve = new DecimalType();
894            this.backCurve.setValue(value);
895          return this;
896        }
897
898        /**
899         * @param value Back curvature measured in millimetres.
900         */
901        public VisionPrescriptionLensSpecificationComponent setBackCurve(double value) { 
902              this.backCurve = new DecimalType();
903            this.backCurve.setValue(value);
904          return this;
905        }
906
907        /**
908         * @return {@link #diameter} (Contact lens diameter measured in millimetres.). This is the underlying object with id, value and extensions. The accessor "getDiameter" gives direct access to the value
909         */
910        public DecimalType getDiameterElement() { 
911          if (this.diameter == null)
912            if (Configuration.errorOnAutoCreate())
913              throw new Error("Attempt to auto-create VisionPrescriptionLensSpecificationComponent.diameter");
914            else if (Configuration.doAutoCreate())
915              this.diameter = new DecimalType(); // bb
916          return this.diameter;
917        }
918
919        public boolean hasDiameterElement() { 
920          return this.diameter != null && !this.diameter.isEmpty();
921        }
922
923        public boolean hasDiameter() { 
924          return this.diameter != null && !this.diameter.isEmpty();
925        }
926
927        /**
928         * @param value {@link #diameter} (Contact lens diameter measured in millimetres.). This is the underlying object with id, value and extensions. The accessor "getDiameter" gives direct access to the value
929         */
930        public VisionPrescriptionLensSpecificationComponent setDiameterElement(DecimalType value) { 
931          this.diameter = value;
932          return this;
933        }
934
935        /**
936         * @return Contact lens diameter measured in millimetres.
937         */
938        public BigDecimal getDiameter() { 
939          return this.diameter == null ? null : this.diameter.getValue();
940        }
941
942        /**
943         * @param value Contact lens diameter measured in millimetres.
944         */
945        public VisionPrescriptionLensSpecificationComponent setDiameter(BigDecimal value) { 
946          if (value == null)
947            this.diameter = null;
948          else {
949            if (this.diameter == null)
950              this.diameter = new DecimalType();
951            this.diameter.setValue(value);
952          }
953          return this;
954        }
955
956        /**
957         * @param value Contact lens diameter measured in millimetres.
958         */
959        public VisionPrescriptionLensSpecificationComponent setDiameter(long value) { 
960              this.diameter = new DecimalType();
961            this.diameter.setValue(value);
962          return this;
963        }
964
965        /**
966         * @param value Contact lens diameter measured in millimetres.
967         */
968        public VisionPrescriptionLensSpecificationComponent setDiameter(double value) { 
969              this.diameter = new DecimalType();
970            this.diameter.setValue(value);
971          return this;
972        }
973
974        /**
975         * @return {@link #duration} (The recommended maximum wear period for the lens.)
976         */
977        public Quantity getDuration() { 
978          if (this.duration == null)
979            if (Configuration.errorOnAutoCreate())
980              throw new Error("Attempt to auto-create VisionPrescriptionLensSpecificationComponent.duration");
981            else if (Configuration.doAutoCreate())
982              this.duration = new Quantity(); // cc
983          return this.duration;
984        }
985
986        public boolean hasDuration() { 
987          return this.duration != null && !this.duration.isEmpty();
988        }
989
990        /**
991         * @param value {@link #duration} (The recommended maximum wear period for the lens.)
992         */
993        public VisionPrescriptionLensSpecificationComponent setDuration(Quantity value) { 
994          this.duration = value;
995          return this;
996        }
997
998        /**
999         * @return {@link #color} (Special color or pattern.). This is the underlying object with id, value and extensions. The accessor "getColor" gives direct access to the value
1000         */
1001        public StringType getColorElement() { 
1002          if (this.color == null)
1003            if (Configuration.errorOnAutoCreate())
1004              throw new Error("Attempt to auto-create VisionPrescriptionLensSpecificationComponent.color");
1005            else if (Configuration.doAutoCreate())
1006              this.color = new StringType(); // bb
1007          return this.color;
1008        }
1009
1010        public boolean hasColorElement() { 
1011          return this.color != null && !this.color.isEmpty();
1012        }
1013
1014        public boolean hasColor() { 
1015          return this.color != null && !this.color.isEmpty();
1016        }
1017
1018        /**
1019         * @param value {@link #color} (Special color or pattern.). This is the underlying object with id, value and extensions. The accessor "getColor" gives direct access to the value
1020         */
1021        public VisionPrescriptionLensSpecificationComponent setColorElement(StringType value) { 
1022          this.color = value;
1023          return this;
1024        }
1025
1026        /**
1027         * @return Special color or pattern.
1028         */
1029        public String getColor() { 
1030          return this.color == null ? null : this.color.getValue();
1031        }
1032
1033        /**
1034         * @param value Special color or pattern.
1035         */
1036        public VisionPrescriptionLensSpecificationComponent setColor(String value) { 
1037          if (Utilities.noString(value))
1038            this.color = null;
1039          else {
1040            if (this.color == null)
1041              this.color = new StringType();
1042            this.color.setValue(value);
1043          }
1044          return this;
1045        }
1046
1047        /**
1048         * @return {@link #brand} (Brand recommendations or restrictions.). This is the underlying object with id, value and extensions. The accessor "getBrand" gives direct access to the value
1049         */
1050        public StringType getBrandElement() { 
1051          if (this.brand == null)
1052            if (Configuration.errorOnAutoCreate())
1053              throw new Error("Attempt to auto-create VisionPrescriptionLensSpecificationComponent.brand");
1054            else if (Configuration.doAutoCreate())
1055              this.brand = new StringType(); // bb
1056          return this.brand;
1057        }
1058
1059        public boolean hasBrandElement() { 
1060          return this.brand != null && !this.brand.isEmpty();
1061        }
1062
1063        public boolean hasBrand() { 
1064          return this.brand != null && !this.brand.isEmpty();
1065        }
1066
1067        /**
1068         * @param value {@link #brand} (Brand recommendations or restrictions.). This is the underlying object with id, value and extensions. The accessor "getBrand" gives direct access to the value
1069         */
1070        public VisionPrescriptionLensSpecificationComponent setBrandElement(StringType value) { 
1071          this.brand = value;
1072          return this;
1073        }
1074
1075        /**
1076         * @return Brand recommendations or restrictions.
1077         */
1078        public String getBrand() { 
1079          return this.brand == null ? null : this.brand.getValue();
1080        }
1081
1082        /**
1083         * @param value Brand recommendations or restrictions.
1084         */
1085        public VisionPrescriptionLensSpecificationComponent setBrand(String value) { 
1086          if (Utilities.noString(value))
1087            this.brand = null;
1088          else {
1089            if (this.brand == null)
1090              this.brand = new StringType();
1091            this.brand.setValue(value);
1092          }
1093          return this;
1094        }
1095
1096        /**
1097         * @return {@link #note} (Notes for special requirements such as coatings and lens materials.)
1098         */
1099        public List<Annotation> getNote() { 
1100          if (this.note == null)
1101            this.note = new ArrayList<Annotation>();
1102          return this.note;
1103        }
1104
1105        /**
1106         * @return Returns a reference to <code>this</code> for easy method chaining
1107         */
1108        public VisionPrescriptionLensSpecificationComponent setNote(List<Annotation> theNote) { 
1109          this.note = theNote;
1110          return this;
1111        }
1112
1113        public boolean hasNote() { 
1114          if (this.note == null)
1115            return false;
1116          for (Annotation item : this.note)
1117            if (!item.isEmpty())
1118              return true;
1119          return false;
1120        }
1121
1122        public Annotation addNote() { //3
1123          Annotation t = new Annotation();
1124          if (this.note == null)
1125            this.note = new ArrayList<Annotation>();
1126          this.note.add(t);
1127          return t;
1128        }
1129
1130        public VisionPrescriptionLensSpecificationComponent addNote(Annotation t) { //3
1131          if (t == null)
1132            return this;
1133          if (this.note == null)
1134            this.note = new ArrayList<Annotation>();
1135          this.note.add(t);
1136          return this;
1137        }
1138
1139        /**
1140         * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
1141         */
1142        public Annotation getNoteFirstRep() { 
1143          if (getNote().isEmpty()) {
1144            addNote();
1145          }
1146          return getNote().get(0);
1147        }
1148
1149        protected void listChildren(List<Property> children) {
1150          super.listChildren(children);
1151          children.add(new Property("product", "CodeableConcept", "Identifies the type of vision correction product which is required for the patient.", 0, 1, product));
1152          children.add(new Property("eye", "code", "The eye for which the lens specification applies.", 0, 1, eye));
1153          children.add(new Property("sphere", "decimal", "Lens power measured in dioptres (0.25 units).", 0, 1, sphere));
1154          children.add(new Property("cylinder", "decimal", "Power adjustment for astigmatism measured in dioptres (0.25 units).", 0, 1, cylinder));
1155          children.add(new Property("axis", "integer", "Adjustment for astigmatism measured in integer degrees.", 0, 1, axis));
1156          children.add(new Property("prism", "", "Allows for adjustment on two axis.", 0, java.lang.Integer.MAX_VALUE, prism));
1157          children.add(new Property("add", "decimal", "Power adjustment for multifocal lenses measured in dioptres (0.25 units).", 0, 1, add));
1158          children.add(new Property("power", "decimal", "Contact lens power measured in dioptres (0.25 units).", 0, 1, power));
1159          children.add(new Property("backCurve", "decimal", "Back curvature measured in millimetres.", 0, 1, backCurve));
1160          children.add(new Property("diameter", "decimal", "Contact lens diameter measured in millimetres.", 0, 1, diameter));
1161          children.add(new Property("duration", "Quantity", "The recommended maximum wear period for the lens.", 0, 1, duration));
1162          children.add(new Property("color", "string", "Special color or pattern.", 0, 1, color));
1163          children.add(new Property("brand", "string", "Brand recommendations or restrictions.", 0, 1, brand));
1164          children.add(new Property("note", "Annotation", "Notes for special requirements such as coatings and lens materials.", 0, java.lang.Integer.MAX_VALUE, note));
1165        }
1166
1167        @Override
1168        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1169          switch (_hash) {
1170          case -309474065: /*product*/  return new Property("product", "CodeableConcept", "Identifies the type of vision correction product which is required for the patient.", 0, 1, product);
1171          case 100913: /*eye*/  return new Property("eye", "code", "The eye for which the lens specification applies.", 0, 1, eye);
1172          case -895981619: /*sphere*/  return new Property("sphere", "decimal", "Lens power measured in dioptres (0.25 units).", 0, 1, sphere);
1173          case -349378602: /*cylinder*/  return new Property("cylinder", "decimal", "Power adjustment for astigmatism measured in dioptres (0.25 units).", 0, 1, cylinder);
1174          case 3008417: /*axis*/  return new Property("axis", "integer", "Adjustment for astigmatism measured in integer degrees.", 0, 1, axis);
1175          case 106935105: /*prism*/  return new Property("prism", "", "Allows for adjustment on two axis.", 0, java.lang.Integer.MAX_VALUE, prism);
1176          case 96417: /*add*/  return new Property("add", "decimal", "Power adjustment for multifocal lenses measured in dioptres (0.25 units).", 0, 1, add);
1177          case 106858757: /*power*/  return new Property("power", "decimal", "Contact lens power measured in dioptres (0.25 units).", 0, 1, power);
1178          case 1309344840: /*backCurve*/  return new Property("backCurve", "decimal", "Back curvature measured in millimetres.", 0, 1, backCurve);
1179          case -233204595: /*diameter*/  return new Property("diameter", "decimal", "Contact lens diameter measured in millimetres.", 0, 1, diameter);
1180          case -1992012396: /*duration*/  return new Property("duration", "Quantity", "The recommended maximum wear period for the lens.", 0, 1, duration);
1181          case 94842723: /*color*/  return new Property("color", "string", "Special color or pattern.", 0, 1, color);
1182          case 93997959: /*brand*/  return new Property("brand", "string", "Brand recommendations or restrictions.", 0, 1, brand);
1183          case 3387378: /*note*/  return new Property("note", "Annotation", "Notes for special requirements such as coatings and lens materials.", 0, java.lang.Integer.MAX_VALUE, note);
1184          default: return super.getNamedProperty(_hash, _name, _checkValid);
1185          }
1186
1187        }
1188
1189      @Override
1190      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1191        switch (hash) {
1192        case -309474065: /*product*/ return this.product == null ? new Base[0] : new Base[] {this.product}; // CodeableConcept
1193        case 100913: /*eye*/ return this.eye == null ? new Base[0] : new Base[] {this.eye}; // Enumeration<VisionEyes>
1194        case -895981619: /*sphere*/ return this.sphere == null ? new Base[0] : new Base[] {this.sphere}; // DecimalType
1195        case -349378602: /*cylinder*/ return this.cylinder == null ? new Base[0] : new Base[] {this.cylinder}; // DecimalType
1196        case 3008417: /*axis*/ return this.axis == null ? new Base[0] : new Base[] {this.axis}; // IntegerType
1197        case 106935105: /*prism*/ return this.prism == null ? new Base[0] : this.prism.toArray(new Base[this.prism.size()]); // PrismComponent
1198        case 96417: /*add*/ return this.add == null ? new Base[0] : new Base[] {this.add}; // DecimalType
1199        case 106858757: /*power*/ return this.power == null ? new Base[0] : new Base[] {this.power}; // DecimalType
1200        case 1309344840: /*backCurve*/ return this.backCurve == null ? new Base[0] : new Base[] {this.backCurve}; // DecimalType
1201        case -233204595: /*diameter*/ return this.diameter == null ? new Base[0] : new Base[] {this.diameter}; // DecimalType
1202        case -1992012396: /*duration*/ return this.duration == null ? new Base[0] : new Base[] {this.duration}; // Quantity
1203        case 94842723: /*color*/ return this.color == null ? new Base[0] : new Base[] {this.color}; // StringType
1204        case 93997959: /*brand*/ return this.brand == null ? new Base[0] : new Base[] {this.brand}; // StringType
1205        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1206        default: return super.getProperty(hash, name, checkValid);
1207        }
1208
1209      }
1210
1211      @Override
1212      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1213        switch (hash) {
1214        case -309474065: // product
1215          this.product = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1216          return value;
1217        case 100913: // eye
1218          value = new VisionEyesEnumFactory().fromType(TypeConvertor.castToCode(value));
1219          this.eye = (Enumeration) value; // Enumeration<VisionEyes>
1220          return value;
1221        case -895981619: // sphere
1222          this.sphere = TypeConvertor.castToDecimal(value); // DecimalType
1223          return value;
1224        case -349378602: // cylinder
1225          this.cylinder = TypeConvertor.castToDecimal(value); // DecimalType
1226          return value;
1227        case 3008417: // axis
1228          this.axis = TypeConvertor.castToInteger(value); // IntegerType
1229          return value;
1230        case 106935105: // prism
1231          this.getPrism().add((PrismComponent) value); // PrismComponent
1232          return value;
1233        case 96417: // add
1234          this.add = TypeConvertor.castToDecimal(value); // DecimalType
1235          return value;
1236        case 106858757: // power
1237          this.power = TypeConvertor.castToDecimal(value); // DecimalType
1238          return value;
1239        case 1309344840: // backCurve
1240          this.backCurve = TypeConvertor.castToDecimal(value); // DecimalType
1241          return value;
1242        case -233204595: // diameter
1243          this.diameter = TypeConvertor.castToDecimal(value); // DecimalType
1244          return value;
1245        case -1992012396: // duration
1246          this.duration = TypeConvertor.castToQuantity(value); // Quantity
1247          return value;
1248        case 94842723: // color
1249          this.color = TypeConvertor.castToString(value); // StringType
1250          return value;
1251        case 93997959: // brand
1252          this.brand = TypeConvertor.castToString(value); // StringType
1253          return value;
1254        case 3387378: // note
1255          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
1256          return value;
1257        default: return super.setProperty(hash, name, value);
1258        }
1259
1260      }
1261
1262      @Override
1263      public Base setProperty(String name, Base value) throws FHIRException {
1264        if (name.equals("product")) {
1265          this.product = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1266        } else if (name.equals("eye")) {
1267          value = new VisionEyesEnumFactory().fromType(TypeConvertor.castToCode(value));
1268          this.eye = (Enumeration) value; // Enumeration<VisionEyes>
1269        } else if (name.equals("sphere")) {
1270          this.sphere = TypeConvertor.castToDecimal(value); // DecimalType
1271        } else if (name.equals("cylinder")) {
1272          this.cylinder = TypeConvertor.castToDecimal(value); // DecimalType
1273        } else if (name.equals("axis")) {
1274          this.axis = TypeConvertor.castToInteger(value); // IntegerType
1275        } else if (name.equals("prism")) {
1276          this.getPrism().add((PrismComponent) value);
1277        } else if (name.equals("add")) {
1278          this.add = TypeConvertor.castToDecimal(value); // DecimalType
1279        } else if (name.equals("power")) {
1280          this.power = TypeConvertor.castToDecimal(value); // DecimalType
1281        } else if (name.equals("backCurve")) {
1282          this.backCurve = TypeConvertor.castToDecimal(value); // DecimalType
1283        } else if (name.equals("diameter")) {
1284          this.diameter = TypeConvertor.castToDecimal(value); // DecimalType
1285        } else if (name.equals("duration")) {
1286          this.duration = TypeConvertor.castToQuantity(value); // Quantity
1287        } else if (name.equals("color")) {
1288          this.color = TypeConvertor.castToString(value); // StringType
1289        } else if (name.equals("brand")) {
1290          this.brand = TypeConvertor.castToString(value); // StringType
1291        } else if (name.equals("note")) {
1292          this.getNote().add(TypeConvertor.castToAnnotation(value));
1293        } else
1294          return super.setProperty(name, value);
1295        return value;
1296      }
1297
1298  @Override
1299  public void removeChild(String name, Base value) throws FHIRException {
1300        if (name.equals("product")) {
1301          this.product = null;
1302        } else if (name.equals("eye")) {
1303          value = new VisionEyesEnumFactory().fromType(TypeConvertor.castToCode(value));
1304          this.eye = (Enumeration) value; // Enumeration<VisionEyes>
1305        } else if (name.equals("sphere")) {
1306          this.sphere = null;
1307        } else if (name.equals("cylinder")) {
1308          this.cylinder = null;
1309        } else if (name.equals("axis")) {
1310          this.axis = null;
1311        } else if (name.equals("prism")) {
1312          this.getPrism().remove((PrismComponent) value);
1313        } else if (name.equals("add")) {
1314          this.add = null;
1315        } else if (name.equals("power")) {
1316          this.power = null;
1317        } else if (name.equals("backCurve")) {
1318          this.backCurve = null;
1319        } else if (name.equals("diameter")) {
1320          this.diameter = null;
1321        } else if (name.equals("duration")) {
1322          this.duration = null;
1323        } else if (name.equals("color")) {
1324          this.color = null;
1325        } else if (name.equals("brand")) {
1326          this.brand = null;
1327        } else if (name.equals("note")) {
1328          this.getNote().remove(value);
1329        } else
1330          super.removeChild(name, value);
1331        
1332      }
1333
1334      @Override
1335      public Base makeProperty(int hash, String name) throws FHIRException {
1336        switch (hash) {
1337        case -309474065:  return getProduct();
1338        case 100913:  return getEyeElement();
1339        case -895981619:  return getSphereElement();
1340        case -349378602:  return getCylinderElement();
1341        case 3008417:  return getAxisElement();
1342        case 106935105:  return addPrism(); 
1343        case 96417:  return getAddElement();
1344        case 106858757:  return getPowerElement();
1345        case 1309344840:  return getBackCurveElement();
1346        case -233204595:  return getDiameterElement();
1347        case -1992012396:  return getDuration();
1348        case 94842723:  return getColorElement();
1349        case 93997959:  return getBrandElement();
1350        case 3387378:  return addNote(); 
1351        default: return super.makeProperty(hash, name);
1352        }
1353
1354      }
1355
1356      @Override
1357      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1358        switch (hash) {
1359        case -309474065: /*product*/ return new String[] {"CodeableConcept"};
1360        case 100913: /*eye*/ return new String[] {"code"};
1361        case -895981619: /*sphere*/ return new String[] {"decimal"};
1362        case -349378602: /*cylinder*/ return new String[] {"decimal"};
1363        case 3008417: /*axis*/ return new String[] {"integer"};
1364        case 106935105: /*prism*/ return new String[] {};
1365        case 96417: /*add*/ return new String[] {"decimal"};
1366        case 106858757: /*power*/ return new String[] {"decimal"};
1367        case 1309344840: /*backCurve*/ return new String[] {"decimal"};
1368        case -233204595: /*diameter*/ return new String[] {"decimal"};
1369        case -1992012396: /*duration*/ return new String[] {"Quantity"};
1370        case 94842723: /*color*/ return new String[] {"string"};
1371        case 93997959: /*brand*/ return new String[] {"string"};
1372        case 3387378: /*note*/ return new String[] {"Annotation"};
1373        default: return super.getTypesForProperty(hash, name);
1374        }
1375
1376      }
1377
1378      @Override
1379      public Base addChild(String name) throws FHIRException {
1380        if (name.equals("product")) {
1381          this.product = new CodeableConcept();
1382          return this.product;
1383        }
1384        else if (name.equals("eye")) {
1385          throw new FHIRException("Cannot call addChild on a singleton property VisionPrescription.lensSpecification.eye");
1386        }
1387        else if (name.equals("sphere")) {
1388          throw new FHIRException("Cannot call addChild on a singleton property VisionPrescription.lensSpecification.sphere");
1389        }
1390        else if (name.equals("cylinder")) {
1391          throw new FHIRException("Cannot call addChild on a singleton property VisionPrescription.lensSpecification.cylinder");
1392        }
1393        else if (name.equals("axis")) {
1394          throw new FHIRException("Cannot call addChild on a singleton property VisionPrescription.lensSpecification.axis");
1395        }
1396        else if (name.equals("prism")) {
1397          return addPrism();
1398        }
1399        else if (name.equals("add")) {
1400          throw new FHIRException("Cannot call addChild on a singleton property VisionPrescription.lensSpecification.add");
1401        }
1402        else if (name.equals("power")) {
1403          throw new FHIRException("Cannot call addChild on a singleton property VisionPrescription.lensSpecification.power");
1404        }
1405        else if (name.equals("backCurve")) {
1406          throw new FHIRException("Cannot call addChild on a singleton property VisionPrescription.lensSpecification.backCurve");
1407        }
1408        else if (name.equals("diameter")) {
1409          throw new FHIRException("Cannot call addChild on a singleton property VisionPrescription.lensSpecification.diameter");
1410        }
1411        else if (name.equals("duration")) {
1412          this.duration = new Quantity();
1413          return this.duration;
1414        }
1415        else if (name.equals("color")) {
1416          throw new FHIRException("Cannot call addChild on a singleton property VisionPrescription.lensSpecification.color");
1417        }
1418        else if (name.equals("brand")) {
1419          throw new FHIRException("Cannot call addChild on a singleton property VisionPrescription.lensSpecification.brand");
1420        }
1421        else if (name.equals("note")) {
1422          return addNote();
1423        }
1424        else
1425          return super.addChild(name);
1426      }
1427
1428      public VisionPrescriptionLensSpecificationComponent copy() {
1429        VisionPrescriptionLensSpecificationComponent dst = new VisionPrescriptionLensSpecificationComponent();
1430        copyValues(dst);
1431        return dst;
1432      }
1433
1434      public void copyValues(VisionPrescriptionLensSpecificationComponent dst) {
1435        super.copyValues(dst);
1436        dst.product = product == null ? null : product.copy();
1437        dst.eye = eye == null ? null : eye.copy();
1438        dst.sphere = sphere == null ? null : sphere.copy();
1439        dst.cylinder = cylinder == null ? null : cylinder.copy();
1440        dst.axis = axis == null ? null : axis.copy();
1441        if (prism != null) {
1442          dst.prism = new ArrayList<PrismComponent>();
1443          for (PrismComponent i : prism)
1444            dst.prism.add(i.copy());
1445        };
1446        dst.add = add == null ? null : add.copy();
1447        dst.power = power == null ? null : power.copy();
1448        dst.backCurve = backCurve == null ? null : backCurve.copy();
1449        dst.diameter = diameter == null ? null : diameter.copy();
1450        dst.duration = duration == null ? null : duration.copy();
1451        dst.color = color == null ? null : color.copy();
1452        dst.brand = brand == null ? null : brand.copy();
1453        if (note != null) {
1454          dst.note = new ArrayList<Annotation>();
1455          for (Annotation i : note)
1456            dst.note.add(i.copy());
1457        };
1458      }
1459
1460      @Override
1461      public boolean equalsDeep(Base other_) {
1462        if (!super.equalsDeep(other_))
1463          return false;
1464        if (!(other_ instanceof VisionPrescriptionLensSpecificationComponent))
1465          return false;
1466        VisionPrescriptionLensSpecificationComponent o = (VisionPrescriptionLensSpecificationComponent) other_;
1467        return compareDeep(product, o.product, true) && compareDeep(eye, o.eye, true) && compareDeep(sphere, o.sphere, true)
1468           && compareDeep(cylinder, o.cylinder, true) && compareDeep(axis, o.axis, true) && compareDeep(prism, o.prism, true)
1469           && compareDeep(add, o.add, true) && compareDeep(power, o.power, true) && compareDeep(backCurve, o.backCurve, true)
1470           && compareDeep(diameter, o.diameter, true) && compareDeep(duration, o.duration, true) && compareDeep(color, o.color, true)
1471           && compareDeep(brand, o.brand, true) && compareDeep(note, o.note, true);
1472      }
1473
1474      @Override
1475      public boolean equalsShallow(Base other_) {
1476        if (!super.equalsShallow(other_))
1477          return false;
1478        if (!(other_ instanceof VisionPrescriptionLensSpecificationComponent))
1479          return false;
1480        VisionPrescriptionLensSpecificationComponent o = (VisionPrescriptionLensSpecificationComponent) other_;
1481        return compareValues(eye, o.eye, true) && compareValues(sphere, o.sphere, true) && compareValues(cylinder, o.cylinder, true)
1482           && compareValues(axis, o.axis, true) && compareValues(add, o.add, true) && compareValues(power, o.power, true)
1483           && compareValues(backCurve, o.backCurve, true) && compareValues(diameter, o.diameter, true) && compareValues(color, o.color, true)
1484           && compareValues(brand, o.brand, true);
1485      }
1486
1487      public boolean isEmpty() {
1488        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(product, eye, sphere, cylinder
1489          , axis, prism, add, power, backCurve, diameter, duration, color, brand, note
1490          );
1491      }
1492
1493  public String fhirType() {
1494    return "VisionPrescription.lensSpecification";
1495
1496  }
1497
1498  }
1499
1500    @Block()
1501    public static class PrismComponent extends BackboneElement implements IBaseBackboneElement {
1502        /**
1503         * Amount of prism to compensate for eye alignment in fractional units.
1504         */
1505        @Child(name = "amount", type = {DecimalType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1506        @Description(shortDefinition="Amount of adjustment", formalDefinition="Amount of prism to compensate for eye alignment in fractional units." )
1507        protected DecimalType amount;
1508
1509        /**
1510         * The relative base, or reference lens edge, for the prism.
1511         */
1512        @Child(name = "base", type = {CodeType.class}, order=2, min=1, max=1, modifier=false, summary=false)
1513        @Description(shortDefinition="up | down | in | out", formalDefinition="The relative base, or reference lens edge, for the prism." )
1514        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/vision-base-codes")
1515        protected Enumeration<VisionBase> base;
1516
1517        private static final long serialVersionUID = 1677247628L;
1518
1519    /**
1520     * Constructor
1521     */
1522      public PrismComponent() {
1523        super();
1524      }
1525
1526    /**
1527     * Constructor
1528     */
1529      public PrismComponent(BigDecimal amount, VisionBase base) {
1530        super();
1531        this.setAmount(amount);
1532        this.setBase(base);
1533      }
1534
1535        /**
1536         * @return {@link #amount} (Amount of prism to compensate for eye alignment in fractional units.). This is the underlying object with id, value and extensions. The accessor "getAmount" gives direct access to the value
1537         */
1538        public DecimalType getAmountElement() { 
1539          if (this.amount == null)
1540            if (Configuration.errorOnAutoCreate())
1541              throw new Error("Attempt to auto-create PrismComponent.amount");
1542            else if (Configuration.doAutoCreate())
1543              this.amount = new DecimalType(); // bb
1544          return this.amount;
1545        }
1546
1547        public boolean hasAmountElement() { 
1548          return this.amount != null && !this.amount.isEmpty();
1549        }
1550
1551        public boolean hasAmount() { 
1552          return this.amount != null && !this.amount.isEmpty();
1553        }
1554
1555        /**
1556         * @param value {@link #amount} (Amount of prism to compensate for eye alignment in fractional units.). This is the underlying object with id, value and extensions. The accessor "getAmount" gives direct access to the value
1557         */
1558        public PrismComponent setAmountElement(DecimalType value) { 
1559          this.amount = value;
1560          return this;
1561        }
1562
1563        /**
1564         * @return Amount of prism to compensate for eye alignment in fractional units.
1565         */
1566        public BigDecimal getAmount() { 
1567          return this.amount == null ? null : this.amount.getValue();
1568        }
1569
1570        /**
1571         * @param value Amount of prism to compensate for eye alignment in fractional units.
1572         */
1573        public PrismComponent setAmount(BigDecimal value) { 
1574            if (this.amount == null)
1575              this.amount = new DecimalType();
1576            this.amount.setValue(value);
1577          return this;
1578        }
1579
1580        /**
1581         * @param value Amount of prism to compensate for eye alignment in fractional units.
1582         */
1583        public PrismComponent setAmount(long value) { 
1584              this.amount = new DecimalType();
1585            this.amount.setValue(value);
1586          return this;
1587        }
1588
1589        /**
1590         * @param value Amount of prism to compensate for eye alignment in fractional units.
1591         */
1592        public PrismComponent setAmount(double value) { 
1593              this.amount = new DecimalType();
1594            this.amount.setValue(value);
1595          return this;
1596        }
1597
1598        /**
1599         * @return {@link #base} (The relative base, or reference lens edge, for the prism.). This is the underlying object with id, value and extensions. The accessor "getBase" gives direct access to the value
1600         */
1601        public Enumeration<VisionBase> getBaseElement() { 
1602          if (this.base == null)
1603            if (Configuration.errorOnAutoCreate())
1604              throw new Error("Attempt to auto-create PrismComponent.base");
1605            else if (Configuration.doAutoCreate())
1606              this.base = new Enumeration<VisionBase>(new VisionBaseEnumFactory()); // bb
1607          return this.base;
1608        }
1609
1610        public boolean hasBaseElement() { 
1611          return this.base != null && !this.base.isEmpty();
1612        }
1613
1614        public boolean hasBase() { 
1615          return this.base != null && !this.base.isEmpty();
1616        }
1617
1618        /**
1619         * @param value {@link #base} (The relative base, or reference lens edge, for the prism.). This is the underlying object with id, value and extensions. The accessor "getBase" gives direct access to the value
1620         */
1621        public PrismComponent setBaseElement(Enumeration<VisionBase> value) { 
1622          this.base = value;
1623          return this;
1624        }
1625
1626        /**
1627         * @return The relative base, or reference lens edge, for the prism.
1628         */
1629        public VisionBase getBase() { 
1630          return this.base == null ? null : this.base.getValue();
1631        }
1632
1633        /**
1634         * @param value The relative base, or reference lens edge, for the prism.
1635         */
1636        public PrismComponent setBase(VisionBase value) { 
1637            if (this.base == null)
1638              this.base = new Enumeration<VisionBase>(new VisionBaseEnumFactory());
1639            this.base.setValue(value);
1640          return this;
1641        }
1642
1643        protected void listChildren(List<Property> children) {
1644          super.listChildren(children);
1645          children.add(new Property("amount", "decimal", "Amount of prism to compensate for eye alignment in fractional units.", 0, 1, amount));
1646          children.add(new Property("base", "code", "The relative base, or reference lens edge, for the prism.", 0, 1, base));
1647        }
1648
1649        @Override
1650        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1651          switch (_hash) {
1652          case -1413853096: /*amount*/  return new Property("amount", "decimal", "Amount of prism to compensate for eye alignment in fractional units.", 0, 1, amount);
1653          case 3016401: /*base*/  return new Property("base", "code", "The relative base, or reference lens edge, for the prism.", 0, 1, base);
1654          default: return super.getNamedProperty(_hash, _name, _checkValid);
1655          }
1656
1657        }
1658
1659      @Override
1660      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1661        switch (hash) {
1662        case -1413853096: /*amount*/ return this.amount == null ? new Base[0] : new Base[] {this.amount}; // DecimalType
1663        case 3016401: /*base*/ return this.base == null ? new Base[0] : new Base[] {this.base}; // Enumeration<VisionBase>
1664        default: return super.getProperty(hash, name, checkValid);
1665        }
1666
1667      }
1668
1669      @Override
1670      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1671        switch (hash) {
1672        case -1413853096: // amount
1673          this.amount = TypeConvertor.castToDecimal(value); // DecimalType
1674          return value;
1675        case 3016401: // base
1676          value = new VisionBaseEnumFactory().fromType(TypeConvertor.castToCode(value));
1677          this.base = (Enumeration) value; // Enumeration<VisionBase>
1678          return value;
1679        default: return super.setProperty(hash, name, value);
1680        }
1681
1682      }
1683
1684      @Override
1685      public Base setProperty(String name, Base value) throws FHIRException {
1686        if (name.equals("amount")) {
1687          this.amount = TypeConvertor.castToDecimal(value); // DecimalType
1688        } else if (name.equals("base")) {
1689          value = new VisionBaseEnumFactory().fromType(TypeConvertor.castToCode(value));
1690          this.base = (Enumeration) value; // Enumeration<VisionBase>
1691        } else
1692          return super.setProperty(name, value);
1693        return value;
1694      }
1695
1696  @Override
1697  public void removeChild(String name, Base value) throws FHIRException {
1698        if (name.equals("amount")) {
1699          this.amount = null;
1700        } else if (name.equals("base")) {
1701          value = new VisionBaseEnumFactory().fromType(TypeConvertor.castToCode(value));
1702          this.base = (Enumeration) value; // Enumeration<VisionBase>
1703        } else
1704          super.removeChild(name, value);
1705        
1706      }
1707
1708      @Override
1709      public Base makeProperty(int hash, String name) throws FHIRException {
1710        switch (hash) {
1711        case -1413853096:  return getAmountElement();
1712        case 3016401:  return getBaseElement();
1713        default: return super.makeProperty(hash, name);
1714        }
1715
1716      }
1717
1718      @Override
1719      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1720        switch (hash) {
1721        case -1413853096: /*amount*/ return new String[] {"decimal"};
1722        case 3016401: /*base*/ return new String[] {"code"};
1723        default: return super.getTypesForProperty(hash, name);
1724        }
1725
1726      }
1727
1728      @Override
1729      public Base addChild(String name) throws FHIRException {
1730        if (name.equals("amount")) {
1731          throw new FHIRException("Cannot call addChild on a singleton property VisionPrescription.lensSpecification.prism.amount");
1732        }
1733        else if (name.equals("base")) {
1734          throw new FHIRException("Cannot call addChild on a singleton property VisionPrescription.lensSpecification.prism.base");
1735        }
1736        else
1737          return super.addChild(name);
1738      }
1739
1740      public PrismComponent copy() {
1741        PrismComponent dst = new PrismComponent();
1742        copyValues(dst);
1743        return dst;
1744      }
1745
1746      public void copyValues(PrismComponent dst) {
1747        super.copyValues(dst);
1748        dst.amount = amount == null ? null : amount.copy();
1749        dst.base = base == null ? null : base.copy();
1750      }
1751
1752      @Override
1753      public boolean equalsDeep(Base other_) {
1754        if (!super.equalsDeep(other_))
1755          return false;
1756        if (!(other_ instanceof PrismComponent))
1757          return false;
1758        PrismComponent o = (PrismComponent) other_;
1759        return compareDeep(amount, o.amount, true) && compareDeep(base, o.base, true);
1760      }
1761
1762      @Override
1763      public boolean equalsShallow(Base other_) {
1764        if (!super.equalsShallow(other_))
1765          return false;
1766        if (!(other_ instanceof PrismComponent))
1767          return false;
1768        PrismComponent o = (PrismComponent) other_;
1769        return compareValues(amount, o.amount, true) && compareValues(base, o.base, true);
1770      }
1771
1772      public boolean isEmpty() {
1773        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(amount, base);
1774      }
1775
1776  public String fhirType() {
1777    return "VisionPrescription.lensSpecification.prism";
1778
1779  }
1780
1781  }
1782
1783    /**
1784     * A unique identifier assigned to this vision prescription.
1785     */
1786    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1787    @Description(shortDefinition="Business Identifier for vision prescription", formalDefinition="A unique identifier assigned to this vision prescription." )
1788    protected List<Identifier> identifier;
1789
1790    /**
1791     * The status of the resource instance.
1792     */
1793    @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
1794    @Description(shortDefinition="active | cancelled | draft | entered-in-error", formalDefinition="The status of the resource instance." )
1795    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/fm-status")
1796    protected Enumeration<FinancialResourceStatusCodes> status;
1797
1798    /**
1799     * The date this resource was created.
1800     */
1801    @Child(name = "created", type = {DateTimeType.class}, order=2, min=1, max=1, modifier=false, summary=true)
1802    @Description(shortDefinition="Response creation date", formalDefinition="The date this resource was created." )
1803    protected DateTimeType created;
1804
1805    /**
1806     * A resource reference to the person to whom the vision prescription applies.
1807     */
1808    @Child(name = "patient", type = {Patient.class}, order=3, min=1, max=1, modifier=false, summary=true)
1809    @Description(shortDefinition="Who prescription is for", formalDefinition="A resource reference to the person to whom the vision prescription applies." )
1810    protected Reference patient;
1811
1812    /**
1813     * A reference to a resource that identifies the particular occurrence of contact between patient and health care provider during which the prescription was issued.
1814     */
1815    @Child(name = "encounter", type = {Encounter.class}, order=4, min=0, max=1, modifier=false, summary=false)
1816    @Description(shortDefinition="Created during encounter / admission / stay", formalDefinition="A reference to a resource that identifies the particular occurrence of contact between patient and health care provider during which the prescription was issued." )
1817    protected Reference encounter;
1818
1819    /**
1820     * The date (and perhaps time) when the prescription was written.
1821     */
1822    @Child(name = "dateWritten", type = {DateTimeType.class}, order=5, min=1, max=1, modifier=false, summary=true)
1823    @Description(shortDefinition="When prescription was authorized", formalDefinition="The date (and perhaps time) when the prescription was written." )
1824    protected DateTimeType dateWritten;
1825
1826    /**
1827     * The healthcare professional responsible for authorizing the prescription.
1828     */
1829    @Child(name = "prescriber", type = {Practitioner.class, PractitionerRole.class}, order=6, min=1, max=1, modifier=false, summary=true)
1830    @Description(shortDefinition="Who authorized the vision prescription", formalDefinition="The healthcare professional responsible for authorizing the prescription." )
1831    protected Reference prescriber;
1832
1833    /**
1834     * Contain the details of  the individual lens specifications and serves as the authorization for the fullfillment by certified professionals.
1835     */
1836    @Child(name = "lensSpecification", type = {}, order=7, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1837    @Description(shortDefinition="Vision lens authorization", formalDefinition="Contain the details of  the individual lens specifications and serves as the authorization for the fullfillment by certified professionals." )
1838    protected List<VisionPrescriptionLensSpecificationComponent> lensSpecification;
1839
1840    private static final long serialVersionUID = -194296688L;
1841
1842  /**
1843   * Constructor
1844   */
1845    public VisionPrescription() {
1846      super();
1847    }
1848
1849  /**
1850   * Constructor
1851   */
1852    public VisionPrescription(FinancialResourceStatusCodes status, Date created, Reference patient, Date dateWritten, Reference prescriber, VisionPrescriptionLensSpecificationComponent lensSpecification) {
1853      super();
1854      this.setStatus(status);
1855      this.setCreated(created);
1856      this.setPatient(patient);
1857      this.setDateWritten(dateWritten);
1858      this.setPrescriber(prescriber);
1859      this.addLensSpecification(lensSpecification);
1860    }
1861
1862    /**
1863     * @return {@link #identifier} (A unique identifier assigned to this vision prescription.)
1864     */
1865    public List<Identifier> getIdentifier() { 
1866      if (this.identifier == null)
1867        this.identifier = new ArrayList<Identifier>();
1868      return this.identifier;
1869    }
1870
1871    /**
1872     * @return Returns a reference to <code>this</code> for easy method chaining
1873     */
1874    public VisionPrescription setIdentifier(List<Identifier> theIdentifier) { 
1875      this.identifier = theIdentifier;
1876      return this;
1877    }
1878
1879    public boolean hasIdentifier() { 
1880      if (this.identifier == null)
1881        return false;
1882      for (Identifier item : this.identifier)
1883        if (!item.isEmpty())
1884          return true;
1885      return false;
1886    }
1887
1888    public Identifier addIdentifier() { //3
1889      Identifier t = new Identifier();
1890      if (this.identifier == null)
1891        this.identifier = new ArrayList<Identifier>();
1892      this.identifier.add(t);
1893      return t;
1894    }
1895
1896    public VisionPrescription addIdentifier(Identifier t) { //3
1897      if (t == null)
1898        return this;
1899      if (this.identifier == null)
1900        this.identifier = new ArrayList<Identifier>();
1901      this.identifier.add(t);
1902      return this;
1903    }
1904
1905    /**
1906     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
1907     */
1908    public Identifier getIdentifierFirstRep() { 
1909      if (getIdentifier().isEmpty()) {
1910        addIdentifier();
1911      }
1912      return getIdentifier().get(0);
1913    }
1914
1915    /**
1916     * @return {@link #status} (The status of the resource instance.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1917     */
1918    public Enumeration<FinancialResourceStatusCodes> getStatusElement() { 
1919      if (this.status == null)
1920        if (Configuration.errorOnAutoCreate())
1921          throw new Error("Attempt to auto-create VisionPrescription.status");
1922        else if (Configuration.doAutoCreate())
1923          this.status = new Enumeration<FinancialResourceStatusCodes>(new FinancialResourceStatusCodesEnumFactory()); // bb
1924      return this.status;
1925    }
1926
1927    public boolean hasStatusElement() { 
1928      return this.status != null && !this.status.isEmpty();
1929    }
1930
1931    public boolean hasStatus() { 
1932      return this.status != null && !this.status.isEmpty();
1933    }
1934
1935    /**
1936     * @param value {@link #status} (The status of the resource instance.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1937     */
1938    public VisionPrescription setStatusElement(Enumeration<FinancialResourceStatusCodes> value) { 
1939      this.status = value;
1940      return this;
1941    }
1942
1943    /**
1944     * @return The status of the resource instance.
1945     */
1946    public FinancialResourceStatusCodes getStatus() { 
1947      return this.status == null ? null : this.status.getValue();
1948    }
1949
1950    /**
1951     * @param value The status of the resource instance.
1952     */
1953    public VisionPrescription setStatus(FinancialResourceStatusCodes value) { 
1954        if (this.status == null)
1955          this.status = new Enumeration<FinancialResourceStatusCodes>(new FinancialResourceStatusCodesEnumFactory());
1956        this.status.setValue(value);
1957      return this;
1958    }
1959
1960    /**
1961     * @return {@link #created} (The date this resource was created.). This is the underlying object with id, value and extensions. The accessor "getCreated" gives direct access to the value
1962     */
1963    public DateTimeType getCreatedElement() { 
1964      if (this.created == null)
1965        if (Configuration.errorOnAutoCreate())
1966          throw new Error("Attempt to auto-create VisionPrescription.created");
1967        else if (Configuration.doAutoCreate())
1968          this.created = new DateTimeType(); // bb
1969      return this.created;
1970    }
1971
1972    public boolean hasCreatedElement() { 
1973      return this.created != null && !this.created.isEmpty();
1974    }
1975
1976    public boolean hasCreated() { 
1977      return this.created != null && !this.created.isEmpty();
1978    }
1979
1980    /**
1981     * @param value {@link #created} (The date this resource was created.). This is the underlying object with id, value and extensions. The accessor "getCreated" gives direct access to the value
1982     */
1983    public VisionPrescription setCreatedElement(DateTimeType value) { 
1984      this.created = value;
1985      return this;
1986    }
1987
1988    /**
1989     * @return The date this resource was created.
1990     */
1991    public Date getCreated() { 
1992      return this.created == null ? null : this.created.getValue();
1993    }
1994
1995    /**
1996     * @param value The date this resource was created.
1997     */
1998    public VisionPrescription setCreated(Date value) { 
1999        if (this.created == null)
2000          this.created = new DateTimeType();
2001        this.created.setValue(value);
2002      return this;
2003    }
2004
2005    /**
2006     * @return {@link #patient} (A resource reference to the person to whom the vision prescription applies.)
2007     */
2008    public Reference getPatient() { 
2009      if (this.patient == null)
2010        if (Configuration.errorOnAutoCreate())
2011          throw new Error("Attempt to auto-create VisionPrescription.patient");
2012        else if (Configuration.doAutoCreate())
2013          this.patient = new Reference(); // cc
2014      return this.patient;
2015    }
2016
2017    public boolean hasPatient() { 
2018      return this.patient != null && !this.patient.isEmpty();
2019    }
2020
2021    /**
2022     * @param value {@link #patient} (A resource reference to the person to whom the vision prescription applies.)
2023     */
2024    public VisionPrescription setPatient(Reference value) { 
2025      this.patient = value;
2026      return this;
2027    }
2028
2029    /**
2030     * @return {@link #encounter} (A reference to a resource that identifies the particular occurrence of contact between patient and health care provider during which the prescription was issued.)
2031     */
2032    public Reference getEncounter() { 
2033      if (this.encounter == null)
2034        if (Configuration.errorOnAutoCreate())
2035          throw new Error("Attempt to auto-create VisionPrescription.encounter");
2036        else if (Configuration.doAutoCreate())
2037          this.encounter = new Reference(); // cc
2038      return this.encounter;
2039    }
2040
2041    public boolean hasEncounter() { 
2042      return this.encounter != null && !this.encounter.isEmpty();
2043    }
2044
2045    /**
2046     * @param value {@link #encounter} (A reference to a resource that identifies the particular occurrence of contact between patient and health care provider during which the prescription was issued.)
2047     */
2048    public VisionPrescription setEncounter(Reference value) { 
2049      this.encounter = value;
2050      return this;
2051    }
2052
2053    /**
2054     * @return {@link #dateWritten} (The date (and perhaps time) when the prescription was written.). This is the underlying object with id, value and extensions. The accessor "getDateWritten" gives direct access to the value
2055     */
2056    public DateTimeType getDateWrittenElement() { 
2057      if (this.dateWritten == null)
2058        if (Configuration.errorOnAutoCreate())
2059          throw new Error("Attempt to auto-create VisionPrescription.dateWritten");
2060        else if (Configuration.doAutoCreate())
2061          this.dateWritten = new DateTimeType(); // bb
2062      return this.dateWritten;
2063    }
2064
2065    public boolean hasDateWrittenElement() { 
2066      return this.dateWritten != null && !this.dateWritten.isEmpty();
2067    }
2068
2069    public boolean hasDateWritten() { 
2070      return this.dateWritten != null && !this.dateWritten.isEmpty();
2071    }
2072
2073    /**
2074     * @param value {@link #dateWritten} (The date (and perhaps time) when the prescription was written.). This is the underlying object with id, value and extensions. The accessor "getDateWritten" gives direct access to the value
2075     */
2076    public VisionPrescription setDateWrittenElement(DateTimeType value) { 
2077      this.dateWritten = value;
2078      return this;
2079    }
2080
2081    /**
2082     * @return The date (and perhaps time) when the prescription was written.
2083     */
2084    public Date getDateWritten() { 
2085      return this.dateWritten == null ? null : this.dateWritten.getValue();
2086    }
2087
2088    /**
2089     * @param value The date (and perhaps time) when the prescription was written.
2090     */
2091    public VisionPrescription setDateWritten(Date value) { 
2092        if (this.dateWritten == null)
2093          this.dateWritten = new DateTimeType();
2094        this.dateWritten.setValue(value);
2095      return this;
2096    }
2097
2098    /**
2099     * @return {@link #prescriber} (The healthcare professional responsible for authorizing the prescription.)
2100     */
2101    public Reference getPrescriber() { 
2102      if (this.prescriber == null)
2103        if (Configuration.errorOnAutoCreate())
2104          throw new Error("Attempt to auto-create VisionPrescription.prescriber");
2105        else if (Configuration.doAutoCreate())
2106          this.prescriber = new Reference(); // cc
2107      return this.prescriber;
2108    }
2109
2110    public boolean hasPrescriber() { 
2111      return this.prescriber != null && !this.prescriber.isEmpty();
2112    }
2113
2114    /**
2115     * @param value {@link #prescriber} (The healthcare professional responsible for authorizing the prescription.)
2116     */
2117    public VisionPrescription setPrescriber(Reference value) { 
2118      this.prescriber = value;
2119      return this;
2120    }
2121
2122    /**
2123     * @return {@link #lensSpecification} (Contain the details of  the individual lens specifications and serves as the authorization for the fullfillment by certified professionals.)
2124     */
2125    public List<VisionPrescriptionLensSpecificationComponent> getLensSpecification() { 
2126      if (this.lensSpecification == null)
2127        this.lensSpecification = new ArrayList<VisionPrescriptionLensSpecificationComponent>();
2128      return this.lensSpecification;
2129    }
2130
2131    /**
2132     * @return Returns a reference to <code>this</code> for easy method chaining
2133     */
2134    public VisionPrescription setLensSpecification(List<VisionPrescriptionLensSpecificationComponent> theLensSpecification) { 
2135      this.lensSpecification = theLensSpecification;
2136      return this;
2137    }
2138
2139    public boolean hasLensSpecification() { 
2140      if (this.lensSpecification == null)
2141        return false;
2142      for (VisionPrescriptionLensSpecificationComponent item : this.lensSpecification)
2143        if (!item.isEmpty())
2144          return true;
2145      return false;
2146    }
2147
2148    public VisionPrescriptionLensSpecificationComponent addLensSpecification() { //3
2149      VisionPrescriptionLensSpecificationComponent t = new VisionPrescriptionLensSpecificationComponent();
2150      if (this.lensSpecification == null)
2151        this.lensSpecification = new ArrayList<VisionPrescriptionLensSpecificationComponent>();
2152      this.lensSpecification.add(t);
2153      return t;
2154    }
2155
2156    public VisionPrescription addLensSpecification(VisionPrescriptionLensSpecificationComponent t) { //3
2157      if (t == null)
2158        return this;
2159      if (this.lensSpecification == null)
2160        this.lensSpecification = new ArrayList<VisionPrescriptionLensSpecificationComponent>();
2161      this.lensSpecification.add(t);
2162      return this;
2163    }
2164
2165    /**
2166     * @return The first repetition of repeating field {@link #lensSpecification}, creating it if it does not already exist {3}
2167     */
2168    public VisionPrescriptionLensSpecificationComponent getLensSpecificationFirstRep() { 
2169      if (getLensSpecification().isEmpty()) {
2170        addLensSpecification();
2171      }
2172      return getLensSpecification().get(0);
2173    }
2174
2175      protected void listChildren(List<Property> children) {
2176        super.listChildren(children);
2177        children.add(new Property("identifier", "Identifier", "A unique identifier assigned to this vision prescription.", 0, java.lang.Integer.MAX_VALUE, identifier));
2178        children.add(new Property("status", "code", "The status of the resource instance.", 0, 1, status));
2179        children.add(new Property("created", "dateTime", "The date this resource was created.", 0, 1, created));
2180        children.add(new Property("patient", "Reference(Patient)", "A resource reference to the person to whom the vision prescription applies.", 0, 1, patient));
2181        children.add(new Property("encounter", "Reference(Encounter)", "A reference to a resource that identifies the particular occurrence of contact between patient and health care provider during which the prescription was issued.", 0, 1, encounter));
2182        children.add(new Property("dateWritten", "dateTime", "The date (and perhaps time) when the prescription was written.", 0, 1, dateWritten));
2183        children.add(new Property("prescriber", "Reference(Practitioner|PractitionerRole)", "The healthcare professional responsible for authorizing the prescription.", 0, 1, prescriber));
2184        children.add(new Property("lensSpecification", "", "Contain the details of  the individual lens specifications and serves as the authorization for the fullfillment by certified professionals.", 0, java.lang.Integer.MAX_VALUE, lensSpecification));
2185      }
2186
2187      @Override
2188      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2189        switch (_hash) {
2190        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A unique identifier assigned to this vision prescription.", 0, java.lang.Integer.MAX_VALUE, identifier);
2191        case -892481550: /*status*/  return new Property("status", "code", "The status of the resource instance.", 0, 1, status);
2192        case 1028554472: /*created*/  return new Property("created", "dateTime", "The date this resource was created.", 0, 1, created);
2193        case -791418107: /*patient*/  return new Property("patient", "Reference(Patient)", "A resource reference to the person to whom the vision prescription applies.", 0, 1, patient);
2194        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "A reference to a resource that identifies the particular occurrence of contact between patient and health care provider during which the prescription was issued.", 0, 1, encounter);
2195        case -1496880759: /*dateWritten*/  return new Property("dateWritten", "dateTime", "The date (and perhaps time) when the prescription was written.", 0, 1, dateWritten);
2196        case 1430631077: /*prescriber*/  return new Property("prescriber", "Reference(Practitioner|PractitionerRole)", "The healthcare professional responsible for authorizing the prescription.", 0, 1, prescriber);
2197        case -1767318363: /*lensSpecification*/  return new Property("lensSpecification", "", "Contain the details of  the individual lens specifications and serves as the authorization for the fullfillment by certified professionals.", 0, java.lang.Integer.MAX_VALUE, lensSpecification);
2198        default: return super.getNamedProperty(_hash, _name, _checkValid);
2199        }
2200
2201      }
2202
2203      @Override
2204      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2205        switch (hash) {
2206        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
2207        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<FinancialResourceStatusCodes>
2208        case 1028554472: /*created*/ return this.created == null ? new Base[0] : new Base[] {this.created}; // DateTimeType
2209        case -791418107: /*patient*/ return this.patient == null ? new Base[0] : new Base[] {this.patient}; // Reference
2210        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
2211        case -1496880759: /*dateWritten*/ return this.dateWritten == null ? new Base[0] : new Base[] {this.dateWritten}; // DateTimeType
2212        case 1430631077: /*prescriber*/ return this.prescriber == null ? new Base[0] : new Base[] {this.prescriber}; // Reference
2213        case -1767318363: /*lensSpecification*/ return this.lensSpecification == null ? new Base[0] : this.lensSpecification.toArray(new Base[this.lensSpecification.size()]); // VisionPrescriptionLensSpecificationComponent
2214        default: return super.getProperty(hash, name, checkValid);
2215        }
2216
2217      }
2218
2219      @Override
2220      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2221        switch (hash) {
2222        case -1618432855: // identifier
2223          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
2224          return value;
2225        case -892481550: // status
2226          value = new FinancialResourceStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
2227          this.status = (Enumeration) value; // Enumeration<FinancialResourceStatusCodes>
2228          return value;
2229        case 1028554472: // created
2230          this.created = TypeConvertor.castToDateTime(value); // DateTimeType
2231          return value;
2232        case -791418107: // patient
2233          this.patient = TypeConvertor.castToReference(value); // Reference
2234          return value;
2235        case 1524132147: // encounter
2236          this.encounter = TypeConvertor.castToReference(value); // Reference
2237          return value;
2238        case -1496880759: // dateWritten
2239          this.dateWritten = TypeConvertor.castToDateTime(value); // DateTimeType
2240          return value;
2241        case 1430631077: // prescriber
2242          this.prescriber = TypeConvertor.castToReference(value); // Reference
2243          return value;
2244        case -1767318363: // lensSpecification
2245          this.getLensSpecification().add((VisionPrescriptionLensSpecificationComponent) value); // VisionPrescriptionLensSpecificationComponent
2246          return value;
2247        default: return super.setProperty(hash, name, value);
2248        }
2249
2250      }
2251
2252      @Override
2253      public Base setProperty(String name, Base value) throws FHIRException {
2254        if (name.equals("identifier")) {
2255          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
2256        } else if (name.equals("status")) {
2257          value = new FinancialResourceStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
2258          this.status = (Enumeration) value; // Enumeration<FinancialResourceStatusCodes>
2259        } else if (name.equals("created")) {
2260          this.created = TypeConvertor.castToDateTime(value); // DateTimeType
2261        } else if (name.equals("patient")) {
2262          this.patient = TypeConvertor.castToReference(value); // Reference
2263        } else if (name.equals("encounter")) {
2264          this.encounter = TypeConvertor.castToReference(value); // Reference
2265        } else if (name.equals("dateWritten")) {
2266          this.dateWritten = TypeConvertor.castToDateTime(value); // DateTimeType
2267        } else if (name.equals("prescriber")) {
2268          this.prescriber = TypeConvertor.castToReference(value); // Reference
2269        } else if (name.equals("lensSpecification")) {
2270          this.getLensSpecification().add((VisionPrescriptionLensSpecificationComponent) value);
2271        } else
2272          return super.setProperty(name, value);
2273        return value;
2274      }
2275
2276  @Override
2277  public void removeChild(String name, Base value) throws FHIRException {
2278        if (name.equals("identifier")) {
2279          this.getIdentifier().remove(value);
2280        } else if (name.equals("status")) {
2281          value = new FinancialResourceStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
2282          this.status = (Enumeration) value; // Enumeration<FinancialResourceStatusCodes>
2283        } else if (name.equals("created")) {
2284          this.created = null;
2285        } else if (name.equals("patient")) {
2286          this.patient = null;
2287        } else if (name.equals("encounter")) {
2288          this.encounter = null;
2289        } else if (name.equals("dateWritten")) {
2290          this.dateWritten = null;
2291        } else if (name.equals("prescriber")) {
2292          this.prescriber = null;
2293        } else if (name.equals("lensSpecification")) {
2294          this.getLensSpecification().remove((VisionPrescriptionLensSpecificationComponent) value);
2295        } else
2296          super.removeChild(name, value);
2297        
2298      }
2299
2300      @Override
2301      public Base makeProperty(int hash, String name) throws FHIRException {
2302        switch (hash) {
2303        case -1618432855:  return addIdentifier(); 
2304        case -892481550:  return getStatusElement();
2305        case 1028554472:  return getCreatedElement();
2306        case -791418107:  return getPatient();
2307        case 1524132147:  return getEncounter();
2308        case -1496880759:  return getDateWrittenElement();
2309        case 1430631077:  return getPrescriber();
2310        case -1767318363:  return addLensSpecification(); 
2311        default: return super.makeProperty(hash, name);
2312        }
2313
2314      }
2315
2316      @Override
2317      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2318        switch (hash) {
2319        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2320        case -892481550: /*status*/ return new String[] {"code"};
2321        case 1028554472: /*created*/ return new String[] {"dateTime"};
2322        case -791418107: /*patient*/ return new String[] {"Reference"};
2323        case 1524132147: /*encounter*/ return new String[] {"Reference"};
2324        case -1496880759: /*dateWritten*/ return new String[] {"dateTime"};
2325        case 1430631077: /*prescriber*/ return new String[] {"Reference"};
2326        case -1767318363: /*lensSpecification*/ return new String[] {};
2327        default: return super.getTypesForProperty(hash, name);
2328        }
2329
2330      }
2331
2332      @Override
2333      public Base addChild(String name) throws FHIRException {
2334        if (name.equals("identifier")) {
2335          return addIdentifier();
2336        }
2337        else if (name.equals("status")) {
2338          throw new FHIRException("Cannot call addChild on a singleton property VisionPrescription.status");
2339        }
2340        else if (name.equals("created")) {
2341          throw new FHIRException("Cannot call addChild on a singleton property VisionPrescription.created");
2342        }
2343        else if (name.equals("patient")) {
2344          this.patient = new Reference();
2345          return this.patient;
2346        }
2347        else if (name.equals("encounter")) {
2348          this.encounter = new Reference();
2349          return this.encounter;
2350        }
2351        else if (name.equals("dateWritten")) {
2352          throw new FHIRException("Cannot call addChild on a singleton property VisionPrescription.dateWritten");
2353        }
2354        else if (name.equals("prescriber")) {
2355          this.prescriber = new Reference();
2356          return this.prescriber;
2357        }
2358        else if (name.equals("lensSpecification")) {
2359          return addLensSpecification();
2360        }
2361        else
2362          return super.addChild(name);
2363      }
2364
2365  public String fhirType() {
2366    return "VisionPrescription";
2367
2368  }
2369
2370      public VisionPrescription copy() {
2371        VisionPrescription dst = new VisionPrescription();
2372        copyValues(dst);
2373        return dst;
2374      }
2375
2376      public void copyValues(VisionPrescription dst) {
2377        super.copyValues(dst);
2378        if (identifier != null) {
2379          dst.identifier = new ArrayList<Identifier>();
2380          for (Identifier i : identifier)
2381            dst.identifier.add(i.copy());
2382        };
2383        dst.status = status == null ? null : status.copy();
2384        dst.created = created == null ? null : created.copy();
2385        dst.patient = patient == null ? null : patient.copy();
2386        dst.encounter = encounter == null ? null : encounter.copy();
2387        dst.dateWritten = dateWritten == null ? null : dateWritten.copy();
2388        dst.prescriber = prescriber == null ? null : prescriber.copy();
2389        if (lensSpecification != null) {
2390          dst.lensSpecification = new ArrayList<VisionPrescriptionLensSpecificationComponent>();
2391          for (VisionPrescriptionLensSpecificationComponent i : lensSpecification)
2392            dst.lensSpecification.add(i.copy());
2393        };
2394      }
2395
2396      protected VisionPrescription typedCopy() {
2397        return copy();
2398      }
2399
2400      @Override
2401      public boolean equalsDeep(Base other_) {
2402        if (!super.equalsDeep(other_))
2403          return false;
2404        if (!(other_ instanceof VisionPrescription))
2405          return false;
2406        VisionPrescription o = (VisionPrescription) other_;
2407        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(created, o.created, true)
2408           && compareDeep(patient, o.patient, true) && compareDeep(encounter, o.encounter, true) && compareDeep(dateWritten, o.dateWritten, true)
2409           && compareDeep(prescriber, o.prescriber, true) && compareDeep(lensSpecification, o.lensSpecification, true)
2410          ;
2411      }
2412
2413      @Override
2414      public boolean equalsShallow(Base other_) {
2415        if (!super.equalsShallow(other_))
2416          return false;
2417        if (!(other_ instanceof VisionPrescription))
2418          return false;
2419        VisionPrescription o = (VisionPrescription) other_;
2420        return compareValues(status, o.status, true) && compareValues(created, o.created, true) && compareValues(dateWritten, o.dateWritten, true)
2421          ;
2422      }
2423
2424      public boolean isEmpty() {
2425        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, created
2426          , patient, encounter, dateWritten, prescriber, lensSpecification);
2427      }
2428
2429  @Override
2430  public ResourceType getResourceType() {
2431    return ResourceType.VisionPrescription;
2432   }
2433
2434 /**
2435   * Search parameter: <b>datewritten</b>
2436   * <p>
2437   * Description: <b>Return prescriptions written on this date</b><br>
2438   * Type: <b>date</b><br>
2439   * Path: <b>VisionPrescription.dateWritten</b><br>
2440   * </p>
2441   */
2442  @SearchParamDefinition(name="datewritten", path="VisionPrescription.dateWritten", description="Return prescriptions written on this date", type="date" )
2443  public static final String SP_DATEWRITTEN = "datewritten";
2444 /**
2445   * <b>Fluent Client</b> search parameter constant for <b>datewritten</b>
2446   * <p>
2447   * Description: <b>Return prescriptions written on this date</b><br>
2448   * Type: <b>date</b><br>
2449   * Path: <b>VisionPrescription.dateWritten</b><br>
2450   * </p>
2451   */
2452  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATEWRITTEN = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATEWRITTEN);
2453
2454 /**
2455   * Search parameter: <b>prescriber</b>
2456   * <p>
2457   * Description: <b>Who authorized the vision prescription</b><br>
2458   * Type: <b>reference</b><br>
2459   * Path: <b>VisionPrescription.prescriber</b><br>
2460   * </p>
2461   */
2462  @SearchParamDefinition(name="prescriber", path="VisionPrescription.prescriber", description="Who authorized the vision prescription", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={Practitioner.class, PractitionerRole.class } )
2463  public static final String SP_PRESCRIBER = "prescriber";
2464 /**
2465   * <b>Fluent Client</b> search parameter constant for <b>prescriber</b>
2466   * <p>
2467   * Description: <b>Who authorized the vision prescription</b><br>
2468   * Type: <b>reference</b><br>
2469   * Path: <b>VisionPrescription.prescriber</b><br>
2470   * </p>
2471   */
2472  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PRESCRIBER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PRESCRIBER);
2473
2474/**
2475   * Constant for fluent queries to be used to add include statements. Specifies
2476   * the path value of "<b>VisionPrescription:prescriber</b>".
2477   */
2478  public static final ca.uhn.fhir.model.api.Include INCLUDE_PRESCRIBER = new ca.uhn.fhir.model.api.Include("VisionPrescription:prescriber").toLocked();
2479
2480 /**
2481   * Search parameter: <b>status</b>
2482   * <p>
2483   * Description: <b>The status of the vision prescription</b><br>
2484   * Type: <b>token</b><br>
2485   * Path: <b>VisionPrescription.status</b><br>
2486   * </p>
2487   */
2488  @SearchParamDefinition(name="status", path="VisionPrescription.status", description="The status of the vision prescription", type="token" )
2489  public static final String SP_STATUS = "status";
2490 /**
2491   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2492   * <p>
2493   * Description: <b>The status of the vision prescription</b><br>
2494   * Type: <b>token</b><br>
2495   * Path: <b>VisionPrescription.status</b><br>
2496   * </p>
2497   */
2498  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2499
2500 /**
2501   * Search parameter: <b>encounter</b>
2502   * <p>
2503   * Description: <b>Multiple Resources: 
2504
2505* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
2506* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
2507* [ChargeItem](chargeitem.html): Encounter associated with event
2508* [Claim](claim.html): Encounters associated with a billed line item
2509* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
2510* [Communication](communication.html): The Encounter during which this Communication was created
2511* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
2512* [Composition](composition.html): Context of the Composition
2513* [Condition](condition.html): The Encounter during which this Condition was created
2514* [DeviceRequest](devicerequest.html): Encounter during which request was created
2515* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
2516* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
2517* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
2518* [Flag](flag.html): Alert relevant during encounter
2519* [ImagingStudy](imagingstudy.html): The context of the study
2520* [List](list.html): Context in which list created
2521* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
2522* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
2523* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
2524* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
2525* [Observation](observation.html): Encounter related to the observation
2526* [Procedure](procedure.html): The Encounter during which this Procedure was created
2527* [Provenance](provenance.html): Encounter related to the Provenance
2528* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
2529* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
2530* [RiskAssessment](riskassessment.html): Where was assessment performed?
2531* [ServiceRequest](servicerequest.html): An encounter in which this request is made
2532* [Task](task.html): Search by encounter
2533* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
2534</b><br>
2535   * Type: <b>reference</b><br>
2536   * 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>
2537   * </p>
2538   */
2539  @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 } )
2540  public static final String SP_ENCOUNTER = "encounter";
2541 /**
2542   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
2543   * <p>
2544   * Description: <b>Multiple Resources: 
2545
2546* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
2547* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
2548* [ChargeItem](chargeitem.html): Encounter associated with event
2549* [Claim](claim.html): Encounters associated with a billed line item
2550* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
2551* [Communication](communication.html): The Encounter during which this Communication was created
2552* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
2553* [Composition](composition.html): Context of the Composition
2554* [Condition](condition.html): The Encounter during which this Condition was created
2555* [DeviceRequest](devicerequest.html): Encounter during which request was created
2556* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
2557* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
2558* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
2559* [Flag](flag.html): Alert relevant during encounter
2560* [ImagingStudy](imagingstudy.html): The context of the study
2561* [List](list.html): Context in which list created
2562* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
2563* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
2564* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
2565* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
2566* [Observation](observation.html): Encounter related to the observation
2567* [Procedure](procedure.html): The Encounter during which this Procedure was created
2568* [Provenance](provenance.html): Encounter related to the Provenance
2569* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
2570* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
2571* [RiskAssessment](riskassessment.html): Where was assessment performed?
2572* [ServiceRequest](servicerequest.html): An encounter in which this request is made
2573* [Task](task.html): Search by encounter
2574* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
2575</b><br>
2576   * Type: <b>reference</b><br>
2577   * 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>
2578   * </p>
2579   */
2580  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
2581
2582/**
2583   * Constant for fluent queries to be used to add include statements. Specifies
2584   * the path value of "<b>VisionPrescription:encounter</b>".
2585   */
2586  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("VisionPrescription:encounter").toLocked();
2587
2588 /**
2589   * Search parameter: <b>identifier</b>
2590   * <p>
2591   * Description: <b>Multiple Resources: 
2592
2593* [Account](account.html): Account number
2594* [AdverseEvent](adverseevent.html): Business identifier for the event
2595* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2596* [Appointment](appointment.html): An Identifier of the Appointment
2597* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
2598* [Basic](basic.html): Business identifier
2599* [BodyStructure](bodystructure.html): Bodystructure identifier
2600* [CarePlan](careplan.html): External Ids for this plan
2601* [CareTeam](careteam.html): External Ids for this team
2602* [ChargeItem](chargeitem.html): Business Identifier for item
2603* [Claim](claim.html): The primary identifier of the financial resource
2604* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
2605* [ClinicalImpression](clinicalimpression.html): Business identifier
2606* [Communication](communication.html): Unique identifier
2607* [CommunicationRequest](communicationrequest.html): Unique identifier
2608* [Composition](composition.html): Version-independent identifier for the Composition
2609* [Condition](condition.html): A unique identifier of the condition record
2610* [Consent](consent.html): Identifier for this record (external references)
2611* [Contract](contract.html): The identity of the contract
2612* [Coverage](coverage.html): The primary identifier of the insured and the coverage
2613* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
2614* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
2615* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2616* [DeviceRequest](devicerequest.html): Business identifier for request/order
2617* [DeviceUsage](deviceusage.html): Search by identifier
2618* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2619* [DocumentReference](documentreference.html): Identifier of the attachment binary
2620* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2621* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
2622* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2623* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
2624* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2625* [Flag](flag.html): Business identifier
2626* [Goal](goal.html): External Ids for this goal
2627* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
2628* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
2629* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
2630* [Immunization](immunization.html): Business identifier
2631* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
2632* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
2633* [Invoice](invoice.html): Business Identifier for item
2634* [List](list.html): Business identifier
2635* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
2636* [Medication](medication.html): Returns medications with this external identifier
2637* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2638* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2639* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2640* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
2641* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
2642* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
2643* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2644* [Observation](observation.html): The unique id for a particular observation
2645* [Person](person.html): A person Identifier
2646* [Procedure](procedure.html): A unique identifier for a procedure
2647* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
2648* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
2649* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
2650* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
2651* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2652* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2653* [Specimen](specimen.html): The unique identifier associated with the specimen
2654* [SupplyDelivery](supplydelivery.html): External identifier
2655* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2656* [Task](task.html): Search for a task instance by its business identifier
2657* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2658</b><br>
2659   * Type: <b>token</b><br>
2660   * 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>
2661   * </p>
2662   */
2663  @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" )
2664  public static final String SP_IDENTIFIER = "identifier";
2665 /**
2666   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2667   * <p>
2668   * Description: <b>Multiple Resources: 
2669
2670* [Account](account.html): Account number
2671* [AdverseEvent](adverseevent.html): Business identifier for the event
2672* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2673* [Appointment](appointment.html): An Identifier of the Appointment
2674* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
2675* [Basic](basic.html): Business identifier
2676* [BodyStructure](bodystructure.html): Bodystructure identifier
2677* [CarePlan](careplan.html): External Ids for this plan
2678* [CareTeam](careteam.html): External Ids for this team
2679* [ChargeItem](chargeitem.html): Business Identifier for item
2680* [Claim](claim.html): The primary identifier of the financial resource
2681* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
2682* [ClinicalImpression](clinicalimpression.html): Business identifier
2683* [Communication](communication.html): Unique identifier
2684* [CommunicationRequest](communicationrequest.html): Unique identifier
2685* [Composition](composition.html): Version-independent identifier for the Composition
2686* [Condition](condition.html): A unique identifier of the condition record
2687* [Consent](consent.html): Identifier for this record (external references)
2688* [Contract](contract.html): The identity of the contract
2689* [Coverage](coverage.html): The primary identifier of the insured and the coverage
2690* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
2691* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
2692* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2693* [DeviceRequest](devicerequest.html): Business identifier for request/order
2694* [DeviceUsage](deviceusage.html): Search by identifier
2695* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2696* [DocumentReference](documentreference.html): Identifier of the attachment binary
2697* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2698* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
2699* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2700* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
2701* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2702* [Flag](flag.html): Business identifier
2703* [Goal](goal.html): External Ids for this goal
2704* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
2705* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
2706* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
2707* [Immunization](immunization.html): Business identifier
2708* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
2709* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
2710* [Invoice](invoice.html): Business Identifier for item
2711* [List](list.html): Business identifier
2712* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
2713* [Medication](medication.html): Returns medications with this external identifier
2714* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2715* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2716* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2717* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
2718* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
2719* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
2720* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2721* [Observation](observation.html): The unique id for a particular observation
2722* [Person](person.html): A person Identifier
2723* [Procedure](procedure.html): A unique identifier for a procedure
2724* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
2725* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
2726* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
2727* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
2728* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2729* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2730* [Specimen](specimen.html): The unique identifier associated with the specimen
2731* [SupplyDelivery](supplydelivery.html): External identifier
2732* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2733* [Task](task.html): Search for a task instance by its business identifier
2734* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2735</b><br>
2736   * Type: <b>token</b><br>
2737   * 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>
2738   * </p>
2739   */
2740  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2741
2742 /**
2743   * Search parameter: <b>patient</b>
2744   * <p>
2745   * Description: <b>Multiple Resources: 
2746
2747* [Account](account.html): The entity that caused the expenses
2748* [AdverseEvent](adverseevent.html): Subject impacted by event
2749* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2750* [Appointment](appointment.html): One of the individuals of the appointment is this patient
2751* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
2752* [AuditEvent](auditevent.html): Where the activity involved patient data
2753* [Basic](basic.html): Identifies the focus of this resource
2754* [BodyStructure](bodystructure.html): Who this is about
2755* [CarePlan](careplan.html): Who the care plan is for
2756* [CareTeam](careteam.html): Who care team is for
2757* [ChargeItem](chargeitem.html): Individual service was done for/to
2758* [Claim](claim.html): Patient receiving the products or services
2759* [ClaimResponse](claimresponse.html): The subject of care
2760* [ClinicalImpression](clinicalimpression.html): Patient assessed
2761* [Communication](communication.html): Focus of message
2762* [CommunicationRequest](communicationrequest.html): Focus of message
2763* [Composition](composition.html): Who and/or what the composition is about
2764* [Condition](condition.html): Who has the condition?
2765* [Consent](consent.html): Who the consent applies to
2766* [Contract](contract.html): The identity of the subject of the contract (if a patient)
2767* [Coverage](coverage.html): Retrieve coverages for a patient
2768* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
2769* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
2770* [DetectedIssue](detectedissue.html): Associated patient
2771* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2772* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
2773* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2774* [DocumentReference](documentreference.html): Who/what is the subject of the document
2775* [Encounter](encounter.html): The patient present at the encounter
2776* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
2777* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2778* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
2779* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2780* [Flag](flag.html): The identity of a subject to list flags for
2781* [Goal](goal.html): Who this goal is intended for
2782* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
2783* [ImagingSelection](imagingselection.html): Who the study is about
2784* [ImagingStudy](imagingstudy.html): Who the study is about
2785* [Immunization](immunization.html): The patient for the vaccination record
2786* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
2787* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
2788* [Invoice](invoice.html): Recipient(s) of goods and services
2789* [List](list.html): If all resources have the same subject
2790* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
2791* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2792* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2793* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2794* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2795* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
2796* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
2797* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
2798* [Observation](observation.html): The subject that the observation is about (if patient)
2799* [Person](person.html): The Person links to this Patient
2800* [Procedure](procedure.html): Search by subject - a patient
2801* [Provenance](provenance.html): Where the activity involved patient data
2802* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
2803* [RelatedPerson](relatedperson.html): The patient this related person is related to
2804* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
2805* [ResearchSubject](researchsubject.html): Who or what is part of study
2806* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2807* [ServiceRequest](servicerequest.html): Search by subject - a patient
2808* [Specimen](specimen.html): The patient the specimen comes from
2809* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2810* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
2811* [Task](task.html): Search by patient
2812* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2813</b><br>
2814   * Type: <b>reference</b><br>
2815   * 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>
2816   * </p>
2817   */
2818  @SearchParamDefinition(name="patient", path="Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [Account](account.html): The entity that caused the expenses\r\n* [AdverseEvent](adverseevent.html): Subject impacted by event\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [Appointment](appointment.html): One of the individuals of the appointment is this patient\r\n* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient\r\n* [AuditEvent](auditevent.html): Where the activity involved patient data\r\n* [Basic](basic.html): Identifies the focus of this resource\r\n* [BodyStructure](bodystructure.html): Who this is about\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ChargeItem](chargeitem.html): Individual service was done for/to\r\n* [Claim](claim.html): Patient receiving the products or services\r\n* [ClaimResponse](claimresponse.html): The subject of care\r\n* [ClinicalImpression](clinicalimpression.html): Patient assessed\r\n* [Communication](communication.html): Focus of message\r\n* [CommunicationRequest](communicationrequest.html): Focus of message\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [Contract](contract.html): The identity of the subject of the contract (if a patient)\r\n* [Coverage](coverage.html): Retrieve coverages for a patient\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient present at the encounter\r\n* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results\r\n* [ImagingSelection](imagingselection.html): Who the study is about\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for\r\n* [Invoice](invoice.html): Recipient(s) of goods and services\r\n* [List](list.html): If all resources have the same subject\r\n* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.\r\n* [MolecularSequence](molecularsequence.html): The subject that the sequence is about\r\n* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Person](person.html): The Person links to this Patient\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [Provenance](provenance.html): Where the activity involved patient data\r\n* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response\r\n* [RelatedPerson](relatedperson.html): The patient this related person is related to\r\n* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations\r\n* [ResearchSubject](researchsubject.html): Who or what is part of study\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [Specimen](specimen.html): The patient the specimen comes from\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined\r\n* [Task](task.html): Search by patient\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Patient.class } )
2819  public static final String SP_PATIENT = "patient";
2820 /**
2821   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
2822   * <p>
2823   * Description: <b>Multiple Resources: 
2824
2825* [Account](account.html): The entity that caused the expenses
2826* [AdverseEvent](adverseevent.html): Subject impacted by event
2827* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2828* [Appointment](appointment.html): One of the individuals of the appointment is this patient
2829* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
2830* [AuditEvent](auditevent.html): Where the activity involved patient data
2831* [Basic](basic.html): Identifies the focus of this resource
2832* [BodyStructure](bodystructure.html): Who this is about
2833* [CarePlan](careplan.html): Who the care plan is for
2834* [CareTeam](careteam.html): Who care team is for
2835* [ChargeItem](chargeitem.html): Individual service was done for/to
2836* [Claim](claim.html): Patient receiving the products or services
2837* [ClaimResponse](claimresponse.html): The subject of care
2838* [ClinicalImpression](clinicalimpression.html): Patient assessed
2839* [Communication](communication.html): Focus of message
2840* [CommunicationRequest](communicationrequest.html): Focus of message
2841* [Composition](composition.html): Who and/or what the composition is about
2842* [Condition](condition.html): Who has the condition?
2843* [Consent](consent.html): Who the consent applies to
2844* [Contract](contract.html): The identity of the subject of the contract (if a patient)
2845* [Coverage](coverage.html): Retrieve coverages for a patient
2846* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
2847* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
2848* [DetectedIssue](detectedissue.html): Associated patient
2849* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2850* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
2851* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2852* [DocumentReference](documentreference.html): Who/what is the subject of the document
2853* [Encounter](encounter.html): The patient present at the encounter
2854* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
2855* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2856* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
2857* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2858* [Flag](flag.html): The identity of a subject to list flags for
2859* [Goal](goal.html): Who this goal is intended for
2860* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
2861* [ImagingSelection](imagingselection.html): Who the study is about
2862* [ImagingStudy](imagingstudy.html): Who the study is about
2863* [Immunization](immunization.html): The patient for the vaccination record
2864* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
2865* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
2866* [Invoice](invoice.html): Recipient(s) of goods and services
2867* [List](list.html): If all resources have the same subject
2868* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
2869* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2870* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2871* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2872* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2873* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
2874* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
2875* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
2876* [Observation](observation.html): The subject that the observation is about (if patient)
2877* [Person](person.html): The Person links to this Patient
2878* [Procedure](procedure.html): Search by subject - a patient
2879* [Provenance](provenance.html): Where the activity involved patient data
2880* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
2881* [RelatedPerson](relatedperson.html): The patient this related person is related to
2882* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
2883* [ResearchSubject](researchsubject.html): Who or what is part of study
2884* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2885* [ServiceRequest](servicerequest.html): Search by subject - a patient
2886* [Specimen](specimen.html): The patient the specimen comes from
2887* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2888* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
2889* [Task](task.html): Search by patient
2890* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2891</b><br>
2892   * Type: <b>reference</b><br>
2893   * 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>
2894   * </p>
2895   */
2896  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
2897
2898/**
2899   * Constant for fluent queries to be used to add include statements. Specifies
2900   * the path value of "<b>VisionPrescription:patient</b>".
2901   */
2902  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("VisionPrescription:patient").toLocked();
2903
2904
2905}
2906