001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Tue, Dec 28, 2021 07:16+1100 for FHIR v5.0.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * Prospective warnings of potential issues when providing care to the patient.
052 */
053@ResourceDef(name="Flag", profile="http://hl7.org/fhir/StructureDefinition/Flag")
054public class Flag extends DomainResource {
055
056    public enum FlagStatus {
057        /**
058         * A current flag that should be displayed to a user. A system may use the category to determine which user roles should view the flag.
059         */
060        ACTIVE, 
061        /**
062         * The flag no longer needs to be displayed.
063         */
064        INACTIVE, 
065        /**
066         * The flag was added in error and should no longer be displayed.
067         */
068        ENTEREDINERROR, 
069        /**
070         * added to help the parsers with the generic types
071         */
072        NULL;
073        public static FlagStatus fromCode(String codeString) throws FHIRException {
074            if (codeString == null || "".equals(codeString))
075                return null;
076        if ("active".equals(codeString))
077          return ACTIVE;
078        if ("inactive".equals(codeString))
079          return INACTIVE;
080        if ("entered-in-error".equals(codeString))
081          return ENTEREDINERROR;
082        if (Configuration.isAcceptInvalidEnums())
083          return null;
084        else
085          throw new FHIRException("Unknown FlagStatus code '"+codeString+"'");
086        }
087        public String toCode() {
088          switch (this) {
089            case ACTIVE: return "active";
090            case INACTIVE: return "inactive";
091            case ENTEREDINERROR: return "entered-in-error";
092            default: return "?";
093          }
094        }
095        public String getSystem() {
096          switch (this) {
097            case ACTIVE: return "http://hl7.org/fhir/flag-status";
098            case INACTIVE: return "http://hl7.org/fhir/flag-status";
099            case ENTEREDINERROR: return "http://hl7.org/fhir/flag-status";
100            default: return "?";
101          }
102        }
103        public String getDefinition() {
104          switch (this) {
105            case ACTIVE: return "A current flag that should be displayed to a user. A system may use the category to determine which user roles should view the flag.";
106            case INACTIVE: return "The flag no longer needs to be displayed.";
107            case ENTEREDINERROR: return "The flag was added in error and should no longer be displayed.";
108            default: return "?";
109          }
110        }
111        public String getDisplay() {
112          switch (this) {
113            case ACTIVE: return "Active";
114            case INACTIVE: return "Inactive";
115            case ENTEREDINERROR: return "Entered in Error";
116            default: return "?";
117          }
118        }
119    }
120
121  public static class FlagStatusEnumFactory implements EnumFactory<FlagStatus> {
122    public FlagStatus fromCode(String codeString) throws IllegalArgumentException {
123      if (codeString == null || "".equals(codeString))
124            if (codeString == null || "".equals(codeString))
125                return null;
126        if ("active".equals(codeString))
127          return FlagStatus.ACTIVE;
128        if ("inactive".equals(codeString))
129          return FlagStatus.INACTIVE;
130        if ("entered-in-error".equals(codeString))
131          return FlagStatus.ENTEREDINERROR;
132        throw new IllegalArgumentException("Unknown FlagStatus code '"+codeString+"'");
133        }
134        public Enumeration<FlagStatus> fromType(Base code) throws FHIRException {
135          if (code == null)
136            return null;
137          if (code.isEmpty())
138            return new Enumeration<FlagStatus>(this);
139          String codeString = ((PrimitiveType) code).asStringValue();
140          if (codeString == null || "".equals(codeString))
141            return null;
142        if ("active".equals(codeString))
143          return new Enumeration<FlagStatus>(this, FlagStatus.ACTIVE);
144        if ("inactive".equals(codeString))
145          return new Enumeration<FlagStatus>(this, FlagStatus.INACTIVE);
146        if ("entered-in-error".equals(codeString))
147          return new Enumeration<FlagStatus>(this, FlagStatus.ENTEREDINERROR);
148        throw new FHIRException("Unknown FlagStatus code '"+codeString+"'");
149        }
150    public String toCode(FlagStatus code) {
151      if (code == FlagStatus.ACTIVE)
152        return "active";
153      if (code == FlagStatus.INACTIVE)
154        return "inactive";
155      if (code == FlagStatus.ENTEREDINERROR)
156        return "entered-in-error";
157      return "?";
158      }
159    public String toSystem(FlagStatus code) {
160      return code.getSystem();
161      }
162    }
163
164    /**
165     * Business identifiers assigned to this flag by the performer or other systems which remain constant as the resource is updated and propagates from server to server.
166     */
167    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
168    @Description(shortDefinition="Business identifier", formalDefinition="Business identifiers assigned to this flag by the performer or other systems which remain constant as the resource is updated and propagates from server to server." )
169    protected List<Identifier> identifier;
170
171    /**
172     * Supports basic workflow.
173     */
174    @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
175    @Description(shortDefinition="active | inactive | entered-in-error", formalDefinition="Supports basic workflow." )
176    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/flag-status")
177    protected Enumeration<FlagStatus> status;
178
179    /**
180     * Allows a flag to be divided into different categories like clinical, administrative etc. Intended to be used as a means of filtering which flags are displayed to particular user or in a given context.
181     */
182    @Child(name = "category", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
183    @Description(shortDefinition="Clinical, administrative, etc.", formalDefinition="Allows a flag to be divided into different categories like clinical, administrative etc. Intended to be used as a means of filtering which flags are displayed to particular user or in a given context." )
184    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/flag-category")
185    protected List<CodeableConcept> category;
186
187    /**
188     * The coded value or textual component of the flag to display to the user.
189     */
190    @Child(name = "code", type = {CodeableConcept.class}, order=3, min=1, max=1, modifier=false, summary=true)
191    @Description(shortDefinition="Coded or textual message to display to user", formalDefinition="The coded value or textual component of the flag to display to the user." )
192    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/flag-code")
193    protected CodeableConcept code;
194
195    /**
196     * The patient, location, group, organization, or practitioner etc. this is about record this flag is associated with.
197     */
198    @Child(name = "subject", type = {Patient.class, Location.class, Group.class, Organization.class, Practitioner.class, PractitionerRole.class, PlanDefinition.class, Medication.class, Procedure.class}, order=4, min=1, max=1, modifier=false, summary=true)
199    @Description(shortDefinition="Who/What is flag about?", formalDefinition="The patient, location, group, organization, or practitioner etc. this is about record this flag is associated with." )
200    protected Reference subject;
201
202    /**
203     * The period of time from the activation of the flag to inactivation of the flag. If the flag is active, the end of the period should be unspecified.
204     */
205    @Child(name = "period", type = {Period.class}, order=5, min=0, max=1, modifier=false, summary=true)
206    @Description(shortDefinition="Time period when flag is active", formalDefinition="The period of time from the activation of the flag to inactivation of the flag. If the flag is active, the end of the period should be unspecified." )
207    protected Period period;
208
209    /**
210     * This alert is only relevant during the encounter.
211     */
212    @Child(name = "encounter", type = {Encounter.class}, order=6, min=0, max=1, modifier=false, summary=true)
213    @Description(shortDefinition="Alert relevant during encounter", formalDefinition="This alert is only relevant during the encounter." )
214    protected Reference encounter;
215
216    /**
217     * The person, organization or device that created the flag.
218     */
219    @Child(name = "author", type = {Device.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class}, order=7, min=0, max=1, modifier=false, summary=true)
220    @Description(shortDefinition="Flag creator", formalDefinition="The person, organization or device that created the flag." )
221    protected Reference author;
222
223    private static final long serialVersionUID = -901823137L;
224
225  /**
226   * Constructor
227   */
228    public Flag() {
229      super();
230    }
231
232  /**
233   * Constructor
234   */
235    public Flag(FlagStatus status, CodeableConcept code, Reference subject) {
236      super();
237      this.setStatus(status);
238      this.setCode(code);
239      this.setSubject(subject);
240    }
241
242    /**
243     * @return {@link #identifier} (Business identifiers assigned to this flag by the performer or other systems which remain constant as the resource is updated and propagates from server to server.)
244     */
245    public List<Identifier> getIdentifier() { 
246      if (this.identifier == null)
247        this.identifier = new ArrayList<Identifier>();
248      return this.identifier;
249    }
250
251    /**
252     * @return Returns a reference to <code>this</code> for easy method chaining
253     */
254    public Flag setIdentifier(List<Identifier> theIdentifier) { 
255      this.identifier = theIdentifier;
256      return this;
257    }
258
259    public boolean hasIdentifier() { 
260      if (this.identifier == null)
261        return false;
262      for (Identifier item : this.identifier)
263        if (!item.isEmpty())
264          return true;
265      return false;
266    }
267
268    public Identifier addIdentifier() { //3
269      Identifier t = new Identifier();
270      if (this.identifier == null)
271        this.identifier = new ArrayList<Identifier>();
272      this.identifier.add(t);
273      return t;
274    }
275
276    public Flag addIdentifier(Identifier t) { //3
277      if (t == null)
278        return this;
279      if (this.identifier == null)
280        this.identifier = new ArrayList<Identifier>();
281      this.identifier.add(t);
282      return this;
283    }
284
285    /**
286     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
287     */
288    public Identifier getIdentifierFirstRep() { 
289      if (getIdentifier().isEmpty()) {
290        addIdentifier();
291      }
292      return getIdentifier().get(0);
293    }
294
295    /**
296     * @return {@link #status} (Supports basic workflow.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
297     */
298    public Enumeration<FlagStatus> getStatusElement() { 
299      if (this.status == null)
300        if (Configuration.errorOnAutoCreate())
301          throw new Error("Attempt to auto-create Flag.status");
302        else if (Configuration.doAutoCreate())
303          this.status = new Enumeration<FlagStatus>(new FlagStatusEnumFactory()); // bb
304      return this.status;
305    }
306
307    public boolean hasStatusElement() { 
308      return this.status != null && !this.status.isEmpty();
309    }
310
311    public boolean hasStatus() { 
312      return this.status != null && !this.status.isEmpty();
313    }
314
315    /**
316     * @param value {@link #status} (Supports basic workflow.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
317     */
318    public Flag setStatusElement(Enumeration<FlagStatus> value) { 
319      this.status = value;
320      return this;
321    }
322
323    /**
324     * @return Supports basic workflow.
325     */
326    public FlagStatus getStatus() { 
327      return this.status == null ? null : this.status.getValue();
328    }
329
330    /**
331     * @param value Supports basic workflow.
332     */
333    public Flag setStatus(FlagStatus value) { 
334        if (this.status == null)
335          this.status = new Enumeration<FlagStatus>(new FlagStatusEnumFactory());
336        this.status.setValue(value);
337      return this;
338    }
339
340    /**
341     * @return {@link #category} (Allows a flag to be divided into different categories like clinical, administrative etc. Intended to be used as a means of filtering which flags are displayed to particular user or in a given context.)
342     */
343    public List<CodeableConcept> getCategory() { 
344      if (this.category == null)
345        this.category = new ArrayList<CodeableConcept>();
346      return this.category;
347    }
348
349    /**
350     * @return Returns a reference to <code>this</code> for easy method chaining
351     */
352    public Flag setCategory(List<CodeableConcept> theCategory) { 
353      this.category = theCategory;
354      return this;
355    }
356
357    public boolean hasCategory() { 
358      if (this.category == null)
359        return false;
360      for (CodeableConcept item : this.category)
361        if (!item.isEmpty())
362          return true;
363      return false;
364    }
365
366    public CodeableConcept addCategory() { //3
367      CodeableConcept t = new CodeableConcept();
368      if (this.category == null)
369        this.category = new ArrayList<CodeableConcept>();
370      this.category.add(t);
371      return t;
372    }
373
374    public Flag addCategory(CodeableConcept t) { //3
375      if (t == null)
376        return this;
377      if (this.category == null)
378        this.category = new ArrayList<CodeableConcept>();
379      this.category.add(t);
380      return this;
381    }
382
383    /**
384     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
385     */
386    public CodeableConcept getCategoryFirstRep() { 
387      if (getCategory().isEmpty()) {
388        addCategory();
389      }
390      return getCategory().get(0);
391    }
392
393    /**
394     * @return {@link #code} (The coded value or textual component of the flag to display to the user.)
395     */
396    public CodeableConcept getCode() { 
397      if (this.code == null)
398        if (Configuration.errorOnAutoCreate())
399          throw new Error("Attempt to auto-create Flag.code");
400        else if (Configuration.doAutoCreate())
401          this.code = new CodeableConcept(); // cc
402      return this.code;
403    }
404
405    public boolean hasCode() { 
406      return this.code != null && !this.code.isEmpty();
407    }
408
409    /**
410     * @param value {@link #code} (The coded value or textual component of the flag to display to the user.)
411     */
412    public Flag setCode(CodeableConcept value) { 
413      this.code = value;
414      return this;
415    }
416
417    /**
418     * @return {@link #subject} (The patient, location, group, organization, or practitioner etc. this is about record this flag is associated with.)
419     */
420    public Reference getSubject() { 
421      if (this.subject == null)
422        if (Configuration.errorOnAutoCreate())
423          throw new Error("Attempt to auto-create Flag.subject");
424        else if (Configuration.doAutoCreate())
425          this.subject = new Reference(); // cc
426      return this.subject;
427    }
428
429    public boolean hasSubject() { 
430      return this.subject != null && !this.subject.isEmpty();
431    }
432
433    /**
434     * @param value {@link #subject} (The patient, location, group, organization, or practitioner etc. this is about record this flag is associated with.)
435     */
436    public Flag setSubject(Reference value) { 
437      this.subject = value;
438      return this;
439    }
440
441    /**
442     * @return {@link #period} (The period of time from the activation of the flag to inactivation of the flag. If the flag is active, the end of the period should be unspecified.)
443     */
444    public Period getPeriod() { 
445      if (this.period == null)
446        if (Configuration.errorOnAutoCreate())
447          throw new Error("Attempt to auto-create Flag.period");
448        else if (Configuration.doAutoCreate())
449          this.period = new Period(); // cc
450      return this.period;
451    }
452
453    public boolean hasPeriod() { 
454      return this.period != null && !this.period.isEmpty();
455    }
456
457    /**
458     * @param value {@link #period} (The period of time from the activation of the flag to inactivation of the flag. If the flag is active, the end of the period should be unspecified.)
459     */
460    public Flag setPeriod(Period value) { 
461      this.period = value;
462      return this;
463    }
464
465    /**
466     * @return {@link #encounter} (This alert is only relevant during the encounter.)
467     */
468    public Reference getEncounter() { 
469      if (this.encounter == null)
470        if (Configuration.errorOnAutoCreate())
471          throw new Error("Attempt to auto-create Flag.encounter");
472        else if (Configuration.doAutoCreate())
473          this.encounter = new Reference(); // cc
474      return this.encounter;
475    }
476
477    public boolean hasEncounter() { 
478      return this.encounter != null && !this.encounter.isEmpty();
479    }
480
481    /**
482     * @param value {@link #encounter} (This alert is only relevant during the encounter.)
483     */
484    public Flag setEncounter(Reference value) { 
485      this.encounter = value;
486      return this;
487    }
488
489    /**
490     * @return {@link #author} (The person, organization or device that created the flag.)
491     */
492    public Reference getAuthor() { 
493      if (this.author == null)
494        if (Configuration.errorOnAutoCreate())
495          throw new Error("Attempt to auto-create Flag.author");
496        else if (Configuration.doAutoCreate())
497          this.author = new Reference(); // cc
498      return this.author;
499    }
500
501    public boolean hasAuthor() { 
502      return this.author != null && !this.author.isEmpty();
503    }
504
505    /**
506     * @param value {@link #author} (The person, organization or device that created the flag.)
507     */
508    public Flag setAuthor(Reference value) { 
509      this.author = value;
510      return this;
511    }
512
513      protected void listChildren(List<Property> children) {
514        super.listChildren(children);
515        children.add(new Property("identifier", "Identifier", "Business identifiers assigned to this flag by the performer or other systems which remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier));
516        children.add(new Property("status", "code", "Supports basic workflow.", 0, 1, status));
517        children.add(new Property("category", "CodeableConcept", "Allows a flag to be divided into different categories like clinical, administrative etc. Intended to be used as a means of filtering which flags are displayed to particular user or in a given context.", 0, java.lang.Integer.MAX_VALUE, category));
518        children.add(new Property("code", "CodeableConcept", "The coded value or textual component of the flag to display to the user.", 0, 1, code));
519        children.add(new Property("subject", "Reference(Patient|Location|Group|Organization|Practitioner|PractitionerRole|PlanDefinition|Medication|Procedure)", "The patient, location, group, organization, or practitioner etc. this is about record this flag is associated with.", 0, 1, subject));
520        children.add(new Property("period", "Period", "The period of time from the activation of the flag to inactivation of the flag. If the flag is active, the end of the period should be unspecified.", 0, 1, period));
521        children.add(new Property("encounter", "Reference(Encounter)", "This alert is only relevant during the encounter.", 0, 1, encounter));
522        children.add(new Property("author", "Reference(Device|Organization|Patient|Practitioner|PractitionerRole)", "The person, organization or device that created the flag.", 0, 1, author));
523      }
524
525      @Override
526      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
527        switch (_hash) {
528        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Business identifiers assigned to this flag by the performer or other systems which remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier);
529        case -892481550: /*status*/  return new Property("status", "code", "Supports basic workflow.", 0, 1, status);
530        case 50511102: /*category*/  return new Property("category", "CodeableConcept", "Allows a flag to be divided into different categories like clinical, administrative etc. Intended to be used as a means of filtering which flags are displayed to particular user or in a given context.", 0, java.lang.Integer.MAX_VALUE, category);
531        case 3059181: /*code*/  return new Property("code", "CodeableConcept", "The coded value or textual component of the flag to display to the user.", 0, 1, code);
532        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Location|Group|Organization|Practitioner|PractitionerRole|PlanDefinition|Medication|Procedure)", "The patient, location, group, organization, or practitioner etc. this is about record this flag is associated with.", 0, 1, subject);
533        case -991726143: /*period*/  return new Property("period", "Period", "The period of time from the activation of the flag to inactivation of the flag. If the flag is active, the end of the period should be unspecified.", 0, 1, period);
534        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "This alert is only relevant during the encounter.", 0, 1, encounter);
535        case -1406328437: /*author*/  return new Property("author", "Reference(Device|Organization|Patient|Practitioner|PractitionerRole)", "The person, organization or device that created the flag.", 0, 1, author);
536        default: return super.getNamedProperty(_hash, _name, _checkValid);
537        }
538
539      }
540
541      @Override
542      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
543        switch (hash) {
544        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
545        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<FlagStatus>
546        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept
547        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
548        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
549        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
550        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
551        case -1406328437: /*author*/ return this.author == null ? new Base[0] : new Base[] {this.author}; // Reference
552        default: return super.getProperty(hash, name, checkValid);
553        }
554
555      }
556
557      @Override
558      public Base setProperty(int hash, String name, Base value) throws FHIRException {
559        switch (hash) {
560        case -1618432855: // identifier
561          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
562          return value;
563        case -892481550: // status
564          value = new FlagStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
565          this.status = (Enumeration) value; // Enumeration<FlagStatus>
566          return value;
567        case 50511102: // category
568          this.getCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
569          return value;
570        case 3059181: // code
571          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
572          return value;
573        case -1867885268: // subject
574          this.subject = TypeConvertor.castToReference(value); // Reference
575          return value;
576        case -991726143: // period
577          this.period = TypeConvertor.castToPeriod(value); // Period
578          return value;
579        case 1524132147: // encounter
580          this.encounter = TypeConvertor.castToReference(value); // Reference
581          return value;
582        case -1406328437: // author
583          this.author = TypeConvertor.castToReference(value); // Reference
584          return value;
585        default: return super.setProperty(hash, name, value);
586        }
587
588      }
589
590      @Override
591      public Base setProperty(String name, Base value) throws FHIRException {
592        if (name.equals("identifier")) {
593          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
594        } else if (name.equals("status")) {
595          value = new FlagStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
596          this.status = (Enumeration) value; // Enumeration<FlagStatus>
597        } else if (name.equals("category")) {
598          this.getCategory().add(TypeConvertor.castToCodeableConcept(value));
599        } else if (name.equals("code")) {
600          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
601        } else if (name.equals("subject")) {
602          this.subject = TypeConvertor.castToReference(value); // Reference
603        } else if (name.equals("period")) {
604          this.period = TypeConvertor.castToPeriod(value); // Period
605        } else if (name.equals("encounter")) {
606          this.encounter = TypeConvertor.castToReference(value); // Reference
607        } else if (name.equals("author")) {
608          this.author = TypeConvertor.castToReference(value); // Reference
609        } else
610          return super.setProperty(name, value);
611        return value;
612      }
613
614      @Override
615      public Base makeProperty(int hash, String name) throws FHIRException {
616        switch (hash) {
617        case -1618432855:  return addIdentifier(); 
618        case -892481550:  return getStatusElement();
619        case 50511102:  return addCategory(); 
620        case 3059181:  return getCode();
621        case -1867885268:  return getSubject();
622        case -991726143:  return getPeriod();
623        case 1524132147:  return getEncounter();
624        case -1406328437:  return getAuthor();
625        default: return super.makeProperty(hash, name);
626        }
627
628      }
629
630      @Override
631      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
632        switch (hash) {
633        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
634        case -892481550: /*status*/ return new String[] {"code"};
635        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
636        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
637        case -1867885268: /*subject*/ return new String[] {"Reference"};
638        case -991726143: /*period*/ return new String[] {"Period"};
639        case 1524132147: /*encounter*/ return new String[] {"Reference"};
640        case -1406328437: /*author*/ return new String[] {"Reference"};
641        default: return super.getTypesForProperty(hash, name);
642        }
643
644      }
645
646      @Override
647      public Base addChild(String name) throws FHIRException {
648        if (name.equals("identifier")) {
649          return addIdentifier();
650        }
651        else if (name.equals("status")) {
652          throw new FHIRException("Cannot call addChild on a primitive type Flag.status");
653        }
654        else if (name.equals("category")) {
655          return addCategory();
656        }
657        else if (name.equals("code")) {
658          this.code = new CodeableConcept();
659          return this.code;
660        }
661        else if (name.equals("subject")) {
662          this.subject = new Reference();
663          return this.subject;
664        }
665        else if (name.equals("period")) {
666          this.period = new Period();
667          return this.period;
668        }
669        else if (name.equals("encounter")) {
670          this.encounter = new Reference();
671          return this.encounter;
672        }
673        else if (name.equals("author")) {
674          this.author = new Reference();
675          return this.author;
676        }
677        else
678          return super.addChild(name);
679      }
680
681  public String fhirType() {
682    return "Flag";
683
684  }
685
686      public Flag copy() {
687        Flag dst = new Flag();
688        copyValues(dst);
689        return dst;
690      }
691
692      public void copyValues(Flag dst) {
693        super.copyValues(dst);
694        if (identifier != null) {
695          dst.identifier = new ArrayList<Identifier>();
696          for (Identifier i : identifier)
697            dst.identifier.add(i.copy());
698        };
699        dst.status = status == null ? null : status.copy();
700        if (category != null) {
701          dst.category = new ArrayList<CodeableConcept>();
702          for (CodeableConcept i : category)
703            dst.category.add(i.copy());
704        };
705        dst.code = code == null ? null : code.copy();
706        dst.subject = subject == null ? null : subject.copy();
707        dst.period = period == null ? null : period.copy();
708        dst.encounter = encounter == null ? null : encounter.copy();
709        dst.author = author == null ? null : author.copy();
710      }
711
712      protected Flag typedCopy() {
713        return copy();
714      }
715
716      @Override
717      public boolean equalsDeep(Base other_) {
718        if (!super.equalsDeep(other_))
719          return false;
720        if (!(other_ instanceof Flag))
721          return false;
722        Flag o = (Flag) other_;
723        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(category, o.category, true)
724           && compareDeep(code, o.code, true) && compareDeep(subject, o.subject, true) && compareDeep(period, o.period, true)
725           && compareDeep(encounter, o.encounter, true) && compareDeep(author, o.author, true);
726      }
727
728      @Override
729      public boolean equalsShallow(Base other_) {
730        if (!super.equalsShallow(other_))
731          return false;
732        if (!(other_ instanceof Flag))
733          return false;
734        Flag o = (Flag) other_;
735        return compareValues(status, o.status, true);
736      }
737
738      public boolean isEmpty() {
739        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, category
740          , code, subject, period, encounter, author);
741      }
742
743  @Override
744  public ResourceType getResourceType() {
745    return ResourceType.Flag;
746   }
747
748 /**
749   * Search parameter: <b>author</b>
750   * <p>
751   * Description: <b>Flag creator</b><br>
752   * Type: <b>reference</b><br>
753   * Path: <b>Flag.author</b><br>
754   * </p>
755   */
756  @SearchParamDefinition(name="author", path="Flag.author", description="Flag creator", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={Device.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class } )
757  public static final String SP_AUTHOR = "author";
758 /**
759   * <b>Fluent Client</b> search parameter constant for <b>author</b>
760   * <p>
761   * Description: <b>Flag creator</b><br>
762   * Type: <b>reference</b><br>
763   * Path: <b>Flag.author</b><br>
764   * </p>
765   */
766  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam AUTHOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_AUTHOR);
767
768/**
769   * Constant for fluent queries to be used to add include statements. Specifies
770   * the path value of "<b>Flag:author</b>".
771   */
772  public static final ca.uhn.fhir.model.api.Include INCLUDE_AUTHOR = new ca.uhn.fhir.model.api.Include("Flag:author").toLocked();
773
774 /**
775   * Search parameter: <b>identifier</b>
776   * <p>
777   * Description: <b>Business identifier</b><br>
778   * Type: <b>token</b><br>
779   * Path: <b>Flag.identifier</b><br>
780   * </p>
781   */
782  @SearchParamDefinition(name="identifier", path="Flag.identifier", description="Business identifier", type="token" )
783  public static final String SP_IDENTIFIER = "identifier";
784 /**
785   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
786   * <p>
787   * Description: <b>Business identifier</b><br>
788   * Type: <b>token</b><br>
789   * Path: <b>Flag.identifier</b><br>
790   * </p>
791   */
792  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
793
794 /**
795   * Search parameter: <b>status</b>
796   * <p>
797   * Description: <b>active | inactive | entered-in-error</b><br>
798   * Type: <b>token</b><br>
799   * Path: <b>Flag.status</b><br>
800   * </p>
801   */
802  @SearchParamDefinition(name="status", path="Flag.status", description="active | inactive | entered-in-error", type="token" )
803  public static final String SP_STATUS = "status";
804 /**
805   * <b>Fluent Client</b> search parameter constant for <b>status</b>
806   * <p>
807   * Description: <b>active | inactive | entered-in-error</b><br>
808   * Type: <b>token</b><br>
809   * Path: <b>Flag.status</b><br>
810   * </p>
811   */
812  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
813
814 /**
815   * Search parameter: <b>subject</b>
816   * <p>
817   * Description: <b>The identity of a subject to list flags for</b><br>
818   * Type: <b>reference</b><br>
819   * Path: <b>Flag.subject</b><br>
820   * </p>
821   */
822  @SearchParamDefinition(name="subject", path="Flag.subject", description="The identity of a subject to list flags for", type="reference", target={Group.class, Location.class, Medication.class, Organization.class, Patient.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class } )
823  public static final String SP_SUBJECT = "subject";
824 /**
825   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
826   * <p>
827   * Description: <b>The identity of a subject to list flags for</b><br>
828   * Type: <b>reference</b><br>
829   * Path: <b>Flag.subject</b><br>
830   * </p>
831   */
832  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
833
834/**
835   * Constant for fluent queries to be used to add include statements. Specifies
836   * the path value of "<b>Flag:subject</b>".
837   */
838  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("Flag:subject").toLocked();
839
840 /**
841   * Search parameter: <b>date</b>
842   * <p>
843   * Description: <b>Multiple Resources: 
844
845* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
846* [CarePlan](careplan.html): Time period plan covers
847* [CareTeam](careteam.html): A date within the coverage time period.
848* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
849* [Composition](composition.html): Composition editing time
850* [Consent](consent.html): When consent was agreed to
851* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
852* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
853* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
854* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
855* [Flag](flag.html): Time period when flag is active
856* [Immunization](immunization.html): Vaccination  (non)-Administration Date
857* [List](list.html): When the list was prepared
858* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period
859* [Procedure](procedure.html): When the procedure occurred or is occurring
860* [RiskAssessment](riskassessment.html): When was assessment made?
861* [SupplyRequest](supplyrequest.html): When the request was made
862</b><br>
863   * Type: <b>date</b><br>
864   * Path: <b>AllergyIntolerance.recordedDate | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence as dateTime) | List.date | Observation.effective | Procedure.occurrence | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn</b><br>
865   * </p>
866   */
867  @SearchParamDefinition(name="date", path="AllergyIntolerance.recordedDate | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence as dateTime) | List.date | Observation.effective | Procedure.occurrence | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded\r\n* [CarePlan](careplan.html): Time period plan covers\r\n* [CareTeam](careteam.html): A date within the coverage time period.\r\n* [ClinicalImpression](clinicalimpression.html): When the assessment was documented\r\n* [Composition](composition.html): Composition editing time\r\n* [Consent](consent.html): When consent was agreed to\r\n* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report\r\n* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted\r\n* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period\r\n* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated\r\n* [Flag](flag.html): Time period when flag is active\r\n* [Immunization](immunization.html): Vaccination  (non)-Administration Date\r\n* [List](list.html): When the list was prepared\r\n* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period\r\n* [Procedure](procedure.html): When the procedure occurred or is occurring\r\n* [RiskAssessment](riskassessment.html): When was assessment made?\r\n* [SupplyRequest](supplyrequest.html): When the request was made\r\n", type="date" )
868  public static final String SP_DATE = "date";
869 /**
870   * <b>Fluent Client</b> search parameter constant for <b>date</b>
871   * <p>
872   * Description: <b>Multiple Resources: 
873
874* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
875* [CarePlan](careplan.html): Time period plan covers
876* [CareTeam](careteam.html): A date within the coverage time period.
877* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
878* [Composition](composition.html): Composition editing time
879* [Consent](consent.html): When consent was agreed to
880* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
881* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
882* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
883* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
884* [Flag](flag.html): Time period when flag is active
885* [Immunization](immunization.html): Vaccination  (non)-Administration Date
886* [List](list.html): When the list was prepared
887* [Observation](observation.html): Obtained date/time. If the obtained element is a period, a date that falls in the period
888* [Procedure](procedure.html): When the procedure occurred or is occurring
889* [RiskAssessment](riskassessment.html): When was assessment made?
890* [SupplyRequest](supplyrequest.html): When the request was made
891</b><br>
892   * Type: <b>date</b><br>
893   * Path: <b>AllergyIntolerance.recordedDate | CarePlan.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.actualPeriod | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrence as dateTime) | List.date | Observation.effective | Procedure.occurrence | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn</b><br>
894   * </p>
895   */
896  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
897
898 /**
899   * Search parameter: <b>encounter</b>
900   * <p>
901   * Description: <b>Multiple Resources: 
902
903* [Composition](composition.html): Context of the Composition
904* [DeviceRequest](devicerequest.html): Encounter during which request was created
905* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
906* [DocumentReference](documentreference.html): Context of the document  content
907* [Flag](flag.html): Alert relevant during encounter
908* [List](list.html): Context in which list created
909* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
910* [Observation](observation.html): Encounter related to the observation
911* [Procedure](procedure.html): The Encounter during which this Procedure was created
912* [RiskAssessment](riskassessment.html): Where was assessment performed?
913* [ServiceRequest](servicerequest.html): An encounter in which this request is made
914* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
915</b><br>
916   * Type: <b>reference</b><br>
917   * Path: <b>Composition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | DocumentReference.encounter | Flag.encounter | List.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | RiskAssessment.encounter | ServiceRequest.encounter | VisionPrescription.encounter</b><br>
918   * </p>
919   */
920  @SearchParamDefinition(name="encounter", path="Composition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | DocumentReference.encounter | Flag.encounter | List.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | RiskAssessment.encounter | ServiceRequest.encounter | VisionPrescription.encounter", description="Multiple Resources: \r\n\r\n* [Composition](composition.html): Context of the Composition\r\n* [DeviceRequest](devicerequest.html): Encounter during which request was created\r\n* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made\r\n* [DocumentReference](documentreference.html): Context of the document  content\r\n* [Flag](flag.html): Alert relevant during encounter\r\n* [List](list.html): Context in which list created\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier\r\n* [Observation](observation.html): Encounter related to the observation\r\n* [Procedure](procedure.html): The Encounter during which this Procedure was created\r\n* [RiskAssessment](riskassessment.html): Where was assessment performed?\r\n* [ServiceRequest](servicerequest.html): An encounter in which this request is made\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier\r\n", type="reference", target={Encounter.class } )
921  public static final String SP_ENCOUNTER = "encounter";
922 /**
923   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
924   * <p>
925   * Description: <b>Multiple Resources: 
926
927* [Composition](composition.html): Context of the Composition
928* [DeviceRequest](devicerequest.html): Encounter during which request was created
929* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
930* [DocumentReference](documentreference.html): Context of the document  content
931* [Flag](flag.html): Alert relevant during encounter
932* [List](list.html): Context in which list created
933* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
934* [Observation](observation.html): Encounter related to the observation
935* [Procedure](procedure.html): The Encounter during which this Procedure was created
936* [RiskAssessment](riskassessment.html): Where was assessment performed?
937* [ServiceRequest](servicerequest.html): An encounter in which this request is made
938* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
939</b><br>
940   * Type: <b>reference</b><br>
941   * Path: <b>Composition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | DocumentReference.encounter | Flag.encounter | List.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | RiskAssessment.encounter | ServiceRequest.encounter | VisionPrescription.encounter</b><br>
942   * </p>
943   */
944  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
945
946/**
947   * Constant for fluent queries to be used to add include statements. Specifies
948   * the path value of "<b>Flag:encounter</b>".
949   */
950  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("Flag:encounter").toLocked();
951
952 /**
953   * Search parameter: <b>patient</b>
954   * <p>
955   * Description: <b>Multiple Resources: 
956
957* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
958* [CarePlan](careplan.html): Who the care plan is for
959* [CareTeam](careteam.html): Who care team is for
960* [ClinicalImpression](clinicalimpression.html): Patient assessed
961* [Composition](composition.html): Who and/or what the composition is about
962* [Condition](condition.html): Who has the condition?
963* [Consent](consent.html): Who the consent applies to
964* [DetectedIssue](detectedissue.html): Associated patient
965* [DeviceRequest](devicerequest.html): Individual the service is ordered for
966* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
967* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
968* [DocumentManifest](documentmanifest.html): The subject of the set of documents
969* [DocumentReference](documentreference.html): Who/what is the subject of the document
970* [Encounter](encounter.html): The patient present at the encounter
971* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
972* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
973* [Flag](flag.html): The identity of a subject to list flags for
974* [Goal](goal.html): Who this goal is intended for
975* [ImagingStudy](imagingstudy.html): Who the study is about
976* [Immunization](immunization.html): The patient for the vaccination record
977* [List](list.html): If all resources have the same subject
978* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
979* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
980* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
981* [MedicationUsage](medicationusage.html): Returns statements for a specific patient.
982* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
983* [Observation](observation.html): The subject that the observation is about (if patient)
984* [Procedure](procedure.html): Search by subject - a patient
985* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
986* [ServiceRequest](servicerequest.html): Search by subject - a patient
987* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
988* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
989</b><br>
990   * Type: <b>reference</b><br>
991   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationUsage.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
992   * </p>
993   */
994  @SearchParamDefinition(name="patient", path="AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationUsage.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ClinicalImpression](clinicalimpression.html): Patient assessed\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentManifest](documentmanifest.html): The subject of the set of documents\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient present at the encounter\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [List](list.html): If all resources have the same subject\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationUsage](medicationusage.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [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={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CapabilityStatement2.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, ClinicalUseIssue.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, ConceptMap2.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
995  public static final String SP_PATIENT = "patient";
996 /**
997   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
998   * <p>
999   * Description: <b>Multiple Resources: 
1000
1001* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
1002* [CarePlan](careplan.html): Who the care plan is for
1003* [CareTeam](careteam.html): Who care team is for
1004* [ClinicalImpression](clinicalimpression.html): Patient assessed
1005* [Composition](composition.html): Who and/or what the composition is about
1006* [Condition](condition.html): Who has the condition?
1007* [Consent](consent.html): Who the consent applies to
1008* [DetectedIssue](detectedissue.html): Associated patient
1009* [DeviceRequest](devicerequest.html): Individual the service is ordered for
1010* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
1011* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
1012* [DocumentManifest](documentmanifest.html): The subject of the set of documents
1013* [DocumentReference](documentreference.html): Who/what is the subject of the document
1014* [Encounter](encounter.html): The patient present at the encounter
1015* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
1016* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
1017* [Flag](flag.html): The identity of a subject to list flags for
1018* [Goal](goal.html): Who this goal is intended for
1019* [ImagingStudy](imagingstudy.html): Who the study is about
1020* [Immunization](immunization.html): The patient for the vaccination record
1021* [List](list.html): If all resources have the same subject
1022* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
1023* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
1024* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
1025* [MedicationUsage](medicationusage.html): Returns statements for a specific patient.
1026* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
1027* [Observation](observation.html): The subject that the observation is about (if patient)
1028* [Procedure](procedure.html): Search by subject - a patient
1029* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
1030* [ServiceRequest](servicerequest.html): Search by subject - a patient
1031* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
1032* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
1033</b><br>
1034   * Type: <b>reference</b><br>
1035   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationUsage.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
1036   * </p>
1037   */
1038  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1039
1040/**
1041   * Constant for fluent queries to be used to add include statements. Specifies
1042   * the path value of "<b>Flag:patient</b>".
1043   */
1044  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("Flag:patient").toLocked();
1045
1046
1047}
1048