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