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 reference to a document of any kind for any purpose. While the term ?document? implies a more narrow focus, for this resource this ?document? encompasses *any* serialized object with a mime-type, it includes formal patient-centric documents (CDA), clinical notes, scanned paper, non-patient specific documents like policy text, as well as a photo, video, or audio recording acquired or used in healthcare.  The DocumentReference resource provides metadata about the document so that the document can be discovered and managed.  The actual content may be inline base64 encoded data or provided by direct reference.
052 */
053@ResourceDef(name="DocumentReference", profile="http://hl7.org/fhir/StructureDefinition/DocumentReference")
054public class DocumentReference extends DomainResource {
055
056    public enum DocumentReferenceStatus {
057        /**
058         * This is the current reference for this document.
059         */
060        CURRENT, 
061        /**
062         * This reference has been superseded by another reference.
063         */
064        SUPERSEDED, 
065        /**
066         * This reference was created in error.
067         */
068        ENTEREDINERROR, 
069        /**
070         * added to help the parsers with the generic types
071         */
072        NULL;
073        public static DocumentReferenceStatus fromCode(String codeString) throws FHIRException {
074            if (codeString == null || "".equals(codeString))
075                return null;
076        if ("current".equals(codeString))
077          return CURRENT;
078        if ("superseded".equals(codeString))
079          return SUPERSEDED;
080        if ("entered-in-error".equals(codeString))
081          return ENTEREDINERROR;
082        if (Configuration.isAcceptInvalidEnums())
083          return null;
084        else
085          throw new FHIRException("Unknown DocumentReferenceStatus code '"+codeString+"'");
086        }
087        public String toCode() {
088          switch (this) {
089            case CURRENT: return "current";
090            case SUPERSEDED: return "superseded";
091            case ENTEREDINERROR: return "entered-in-error";
092            case NULL: return null;
093            default: return "?";
094          }
095        }
096        public String getSystem() {
097          switch (this) {
098            case CURRENT: return "http://hl7.org/fhir/document-reference-status";
099            case SUPERSEDED: return "http://hl7.org/fhir/document-reference-status";
100            case ENTEREDINERROR: return "http://hl7.org/fhir/document-reference-status";
101            case NULL: return null;
102            default: return "?";
103          }
104        }
105        public String getDefinition() {
106          switch (this) {
107            case CURRENT: return "This is the current reference for this document.";
108            case SUPERSEDED: return "This reference has been superseded by another reference.";
109            case ENTEREDINERROR: return "This reference was created in error.";
110            case NULL: return null;
111            default: return "?";
112          }
113        }
114        public String getDisplay() {
115          switch (this) {
116            case CURRENT: return "Current";
117            case SUPERSEDED: return "Superseded";
118            case ENTEREDINERROR: return "Entered in Error";
119            case NULL: return null;
120            default: return "?";
121          }
122        }
123    }
124
125  public static class DocumentReferenceStatusEnumFactory implements EnumFactory<DocumentReferenceStatus> {
126    public DocumentReferenceStatus fromCode(String codeString) throws IllegalArgumentException {
127      if (codeString == null || "".equals(codeString))
128            if (codeString == null || "".equals(codeString))
129                return null;
130        if ("current".equals(codeString))
131          return DocumentReferenceStatus.CURRENT;
132        if ("superseded".equals(codeString))
133          return DocumentReferenceStatus.SUPERSEDED;
134        if ("entered-in-error".equals(codeString))
135          return DocumentReferenceStatus.ENTEREDINERROR;
136        throw new IllegalArgumentException("Unknown DocumentReferenceStatus code '"+codeString+"'");
137        }
138        public Enumeration<DocumentReferenceStatus> fromType(PrimitiveType<?> code) throws FHIRException {
139          if (code == null)
140            return null;
141          if (code.isEmpty())
142            return new Enumeration<DocumentReferenceStatus>(this, DocumentReferenceStatus.NULL, code);
143          String codeString = ((PrimitiveType) code).asStringValue();
144          if (codeString == null || "".equals(codeString))
145            return new Enumeration<DocumentReferenceStatus>(this, DocumentReferenceStatus.NULL, code);
146        if ("current".equals(codeString))
147          return new Enumeration<DocumentReferenceStatus>(this, DocumentReferenceStatus.CURRENT, code);
148        if ("superseded".equals(codeString))
149          return new Enumeration<DocumentReferenceStatus>(this, DocumentReferenceStatus.SUPERSEDED, code);
150        if ("entered-in-error".equals(codeString))
151          return new Enumeration<DocumentReferenceStatus>(this, DocumentReferenceStatus.ENTEREDINERROR, code);
152        throw new FHIRException("Unknown DocumentReferenceStatus code '"+codeString+"'");
153        }
154    public String toCode(DocumentReferenceStatus code) {
155      if (code == DocumentReferenceStatus.CURRENT)
156        return "current";
157      if (code == DocumentReferenceStatus.SUPERSEDED)
158        return "superseded";
159      if (code == DocumentReferenceStatus.ENTEREDINERROR)
160        return "entered-in-error";
161      return "?";
162      }
163    public String toSystem(DocumentReferenceStatus code) {
164      return code.getSystem();
165      }
166    }
167
168    @Block()
169    public static class DocumentReferenceAttesterComponent extends BackboneElement implements IBaseBackboneElement {
170        /**
171         * The type of attestation the authenticator offers.
172         */
173        @Child(name = "mode", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
174        @Description(shortDefinition="personal | professional | legal | official", formalDefinition="The type of attestation the authenticator offers." )
175        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/composition-attestation-mode")
176        protected CodeableConcept mode;
177
178        /**
179         * When the document was attested by the party.
180         */
181        @Child(name = "time", type = {DateTimeType.class}, order=2, min=0, max=1, modifier=false, summary=false)
182        @Description(shortDefinition="When the document was attested", formalDefinition="When the document was attested by the party." )
183        protected DateTimeType time;
184
185        /**
186         * Who attested the document in the specified way.
187         */
188        @Child(name = "party", type = {Patient.class, RelatedPerson.class, Practitioner.class, PractitionerRole.class, Organization.class}, order=3, min=0, max=1, modifier=false, summary=false)
189        @Description(shortDefinition="Who attested the document", formalDefinition="Who attested the document in the specified way." )
190        protected Reference party;
191
192        private static final long serialVersionUID = 545132751L;
193
194    /**
195     * Constructor
196     */
197      public DocumentReferenceAttesterComponent() {
198        super();
199      }
200
201    /**
202     * Constructor
203     */
204      public DocumentReferenceAttesterComponent(CodeableConcept mode) {
205        super();
206        this.setMode(mode);
207      }
208
209        /**
210         * @return {@link #mode} (The type of attestation the authenticator offers.)
211         */
212        public CodeableConcept getMode() { 
213          if (this.mode == null)
214            if (Configuration.errorOnAutoCreate())
215              throw new Error("Attempt to auto-create DocumentReferenceAttesterComponent.mode");
216            else if (Configuration.doAutoCreate())
217              this.mode = new CodeableConcept(); // cc
218          return this.mode;
219        }
220
221        public boolean hasMode() { 
222          return this.mode != null && !this.mode.isEmpty();
223        }
224
225        /**
226         * @param value {@link #mode} (The type of attestation the authenticator offers.)
227         */
228        public DocumentReferenceAttesterComponent setMode(CodeableConcept value) { 
229          this.mode = value;
230          return this;
231        }
232
233        /**
234         * @return {@link #time} (When the document was attested by the party.). This is the underlying object with id, value and extensions. The accessor "getTime" gives direct access to the value
235         */
236        public DateTimeType getTimeElement() { 
237          if (this.time == null)
238            if (Configuration.errorOnAutoCreate())
239              throw new Error("Attempt to auto-create DocumentReferenceAttesterComponent.time");
240            else if (Configuration.doAutoCreate())
241              this.time = new DateTimeType(); // bb
242          return this.time;
243        }
244
245        public boolean hasTimeElement() { 
246          return this.time != null && !this.time.isEmpty();
247        }
248
249        public boolean hasTime() { 
250          return this.time != null && !this.time.isEmpty();
251        }
252
253        /**
254         * @param value {@link #time} (When the document was attested by the party.). This is the underlying object with id, value and extensions. The accessor "getTime" gives direct access to the value
255         */
256        public DocumentReferenceAttesterComponent setTimeElement(DateTimeType value) { 
257          this.time = value;
258          return this;
259        }
260
261        /**
262         * @return When the document was attested by the party.
263         */
264        public Date getTime() { 
265          return this.time == null ? null : this.time.getValue();
266        }
267
268        /**
269         * @param value When the document was attested by the party.
270         */
271        public DocumentReferenceAttesterComponent setTime(Date value) { 
272          if (value == null)
273            this.time = null;
274          else {
275            if (this.time == null)
276              this.time = new DateTimeType();
277            this.time.setValue(value);
278          }
279          return this;
280        }
281
282        /**
283         * @return {@link #party} (Who attested the document in the specified way.)
284         */
285        public Reference getParty() { 
286          if (this.party == null)
287            if (Configuration.errorOnAutoCreate())
288              throw new Error("Attempt to auto-create DocumentReferenceAttesterComponent.party");
289            else if (Configuration.doAutoCreate())
290              this.party = new Reference(); // cc
291          return this.party;
292        }
293
294        public boolean hasParty() { 
295          return this.party != null && !this.party.isEmpty();
296        }
297
298        /**
299         * @param value {@link #party} (Who attested the document in the specified way.)
300         */
301        public DocumentReferenceAttesterComponent setParty(Reference value) { 
302          this.party = value;
303          return this;
304        }
305
306        protected void listChildren(List<Property> children) {
307          super.listChildren(children);
308          children.add(new Property("mode", "CodeableConcept", "The type of attestation the authenticator offers.", 0, 1, mode));
309          children.add(new Property("time", "dateTime", "When the document was attested by the party.", 0, 1, time));
310          children.add(new Property("party", "Reference(Patient|RelatedPerson|Practitioner|PractitionerRole|Organization)", "Who attested the document in the specified way.", 0, 1, party));
311        }
312
313        @Override
314        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
315          switch (_hash) {
316          case 3357091: /*mode*/  return new Property("mode", "CodeableConcept", "The type of attestation the authenticator offers.", 0, 1, mode);
317          case 3560141: /*time*/  return new Property("time", "dateTime", "When the document was attested by the party.", 0, 1, time);
318          case 106437350: /*party*/  return new Property("party", "Reference(Patient|RelatedPerson|Practitioner|PractitionerRole|Organization)", "Who attested the document in the specified way.", 0, 1, party);
319          default: return super.getNamedProperty(_hash, _name, _checkValid);
320          }
321
322        }
323
324      @Override
325      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
326        switch (hash) {
327        case 3357091: /*mode*/ return this.mode == null ? new Base[0] : new Base[] {this.mode}; // CodeableConcept
328        case 3560141: /*time*/ return this.time == null ? new Base[0] : new Base[] {this.time}; // DateTimeType
329        case 106437350: /*party*/ return this.party == null ? new Base[0] : new Base[] {this.party}; // Reference
330        default: return super.getProperty(hash, name, checkValid);
331        }
332
333      }
334
335      @Override
336      public Base setProperty(int hash, String name, Base value) throws FHIRException {
337        switch (hash) {
338        case 3357091: // mode
339          this.mode = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
340          return value;
341        case 3560141: // time
342          this.time = TypeConvertor.castToDateTime(value); // DateTimeType
343          return value;
344        case 106437350: // party
345          this.party = TypeConvertor.castToReference(value); // Reference
346          return value;
347        default: return super.setProperty(hash, name, value);
348        }
349
350      }
351
352      @Override
353      public Base setProperty(String name, Base value) throws FHIRException {
354        if (name.equals("mode")) {
355          this.mode = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
356        } else if (name.equals("time")) {
357          this.time = TypeConvertor.castToDateTime(value); // DateTimeType
358        } else if (name.equals("party")) {
359          this.party = TypeConvertor.castToReference(value); // Reference
360        } else
361          return super.setProperty(name, value);
362        return value;
363      }
364
365  @Override
366  public void removeChild(String name, Base value) throws FHIRException {
367        if (name.equals("mode")) {
368          this.mode = null;
369        } else if (name.equals("time")) {
370          this.time = null;
371        } else if (name.equals("party")) {
372          this.party = null;
373        } else
374          super.removeChild(name, value);
375        
376      }
377
378      @Override
379      public Base makeProperty(int hash, String name) throws FHIRException {
380        switch (hash) {
381        case 3357091:  return getMode();
382        case 3560141:  return getTimeElement();
383        case 106437350:  return getParty();
384        default: return super.makeProperty(hash, name);
385        }
386
387      }
388
389      @Override
390      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
391        switch (hash) {
392        case 3357091: /*mode*/ return new String[] {"CodeableConcept"};
393        case 3560141: /*time*/ return new String[] {"dateTime"};
394        case 106437350: /*party*/ return new String[] {"Reference"};
395        default: return super.getTypesForProperty(hash, name);
396        }
397
398      }
399
400      @Override
401      public Base addChild(String name) throws FHIRException {
402        if (name.equals("mode")) {
403          this.mode = new CodeableConcept();
404          return this.mode;
405        }
406        else if (name.equals("time")) {
407          throw new FHIRException("Cannot call addChild on a singleton property DocumentReference.attester.time");
408        }
409        else if (name.equals("party")) {
410          this.party = new Reference();
411          return this.party;
412        }
413        else
414          return super.addChild(name);
415      }
416
417      public DocumentReferenceAttesterComponent copy() {
418        DocumentReferenceAttesterComponent dst = new DocumentReferenceAttesterComponent();
419        copyValues(dst);
420        return dst;
421      }
422
423      public void copyValues(DocumentReferenceAttesterComponent dst) {
424        super.copyValues(dst);
425        dst.mode = mode == null ? null : mode.copy();
426        dst.time = time == null ? null : time.copy();
427        dst.party = party == null ? null : party.copy();
428      }
429
430      @Override
431      public boolean equalsDeep(Base other_) {
432        if (!super.equalsDeep(other_))
433          return false;
434        if (!(other_ instanceof DocumentReferenceAttesterComponent))
435          return false;
436        DocumentReferenceAttesterComponent o = (DocumentReferenceAttesterComponent) other_;
437        return compareDeep(mode, o.mode, true) && compareDeep(time, o.time, true) && compareDeep(party, o.party, true)
438          ;
439      }
440
441      @Override
442      public boolean equalsShallow(Base other_) {
443        if (!super.equalsShallow(other_))
444          return false;
445        if (!(other_ instanceof DocumentReferenceAttesterComponent))
446          return false;
447        DocumentReferenceAttesterComponent o = (DocumentReferenceAttesterComponent) other_;
448        return compareValues(time, o.time, true);
449      }
450
451      public boolean isEmpty() {
452        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(mode, time, party);
453      }
454
455  public String fhirType() {
456    return "DocumentReference.attester";
457
458  }
459
460  }
461
462    @Block()
463    public static class DocumentReferenceRelatesToComponent extends BackboneElement implements IBaseBackboneElement {
464        /**
465         * The type of relationship that this document has with anther document.
466         */
467        @Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=true)
468        @Description(shortDefinition="The relationship type with another document", formalDefinition="The type of relationship that this document has with anther document." )
469        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/document-relationship-type")
470        protected CodeableConcept code;
471
472        /**
473         * The target document of this relationship.
474         */
475        @Child(name = "target", type = {DocumentReference.class}, order=2, min=1, max=1, modifier=false, summary=true)
476        @Description(shortDefinition="Target of the relationship", formalDefinition="The target document of this relationship." )
477        protected Reference target;
478
479        private static final long serialVersionUID = -372012026L;
480
481    /**
482     * Constructor
483     */
484      public DocumentReferenceRelatesToComponent() {
485        super();
486      }
487
488    /**
489     * Constructor
490     */
491      public DocumentReferenceRelatesToComponent(CodeableConcept code, Reference target) {
492        super();
493        this.setCode(code);
494        this.setTarget(target);
495      }
496
497        /**
498         * @return {@link #code} (The type of relationship that this document has with anther document.)
499         */
500        public CodeableConcept getCode() { 
501          if (this.code == null)
502            if (Configuration.errorOnAutoCreate())
503              throw new Error("Attempt to auto-create DocumentReferenceRelatesToComponent.code");
504            else if (Configuration.doAutoCreate())
505              this.code = new CodeableConcept(); // cc
506          return this.code;
507        }
508
509        public boolean hasCode() { 
510          return this.code != null && !this.code.isEmpty();
511        }
512
513        /**
514         * @param value {@link #code} (The type of relationship that this document has with anther document.)
515         */
516        public DocumentReferenceRelatesToComponent setCode(CodeableConcept value) { 
517          this.code = value;
518          return this;
519        }
520
521        /**
522         * @return {@link #target} (The target document of this relationship.)
523         */
524        public Reference getTarget() { 
525          if (this.target == null)
526            if (Configuration.errorOnAutoCreate())
527              throw new Error("Attempt to auto-create DocumentReferenceRelatesToComponent.target");
528            else if (Configuration.doAutoCreate())
529              this.target = new Reference(); // cc
530          return this.target;
531        }
532
533        public boolean hasTarget() { 
534          return this.target != null && !this.target.isEmpty();
535        }
536
537        /**
538         * @param value {@link #target} (The target document of this relationship.)
539         */
540        public DocumentReferenceRelatesToComponent setTarget(Reference value) { 
541          this.target = value;
542          return this;
543        }
544
545        protected void listChildren(List<Property> children) {
546          super.listChildren(children);
547          children.add(new Property("code", "CodeableConcept", "The type of relationship that this document has with anther document.", 0, 1, code));
548          children.add(new Property("target", "Reference(DocumentReference)", "The target document of this relationship.", 0, 1, target));
549        }
550
551        @Override
552        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
553          switch (_hash) {
554          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "The type of relationship that this document has with anther document.", 0, 1, code);
555          case -880905839: /*target*/  return new Property("target", "Reference(DocumentReference)", "The target document of this relationship.", 0, 1, target);
556          default: return super.getNamedProperty(_hash, _name, _checkValid);
557          }
558
559        }
560
561      @Override
562      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
563        switch (hash) {
564        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
565        case -880905839: /*target*/ return this.target == null ? new Base[0] : new Base[] {this.target}; // Reference
566        default: return super.getProperty(hash, name, checkValid);
567        }
568
569      }
570
571      @Override
572      public Base setProperty(int hash, String name, Base value) throws FHIRException {
573        switch (hash) {
574        case 3059181: // code
575          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
576          return value;
577        case -880905839: // target
578          this.target = TypeConvertor.castToReference(value); // Reference
579          return value;
580        default: return super.setProperty(hash, name, value);
581        }
582
583      }
584
585      @Override
586      public Base setProperty(String name, Base value) throws FHIRException {
587        if (name.equals("code")) {
588          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
589        } else if (name.equals("target")) {
590          this.target = TypeConvertor.castToReference(value); // Reference
591        } else
592          return super.setProperty(name, value);
593        return value;
594      }
595
596  @Override
597  public void removeChild(String name, Base value) throws FHIRException {
598        if (name.equals("code")) {
599          this.code = null;
600        } else if (name.equals("target")) {
601          this.target = null;
602        } else
603          super.removeChild(name, value);
604        
605      }
606
607      @Override
608      public Base makeProperty(int hash, String name) throws FHIRException {
609        switch (hash) {
610        case 3059181:  return getCode();
611        case -880905839:  return getTarget();
612        default: return super.makeProperty(hash, name);
613        }
614
615      }
616
617      @Override
618      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
619        switch (hash) {
620        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
621        case -880905839: /*target*/ return new String[] {"Reference"};
622        default: return super.getTypesForProperty(hash, name);
623        }
624
625      }
626
627      @Override
628      public Base addChild(String name) throws FHIRException {
629        if (name.equals("code")) {
630          this.code = new CodeableConcept();
631          return this.code;
632        }
633        else if (name.equals("target")) {
634          this.target = new Reference();
635          return this.target;
636        }
637        else
638          return super.addChild(name);
639      }
640
641      public DocumentReferenceRelatesToComponent copy() {
642        DocumentReferenceRelatesToComponent dst = new DocumentReferenceRelatesToComponent();
643        copyValues(dst);
644        return dst;
645      }
646
647      public void copyValues(DocumentReferenceRelatesToComponent dst) {
648        super.copyValues(dst);
649        dst.code = code == null ? null : code.copy();
650        dst.target = target == null ? null : target.copy();
651      }
652
653      @Override
654      public boolean equalsDeep(Base other_) {
655        if (!super.equalsDeep(other_))
656          return false;
657        if (!(other_ instanceof DocumentReferenceRelatesToComponent))
658          return false;
659        DocumentReferenceRelatesToComponent o = (DocumentReferenceRelatesToComponent) other_;
660        return compareDeep(code, o.code, true) && compareDeep(target, o.target, true);
661      }
662
663      @Override
664      public boolean equalsShallow(Base other_) {
665        if (!super.equalsShallow(other_))
666          return false;
667        if (!(other_ instanceof DocumentReferenceRelatesToComponent))
668          return false;
669        DocumentReferenceRelatesToComponent o = (DocumentReferenceRelatesToComponent) other_;
670        return true;
671      }
672
673      public boolean isEmpty() {
674        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, target);
675      }
676
677  public String fhirType() {
678    return "DocumentReference.relatesTo";
679
680  }
681
682  }
683
684    @Block()
685    public static class DocumentReferenceContentComponent extends BackboneElement implements IBaseBackboneElement {
686        /**
687         * The document or URL of the document along with critical metadata to prove content has integrity.
688         */
689        @Child(name = "attachment", type = {Attachment.class}, order=1, min=1, max=1, modifier=false, summary=true)
690        @Description(shortDefinition="Where to access the document", formalDefinition="The document or URL of the document along with critical metadata to prove content has integrity." )
691        protected Attachment attachment;
692
693        /**
694         * An identifier of the document constraints, encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType.
695         */
696        @Child(name = "profile", type = {}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
697        @Description(shortDefinition="Content profile rules for the document", formalDefinition="An identifier of the document constraints, encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType." )
698        protected List<DocumentReferenceContentProfileComponent> profile;
699
700        private static final long serialVersionUID = 174089424L;
701
702    /**
703     * Constructor
704     */
705      public DocumentReferenceContentComponent() {
706        super();
707      }
708
709    /**
710     * Constructor
711     */
712      public DocumentReferenceContentComponent(Attachment attachment) {
713        super();
714        this.setAttachment(attachment);
715      }
716
717        /**
718         * @return {@link #attachment} (The document or URL of the document along with critical metadata to prove content has integrity.)
719         */
720        public Attachment getAttachment() { 
721          if (this.attachment == null)
722            if (Configuration.errorOnAutoCreate())
723              throw new Error("Attempt to auto-create DocumentReferenceContentComponent.attachment");
724            else if (Configuration.doAutoCreate())
725              this.attachment = new Attachment(); // cc
726          return this.attachment;
727        }
728
729        public boolean hasAttachment() { 
730          return this.attachment != null && !this.attachment.isEmpty();
731        }
732
733        /**
734         * @param value {@link #attachment} (The document or URL of the document along with critical metadata to prove content has integrity.)
735         */
736        public DocumentReferenceContentComponent setAttachment(Attachment value) { 
737          this.attachment = value;
738          return this;
739        }
740
741        /**
742         * @return {@link #profile} (An identifier of the document constraints, encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType.)
743         */
744        public List<DocumentReferenceContentProfileComponent> getProfile() { 
745          if (this.profile == null)
746            this.profile = new ArrayList<DocumentReferenceContentProfileComponent>();
747          return this.profile;
748        }
749
750        /**
751         * @return Returns a reference to <code>this</code> for easy method chaining
752         */
753        public DocumentReferenceContentComponent setProfile(List<DocumentReferenceContentProfileComponent> theProfile) { 
754          this.profile = theProfile;
755          return this;
756        }
757
758        public boolean hasProfile() { 
759          if (this.profile == null)
760            return false;
761          for (DocumentReferenceContentProfileComponent item : this.profile)
762            if (!item.isEmpty())
763              return true;
764          return false;
765        }
766
767        public DocumentReferenceContentProfileComponent addProfile() { //3
768          DocumentReferenceContentProfileComponent t = new DocumentReferenceContentProfileComponent();
769          if (this.profile == null)
770            this.profile = new ArrayList<DocumentReferenceContentProfileComponent>();
771          this.profile.add(t);
772          return t;
773        }
774
775        public DocumentReferenceContentComponent addProfile(DocumentReferenceContentProfileComponent t) { //3
776          if (t == null)
777            return this;
778          if (this.profile == null)
779            this.profile = new ArrayList<DocumentReferenceContentProfileComponent>();
780          this.profile.add(t);
781          return this;
782        }
783
784        /**
785         * @return The first repetition of repeating field {@link #profile}, creating it if it does not already exist {3}
786         */
787        public DocumentReferenceContentProfileComponent getProfileFirstRep() { 
788          if (getProfile().isEmpty()) {
789            addProfile();
790          }
791          return getProfile().get(0);
792        }
793
794        protected void listChildren(List<Property> children) {
795          super.listChildren(children);
796          children.add(new Property("attachment", "Attachment", "The document or URL of the document along with critical metadata to prove content has integrity.", 0, 1, attachment));
797          children.add(new Property("profile", "", "An identifier of the document constraints, encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType.", 0, java.lang.Integer.MAX_VALUE, profile));
798        }
799
800        @Override
801        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
802          switch (_hash) {
803          case -1963501277: /*attachment*/  return new Property("attachment", "Attachment", "The document or URL of the document along with critical metadata to prove content has integrity.", 0, 1, attachment);
804          case -309425751: /*profile*/  return new Property("profile", "", "An identifier of the document constraints, encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType.", 0, java.lang.Integer.MAX_VALUE, profile);
805          default: return super.getNamedProperty(_hash, _name, _checkValid);
806          }
807
808        }
809
810      @Override
811      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
812        switch (hash) {
813        case -1963501277: /*attachment*/ return this.attachment == null ? new Base[0] : new Base[] {this.attachment}; // Attachment
814        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : this.profile.toArray(new Base[this.profile.size()]); // DocumentReferenceContentProfileComponent
815        default: return super.getProperty(hash, name, checkValid);
816        }
817
818      }
819
820      @Override
821      public Base setProperty(int hash, String name, Base value) throws FHIRException {
822        switch (hash) {
823        case -1963501277: // attachment
824          this.attachment = TypeConvertor.castToAttachment(value); // Attachment
825          return value;
826        case -309425751: // profile
827          this.getProfile().add((DocumentReferenceContentProfileComponent) value); // DocumentReferenceContentProfileComponent
828          return value;
829        default: return super.setProperty(hash, name, value);
830        }
831
832      }
833
834      @Override
835      public Base setProperty(String name, Base value) throws FHIRException {
836        if (name.equals("attachment")) {
837          this.attachment = TypeConvertor.castToAttachment(value); // Attachment
838        } else if (name.equals("profile")) {
839          this.getProfile().add((DocumentReferenceContentProfileComponent) value);
840        } else
841          return super.setProperty(name, value);
842        return value;
843      }
844
845  @Override
846  public void removeChild(String name, Base value) throws FHIRException {
847        if (name.equals("attachment")) {
848          this.attachment = null;
849        } else if (name.equals("profile")) {
850          this.getProfile().remove((DocumentReferenceContentProfileComponent) value);
851        } else
852          super.removeChild(name, value);
853        
854      }
855
856      @Override
857      public Base makeProperty(int hash, String name) throws FHIRException {
858        switch (hash) {
859        case -1963501277:  return getAttachment();
860        case -309425751:  return addProfile(); 
861        default: return super.makeProperty(hash, name);
862        }
863
864      }
865
866      @Override
867      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
868        switch (hash) {
869        case -1963501277: /*attachment*/ return new String[] {"Attachment"};
870        case -309425751: /*profile*/ return new String[] {};
871        default: return super.getTypesForProperty(hash, name);
872        }
873
874      }
875
876      @Override
877      public Base addChild(String name) throws FHIRException {
878        if (name.equals("attachment")) {
879          this.attachment = new Attachment();
880          return this.attachment;
881        }
882        else if (name.equals("profile")) {
883          return addProfile();
884        }
885        else
886          return super.addChild(name);
887      }
888
889      public DocumentReferenceContentComponent copy() {
890        DocumentReferenceContentComponent dst = new DocumentReferenceContentComponent();
891        copyValues(dst);
892        return dst;
893      }
894
895      public void copyValues(DocumentReferenceContentComponent dst) {
896        super.copyValues(dst);
897        dst.attachment = attachment == null ? null : attachment.copy();
898        if (profile != null) {
899          dst.profile = new ArrayList<DocumentReferenceContentProfileComponent>();
900          for (DocumentReferenceContentProfileComponent i : profile)
901            dst.profile.add(i.copy());
902        };
903      }
904
905      @Override
906      public boolean equalsDeep(Base other_) {
907        if (!super.equalsDeep(other_))
908          return false;
909        if (!(other_ instanceof DocumentReferenceContentComponent))
910          return false;
911        DocumentReferenceContentComponent o = (DocumentReferenceContentComponent) other_;
912        return compareDeep(attachment, o.attachment, true) && compareDeep(profile, o.profile, true);
913      }
914
915      @Override
916      public boolean equalsShallow(Base other_) {
917        if (!super.equalsShallow(other_))
918          return false;
919        if (!(other_ instanceof DocumentReferenceContentComponent))
920          return false;
921        DocumentReferenceContentComponent o = (DocumentReferenceContentComponent) other_;
922        return true;
923      }
924
925      public boolean isEmpty() {
926        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(attachment, profile);
927      }
928
929  public String fhirType() {
930    return "DocumentReference.content";
931
932  }
933
934  }
935
936    @Block()
937    public static class DocumentReferenceContentProfileComponent extends BackboneElement implements IBaseBackboneElement {
938        /**
939         * Code|uri|canonical.
940         */
941        @Child(name = "value", type = {Coding.class, UriType.class, CanonicalType.class}, order=1, min=1, max=1, modifier=false, summary=true)
942        @Description(shortDefinition="Code|uri|canonical", formalDefinition="Code|uri|canonical." )
943        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/v3-HL7FormatCodes")
944        protected DataType value;
945
946        private static final long serialVersionUID = -1135414639L;
947
948    /**
949     * Constructor
950     */
951      public DocumentReferenceContentProfileComponent() {
952        super();
953      }
954
955    /**
956     * Constructor
957     */
958      public DocumentReferenceContentProfileComponent(DataType value) {
959        super();
960        this.setValue(value);
961      }
962
963        /**
964         * @return {@link #value} (Code|uri|canonical.)
965         */
966        public DataType getValue() { 
967          return this.value;
968        }
969
970        /**
971         * @return {@link #value} (Code|uri|canonical.)
972         */
973        public Coding getValueCoding() throws FHIRException { 
974          if (this.value == null)
975            this.value = new Coding();
976          if (!(this.value instanceof Coding))
977            throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.value.getClass().getName()+" was encountered");
978          return (Coding) this.value;
979        }
980
981        public boolean hasValueCoding() { 
982          return this != null && this.value instanceof Coding;
983        }
984
985        /**
986         * @return {@link #value} (Code|uri|canonical.)
987         */
988        public UriType getValueUriType() throws FHIRException { 
989          if (this.value == null)
990            this.value = new UriType();
991          if (!(this.value instanceof UriType))
992            throw new FHIRException("Type mismatch: the type UriType was expected, but "+this.value.getClass().getName()+" was encountered");
993          return (UriType) this.value;
994        }
995
996        public boolean hasValueUriType() { 
997          return this != null && this.value instanceof UriType;
998        }
999
1000        /**
1001         * @return {@link #value} (Code|uri|canonical.)
1002         */
1003        public CanonicalType getValueCanonicalType() throws FHIRException { 
1004          if (this.value == null)
1005            this.value = new CanonicalType();
1006          if (!(this.value instanceof CanonicalType))
1007            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.value.getClass().getName()+" was encountered");
1008          return (CanonicalType) this.value;
1009        }
1010
1011        public boolean hasValueCanonicalType() { 
1012          return this != null && this.value instanceof CanonicalType;
1013        }
1014
1015        public boolean hasValue() { 
1016          return this.value != null && !this.value.isEmpty();
1017        }
1018
1019        /**
1020         * @param value {@link #value} (Code|uri|canonical.)
1021         */
1022        public DocumentReferenceContentProfileComponent setValue(DataType value) { 
1023          if (value != null && !(value instanceof Coding || value instanceof UriType || value instanceof CanonicalType))
1024            throw new FHIRException("Not the right type for DocumentReference.content.profile.value[x]: "+value.fhirType());
1025          this.value = value;
1026          return this;
1027        }
1028
1029        protected void listChildren(List<Property> children) {
1030          super.listChildren(children);
1031          children.add(new Property("value[x]", "Coding|uri|canonical", "Code|uri|canonical.", 0, 1, value));
1032        }
1033
1034        @Override
1035        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1036          switch (_hash) {
1037          case -1410166417: /*value[x]*/  return new Property("value[x]", "Coding|uri|canonical", "Code|uri|canonical.", 0, 1, value);
1038          case 111972721: /*value*/  return new Property("value[x]", "Coding|uri|canonical", "Code|uri|canonical.", 0, 1, value);
1039          case -1887705029: /*valueCoding*/  return new Property("value[x]", "Coding", "Code|uri|canonical.", 0, 1, value);
1040          case -1410172357: /*valueUri*/  return new Property("value[x]", "uri", "Code|uri|canonical.", 0, 1, value);
1041          case -786218365: /*valueCanonical*/  return new Property("value[x]", "canonical", "Code|uri|canonical.", 0, 1, value);
1042          default: return super.getNamedProperty(_hash, _name, _checkValid);
1043          }
1044
1045        }
1046
1047      @Override
1048      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1049        switch (hash) {
1050        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
1051        default: return super.getProperty(hash, name, checkValid);
1052        }
1053
1054      }
1055
1056      @Override
1057      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1058        switch (hash) {
1059        case 111972721: // value
1060          this.value = TypeConvertor.castToType(value); // DataType
1061          return value;
1062        default: return super.setProperty(hash, name, value);
1063        }
1064
1065      }
1066
1067      @Override
1068      public Base setProperty(String name, Base value) throws FHIRException {
1069        if (name.equals("value[x]")) {
1070          this.value = TypeConvertor.castToType(value); // DataType
1071        } else
1072          return super.setProperty(name, value);
1073        return value;
1074      }
1075
1076  @Override
1077  public void removeChild(String name, Base value) throws FHIRException {
1078        if (name.equals("value[x]")) {
1079          this.value = null;
1080        } else
1081          super.removeChild(name, value);
1082        
1083      }
1084
1085      @Override
1086      public Base makeProperty(int hash, String name) throws FHIRException {
1087        switch (hash) {
1088        case -1410166417:  return getValue();
1089        case 111972721:  return getValue();
1090        default: return super.makeProperty(hash, name);
1091        }
1092
1093      }
1094
1095      @Override
1096      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1097        switch (hash) {
1098        case 111972721: /*value*/ return new String[] {"Coding", "uri", "canonical"};
1099        default: return super.getTypesForProperty(hash, name);
1100        }
1101
1102      }
1103
1104      @Override
1105      public Base addChild(String name) throws FHIRException {
1106        if (name.equals("valueCoding")) {
1107          this.value = new Coding();
1108          return this.value;
1109        }
1110        else if (name.equals("valueUri")) {
1111          this.value = new UriType();
1112          return this.value;
1113        }
1114        else if (name.equals("valueCanonical")) {
1115          this.value = new CanonicalType();
1116          return this.value;
1117        }
1118        else
1119          return super.addChild(name);
1120      }
1121
1122      public DocumentReferenceContentProfileComponent copy() {
1123        DocumentReferenceContentProfileComponent dst = new DocumentReferenceContentProfileComponent();
1124        copyValues(dst);
1125        return dst;
1126      }
1127
1128      public void copyValues(DocumentReferenceContentProfileComponent dst) {
1129        super.copyValues(dst);
1130        dst.value = value == null ? null : value.copy();
1131      }
1132
1133      @Override
1134      public boolean equalsDeep(Base other_) {
1135        if (!super.equalsDeep(other_))
1136          return false;
1137        if (!(other_ instanceof DocumentReferenceContentProfileComponent))
1138          return false;
1139        DocumentReferenceContentProfileComponent o = (DocumentReferenceContentProfileComponent) other_;
1140        return compareDeep(value, o.value, true);
1141      }
1142
1143      @Override
1144      public boolean equalsShallow(Base other_) {
1145        if (!super.equalsShallow(other_))
1146          return false;
1147        if (!(other_ instanceof DocumentReferenceContentProfileComponent))
1148          return false;
1149        DocumentReferenceContentProfileComponent o = (DocumentReferenceContentProfileComponent) other_;
1150        return true;
1151      }
1152
1153      public boolean isEmpty() {
1154        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(value);
1155      }
1156
1157  public String fhirType() {
1158    return "DocumentReference.content.profile";
1159
1160  }
1161
1162  }
1163
1164    /**
1165     * Other business identifiers associated with the document, including version independent identifiers.
1166     */
1167    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1168    @Description(shortDefinition="Business identifiers for the document", formalDefinition="Other business identifiers associated with the document, including version independent identifiers." )
1169    protected List<Identifier> identifier;
1170
1171    /**
1172     * An explicitly assigned identifer of a variation of the content in the DocumentReference.
1173     */
1174    @Child(name = "version", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true)
1175    @Description(shortDefinition="An explicitly assigned identifer of a variation of the content in the DocumentReference", formalDefinition="An explicitly assigned identifer of a variation of the content in the DocumentReference." )
1176    protected StringType version;
1177
1178    /**
1179     * A procedure that is fulfilled in whole or in part by the creation of this media.
1180     */
1181    @Child(name = "basedOn", type = {Appointment.class, AppointmentResponse.class, CarePlan.class, Claim.class, CommunicationRequest.class, Contract.class, CoverageEligibilityRequest.class, DeviceRequest.class, EnrollmentRequest.class, ImmunizationRecommendation.class, MedicationRequest.class, NutritionOrder.class, RequestOrchestration.class, ServiceRequest.class, SupplyRequest.class, VisionPrescription.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1182    @Description(shortDefinition="Procedure that caused this media to be created", formalDefinition="A procedure that is fulfilled in whole or in part by the creation of this media." )
1183    protected List<Reference> basedOn;
1184
1185    /**
1186     * The status of this document reference.
1187     */
1188    @Child(name = "status", type = {CodeType.class}, order=3, min=1, max=1, modifier=true, summary=true)
1189    @Description(shortDefinition="current | superseded | entered-in-error", formalDefinition="The status of this document reference." )
1190    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/document-reference-status")
1191    protected Enumeration<DocumentReferenceStatus> status;
1192
1193    /**
1194     * The status of the underlying document.
1195     */
1196    @Child(name = "docStatus", type = {CodeType.class}, order=4, min=0, max=1, modifier=false, summary=true)
1197    @Description(shortDefinition="registered | partial | preliminary | final | amended | corrected | appended | cancelled | entered-in-error | deprecated | unknown", formalDefinition="The status of the underlying document." )
1198    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/composition-status")
1199    protected Enumeration<CompositionStatus> docStatus;
1200
1201    /**
1202     * Imaging modality used. This may include both acquisition and non-acquisition modalities.
1203     */
1204    @Child(name = "modality", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1205    @Description(shortDefinition="Imaging modality used", formalDefinition="Imaging modality used. This may include both acquisition and non-acquisition modalities." )
1206    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://dicom.nema.org/medical/dicom/current/output/chtml/part16/sect_CID_33.html")
1207    protected List<CodeableConcept> modality;
1208
1209    /**
1210     * Specifies the particular kind of document referenced  (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the document referenced.
1211     */
1212    @Child(name = "type", type = {CodeableConcept.class}, order=6, min=0, max=1, modifier=false, summary=true)
1213    @Description(shortDefinition="Kind of document (LOINC if possible)", formalDefinition="Specifies the particular kind of document referenced  (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the document referenced." )
1214    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/doc-typecodes")
1215    protected CodeableConcept type;
1216
1217    /**
1218     * A categorization for the type of document referenced - helps for indexing and searching. This may be implied by or derived from the code specified in the DocumentReference.type.
1219     */
1220    @Child(name = "category", type = {CodeableConcept.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1221    @Description(shortDefinition="Categorization of document", formalDefinition="A categorization for the type of document referenced - helps for indexing and searching. This may be implied by or derived from the code specified in the DocumentReference.type." )
1222    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/referenced-item-category")
1223    protected List<CodeableConcept> category;
1224
1225    /**
1226     * Who or what the document is about. The document can be about a person, (patient or healthcare practitioner), a device (e.g. a machine) or even a group of subjects (such as a document about a herd of farm animals, or a set of patients that share a common exposure).
1227     */
1228    @Child(name = "subject", type = {Reference.class}, order=8, min=0, max=1, modifier=false, summary=true)
1229    @Description(shortDefinition="Who/what is the subject of the document", formalDefinition="Who or what the document is about. The document can be about a person, (patient or healthcare practitioner), a device (e.g. a machine) or even a group of subjects (such as a document about a herd of farm animals, or a set of patients that share a common exposure)." )
1230    protected Reference subject;
1231
1232    /**
1233     * Describes the clinical encounter or type of care that the document content is associated with.
1234     */
1235    @Child(name = "context", type = {Appointment.class, Encounter.class, EpisodeOfCare.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1236    @Description(shortDefinition="Context of the document content", formalDefinition="Describes the clinical encounter or type of care that the document content is associated with." )
1237    protected List<Reference> context;
1238
1239    /**
1240     * This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the type Code, such as a "History and Physical Report" in which the procedure being documented is necessarily a "History and Physical" act.
1241     */
1242    @Child(name = "event", type = {CodeableReference.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1243    @Description(shortDefinition="Main clinical acts documented", formalDefinition="This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the type Code, such as a \"History and Physical Report\" in which the procedure being documented is necessarily a \"History and Physical\" act." )
1244    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/v3-ActCode")
1245    protected List<CodeableReference> event;
1246
1247    /**
1248     * The anatomic structures included in the document.
1249     */
1250    @Child(name = "bodySite", type = {CodeableReference.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1251    @Description(shortDefinition="Body part included", formalDefinition="The anatomic structures included in the document." )
1252    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/body-site")
1253    protected List<CodeableReference> bodySite;
1254
1255    /**
1256     * The kind of facility where the patient was seen.
1257     */
1258    @Child(name = "facilityType", type = {CodeableConcept.class}, order=12, min=0, max=1, modifier=false, summary=false)
1259    @Description(shortDefinition="Kind of facility where patient was seen", formalDefinition="The kind of facility where the patient was seen." )
1260    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/c80-facilitycodes")
1261    protected CodeableConcept facilityType;
1262
1263    /**
1264     * This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty.
1265     */
1266    @Child(name = "practiceSetting", type = {CodeableConcept.class}, order=13, min=0, max=1, modifier=false, summary=false)
1267    @Description(shortDefinition="Additional details about where the content was created (e.g. clinical specialty)", formalDefinition="This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty." )
1268    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/c80-practice-codes")
1269    protected CodeableConcept practiceSetting;
1270
1271    /**
1272     * The time period over which the service that is described by the document was provided.
1273     */
1274    @Child(name = "period", type = {Period.class}, order=14, min=0, max=1, modifier=false, summary=true)
1275    @Description(shortDefinition="Time of service that is being documented", formalDefinition="The time period over which the service that is described by the document was provided." )
1276    protected Period period;
1277
1278    /**
1279     * When the document reference was created.
1280     */
1281    @Child(name = "date", type = {InstantType.class}, order=15, min=0, max=1, modifier=false, summary=true)
1282    @Description(shortDefinition="When this document reference was created", formalDefinition="When the document reference was created." )
1283    protected InstantType date;
1284
1285    /**
1286     * Identifies who is responsible for adding the information to the document.
1287     */
1288    @Child(name = "author", type = {Practitioner.class, PractitionerRole.class, Organization.class, Device.class, Patient.class, RelatedPerson.class, CareTeam.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1289    @Description(shortDefinition="Who and/or what authored the document", formalDefinition="Identifies who is responsible for adding the information to the document." )
1290    protected List<Reference> author;
1291
1292    /**
1293     * A participant who has authenticated the accuracy of the document.
1294     */
1295    @Child(name = "attester", type = {}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1296    @Description(shortDefinition="Attests to accuracy of the document", formalDefinition="A participant who has authenticated the accuracy of the document." )
1297    protected List<DocumentReferenceAttesterComponent> attester;
1298
1299    /**
1300     * Identifies the organization or group who is responsible for ongoing maintenance of and access to the document.
1301     */
1302    @Child(name = "custodian", type = {Organization.class}, order=18, min=0, max=1, modifier=false, summary=false)
1303    @Description(shortDefinition="Organization which maintains the document", formalDefinition="Identifies the organization or group who is responsible for ongoing maintenance of and access to the document." )
1304    protected Reference custodian;
1305
1306    /**
1307     * Relationships that this document has with other document references that already exist.
1308     */
1309    @Child(name = "relatesTo", type = {}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1310    @Description(shortDefinition="Relationships to other documents", formalDefinition="Relationships that this document has with other document references that already exist." )
1311    protected List<DocumentReferenceRelatesToComponent> relatesTo;
1312
1313    /**
1314     * Human-readable description of the source document.
1315     */
1316    @Child(name = "description", type = {MarkdownType.class}, order=20, min=0, max=1, modifier=false, summary=true)
1317    @Description(shortDefinition="Human-readable description", formalDefinition="Human-readable description of the source document." )
1318    protected MarkdownType description;
1319
1320    /**
1321     * A set of Security-Tag codes specifying the level of privacy/security of the Document found at DocumentReference.content.attachment.url. Note that DocumentReference.meta.security contains the security labels of the data elements in DocumentReference, while DocumentReference.securityLabel contains the security labels for the document the reference refers to. The distinction recognizes that the document may contain sensitive information, while the DocumentReference is metadata about the document and thus might not be as sensitive as the document. For example: a psychotherapy episode may contain highly sensitive information, while the metadata may simply indicate that some episode happened.
1322     */
1323    @Child(name = "securityLabel", type = {CodeableConcept.class}, order=21, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1324    @Description(shortDefinition="Document security-tags", formalDefinition="A set of Security-Tag codes specifying the level of privacy/security of the Document found at DocumentReference.content.attachment.url. Note that DocumentReference.meta.security contains the security labels of the data elements in DocumentReference, while DocumentReference.securityLabel contains the security labels for the document the reference refers to. The distinction recognizes that the document may contain sensitive information, while the DocumentReference is metadata about the document and thus might not be as sensitive as the document. For example: a psychotherapy episode may contain highly sensitive information, while the metadata may simply indicate that some episode happened." )
1325    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/security-label-examples")
1326    protected List<CodeableConcept> securityLabel;
1327
1328    /**
1329     * The document and format referenced.  If there are multiple content element repetitions, these must all represent the same document in different format, or attachment metadata.
1330     */
1331    @Child(name = "content", type = {}, order=22, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1332    @Description(shortDefinition="Document referenced", formalDefinition="The document and format referenced.  If there are multiple content element repetitions, these must all represent the same document in different format, or attachment metadata." )
1333    protected List<DocumentReferenceContentComponent> content;
1334
1335    private static final long serialVersionUID = -981268007L;
1336
1337  /**
1338   * Constructor
1339   */
1340    public DocumentReference() {
1341      super();
1342    }
1343
1344  /**
1345   * Constructor
1346   */
1347    public DocumentReference(DocumentReferenceStatus status, DocumentReferenceContentComponent content) {
1348      super();
1349      this.setStatus(status);
1350      this.addContent(content);
1351    }
1352
1353    /**
1354     * @return {@link #identifier} (Other business identifiers associated with the document, including version independent identifiers.)
1355     */
1356    public List<Identifier> getIdentifier() { 
1357      if (this.identifier == null)
1358        this.identifier = new ArrayList<Identifier>();
1359      return this.identifier;
1360    }
1361
1362    /**
1363     * @return Returns a reference to <code>this</code> for easy method chaining
1364     */
1365    public DocumentReference setIdentifier(List<Identifier> theIdentifier) { 
1366      this.identifier = theIdentifier;
1367      return this;
1368    }
1369
1370    public boolean hasIdentifier() { 
1371      if (this.identifier == null)
1372        return false;
1373      for (Identifier item : this.identifier)
1374        if (!item.isEmpty())
1375          return true;
1376      return false;
1377    }
1378
1379    public Identifier addIdentifier() { //3
1380      Identifier t = new Identifier();
1381      if (this.identifier == null)
1382        this.identifier = new ArrayList<Identifier>();
1383      this.identifier.add(t);
1384      return t;
1385    }
1386
1387    public DocumentReference addIdentifier(Identifier t) { //3
1388      if (t == null)
1389        return this;
1390      if (this.identifier == null)
1391        this.identifier = new ArrayList<Identifier>();
1392      this.identifier.add(t);
1393      return this;
1394    }
1395
1396    /**
1397     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
1398     */
1399    public Identifier getIdentifierFirstRep() { 
1400      if (getIdentifier().isEmpty()) {
1401        addIdentifier();
1402      }
1403      return getIdentifier().get(0);
1404    }
1405
1406    /**
1407     * @return {@link #version} (An explicitly assigned identifer of a variation of the content in the DocumentReference.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
1408     */
1409    public StringType getVersionElement() { 
1410      if (this.version == null)
1411        if (Configuration.errorOnAutoCreate())
1412          throw new Error("Attempt to auto-create DocumentReference.version");
1413        else if (Configuration.doAutoCreate())
1414          this.version = new StringType(); // bb
1415      return this.version;
1416    }
1417
1418    public boolean hasVersionElement() { 
1419      return this.version != null && !this.version.isEmpty();
1420    }
1421
1422    public boolean hasVersion() { 
1423      return this.version != null && !this.version.isEmpty();
1424    }
1425
1426    /**
1427     * @param value {@link #version} (An explicitly assigned identifer of a variation of the content in the DocumentReference.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
1428     */
1429    public DocumentReference setVersionElement(StringType value) { 
1430      this.version = value;
1431      return this;
1432    }
1433
1434    /**
1435     * @return An explicitly assigned identifer of a variation of the content in the DocumentReference.
1436     */
1437    public String getVersion() { 
1438      return this.version == null ? null : this.version.getValue();
1439    }
1440
1441    /**
1442     * @param value An explicitly assigned identifer of a variation of the content in the DocumentReference.
1443     */
1444    public DocumentReference setVersion(String value) { 
1445      if (Utilities.noString(value))
1446        this.version = null;
1447      else {
1448        if (this.version == null)
1449          this.version = new StringType();
1450        this.version.setValue(value);
1451      }
1452      return this;
1453    }
1454
1455    /**
1456     * @return {@link #basedOn} (A procedure that is fulfilled in whole or in part by the creation of this media.)
1457     */
1458    public List<Reference> getBasedOn() { 
1459      if (this.basedOn == null)
1460        this.basedOn = new ArrayList<Reference>();
1461      return this.basedOn;
1462    }
1463
1464    /**
1465     * @return Returns a reference to <code>this</code> for easy method chaining
1466     */
1467    public DocumentReference setBasedOn(List<Reference> theBasedOn) { 
1468      this.basedOn = theBasedOn;
1469      return this;
1470    }
1471
1472    public boolean hasBasedOn() { 
1473      if (this.basedOn == null)
1474        return false;
1475      for (Reference item : this.basedOn)
1476        if (!item.isEmpty())
1477          return true;
1478      return false;
1479    }
1480
1481    public Reference addBasedOn() { //3
1482      Reference t = new Reference();
1483      if (this.basedOn == null)
1484        this.basedOn = new ArrayList<Reference>();
1485      this.basedOn.add(t);
1486      return t;
1487    }
1488
1489    public DocumentReference addBasedOn(Reference t) { //3
1490      if (t == null)
1491        return this;
1492      if (this.basedOn == null)
1493        this.basedOn = new ArrayList<Reference>();
1494      this.basedOn.add(t);
1495      return this;
1496    }
1497
1498    /**
1499     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
1500     */
1501    public Reference getBasedOnFirstRep() { 
1502      if (getBasedOn().isEmpty()) {
1503        addBasedOn();
1504      }
1505      return getBasedOn().get(0);
1506    }
1507
1508    /**
1509     * @return {@link #status} (The status of this document reference.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1510     */
1511    public Enumeration<DocumentReferenceStatus> getStatusElement() { 
1512      if (this.status == null)
1513        if (Configuration.errorOnAutoCreate())
1514          throw new Error("Attempt to auto-create DocumentReference.status");
1515        else if (Configuration.doAutoCreate())
1516          this.status = new Enumeration<DocumentReferenceStatus>(new DocumentReferenceStatusEnumFactory()); // bb
1517      return this.status;
1518    }
1519
1520    public boolean hasStatusElement() { 
1521      return this.status != null && !this.status.isEmpty();
1522    }
1523
1524    public boolean hasStatus() { 
1525      return this.status != null && !this.status.isEmpty();
1526    }
1527
1528    /**
1529     * @param value {@link #status} (The status of this document reference.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1530     */
1531    public DocumentReference setStatusElement(Enumeration<DocumentReferenceStatus> value) { 
1532      this.status = value;
1533      return this;
1534    }
1535
1536    /**
1537     * @return The status of this document reference.
1538     */
1539    public DocumentReferenceStatus getStatus() { 
1540      return this.status == null ? null : this.status.getValue();
1541    }
1542
1543    /**
1544     * @param value The status of this document reference.
1545     */
1546    public DocumentReference setStatus(DocumentReferenceStatus value) { 
1547        if (this.status == null)
1548          this.status = new Enumeration<DocumentReferenceStatus>(new DocumentReferenceStatusEnumFactory());
1549        this.status.setValue(value);
1550      return this;
1551    }
1552
1553    /**
1554     * @return {@link #docStatus} (The status of the underlying document.). This is the underlying object with id, value and extensions. The accessor "getDocStatus" gives direct access to the value
1555     */
1556    public Enumeration<CompositionStatus> getDocStatusElement() { 
1557      if (this.docStatus == null)
1558        if (Configuration.errorOnAutoCreate())
1559          throw new Error("Attempt to auto-create DocumentReference.docStatus");
1560        else if (Configuration.doAutoCreate())
1561          this.docStatus = new Enumeration<CompositionStatus>(new CompositionStatusEnumFactory()); // bb
1562      return this.docStatus;
1563    }
1564
1565    public boolean hasDocStatusElement() { 
1566      return this.docStatus != null && !this.docStatus.isEmpty();
1567    }
1568
1569    public boolean hasDocStatus() { 
1570      return this.docStatus != null && !this.docStatus.isEmpty();
1571    }
1572
1573    /**
1574     * @param value {@link #docStatus} (The status of the underlying document.). This is the underlying object with id, value and extensions. The accessor "getDocStatus" gives direct access to the value
1575     */
1576    public DocumentReference setDocStatusElement(Enumeration<CompositionStatus> value) { 
1577      this.docStatus = value;
1578      return this;
1579    }
1580
1581    /**
1582     * @return The status of the underlying document.
1583     */
1584    public CompositionStatus getDocStatus() { 
1585      return this.docStatus == null ? null : this.docStatus.getValue();
1586    }
1587
1588    /**
1589     * @param value The status of the underlying document.
1590     */
1591    public DocumentReference setDocStatus(CompositionStatus value) { 
1592      if (value == null)
1593        this.docStatus = null;
1594      else {
1595        if (this.docStatus == null)
1596          this.docStatus = new Enumeration<CompositionStatus>(new CompositionStatusEnumFactory());
1597        this.docStatus.setValue(value);
1598      }
1599      return this;
1600    }
1601
1602    /**
1603     * @return {@link #modality} (Imaging modality used. This may include both acquisition and non-acquisition modalities.)
1604     */
1605    public List<CodeableConcept> getModality() { 
1606      if (this.modality == null)
1607        this.modality = new ArrayList<CodeableConcept>();
1608      return this.modality;
1609    }
1610
1611    /**
1612     * @return Returns a reference to <code>this</code> for easy method chaining
1613     */
1614    public DocumentReference setModality(List<CodeableConcept> theModality) { 
1615      this.modality = theModality;
1616      return this;
1617    }
1618
1619    public boolean hasModality() { 
1620      if (this.modality == null)
1621        return false;
1622      for (CodeableConcept item : this.modality)
1623        if (!item.isEmpty())
1624          return true;
1625      return false;
1626    }
1627
1628    public CodeableConcept addModality() { //3
1629      CodeableConcept t = new CodeableConcept();
1630      if (this.modality == null)
1631        this.modality = new ArrayList<CodeableConcept>();
1632      this.modality.add(t);
1633      return t;
1634    }
1635
1636    public DocumentReference addModality(CodeableConcept t) { //3
1637      if (t == null)
1638        return this;
1639      if (this.modality == null)
1640        this.modality = new ArrayList<CodeableConcept>();
1641      this.modality.add(t);
1642      return this;
1643    }
1644
1645    /**
1646     * @return The first repetition of repeating field {@link #modality}, creating it if it does not already exist {3}
1647     */
1648    public CodeableConcept getModalityFirstRep() { 
1649      if (getModality().isEmpty()) {
1650        addModality();
1651      }
1652      return getModality().get(0);
1653    }
1654
1655    /**
1656     * @return {@link #type} (Specifies the particular kind of document referenced  (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the document referenced.)
1657     */
1658    public CodeableConcept getType() { 
1659      if (this.type == null)
1660        if (Configuration.errorOnAutoCreate())
1661          throw new Error("Attempt to auto-create DocumentReference.type");
1662        else if (Configuration.doAutoCreate())
1663          this.type = new CodeableConcept(); // cc
1664      return this.type;
1665    }
1666
1667    public boolean hasType() { 
1668      return this.type != null && !this.type.isEmpty();
1669    }
1670
1671    /**
1672     * @param value {@link #type} (Specifies the particular kind of document referenced  (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the document referenced.)
1673     */
1674    public DocumentReference setType(CodeableConcept value) { 
1675      this.type = value;
1676      return this;
1677    }
1678
1679    /**
1680     * @return {@link #category} (A categorization for the type of document referenced - helps for indexing and searching. This may be implied by or derived from the code specified in the DocumentReference.type.)
1681     */
1682    public List<CodeableConcept> getCategory() { 
1683      if (this.category == null)
1684        this.category = new ArrayList<CodeableConcept>();
1685      return this.category;
1686    }
1687
1688    /**
1689     * @return Returns a reference to <code>this</code> for easy method chaining
1690     */
1691    public DocumentReference setCategory(List<CodeableConcept> theCategory) { 
1692      this.category = theCategory;
1693      return this;
1694    }
1695
1696    public boolean hasCategory() { 
1697      if (this.category == null)
1698        return false;
1699      for (CodeableConcept item : this.category)
1700        if (!item.isEmpty())
1701          return true;
1702      return false;
1703    }
1704
1705    public CodeableConcept addCategory() { //3
1706      CodeableConcept t = new CodeableConcept();
1707      if (this.category == null)
1708        this.category = new ArrayList<CodeableConcept>();
1709      this.category.add(t);
1710      return t;
1711    }
1712
1713    public DocumentReference addCategory(CodeableConcept t) { //3
1714      if (t == null)
1715        return this;
1716      if (this.category == null)
1717        this.category = new ArrayList<CodeableConcept>();
1718      this.category.add(t);
1719      return this;
1720    }
1721
1722    /**
1723     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
1724     */
1725    public CodeableConcept getCategoryFirstRep() { 
1726      if (getCategory().isEmpty()) {
1727        addCategory();
1728      }
1729      return getCategory().get(0);
1730    }
1731
1732    /**
1733     * @return {@link #subject} (Who or what the document is about. The document can be about a person, (patient or healthcare practitioner), a device (e.g. a machine) or even a group of subjects (such as a document about a herd of farm animals, or a set of patients that share a common exposure).)
1734     */
1735    public Reference getSubject() { 
1736      if (this.subject == null)
1737        if (Configuration.errorOnAutoCreate())
1738          throw new Error("Attempt to auto-create DocumentReference.subject");
1739        else if (Configuration.doAutoCreate())
1740          this.subject = new Reference(); // cc
1741      return this.subject;
1742    }
1743
1744    public boolean hasSubject() { 
1745      return this.subject != null && !this.subject.isEmpty();
1746    }
1747
1748    /**
1749     * @param value {@link #subject} (Who or what the document is about. The document can be about a person, (patient or healthcare practitioner), a device (e.g. a machine) or even a group of subjects (such as a document about a herd of farm animals, or a set of patients that share a common exposure).)
1750     */
1751    public DocumentReference setSubject(Reference value) { 
1752      this.subject = value;
1753      return this;
1754    }
1755
1756    /**
1757     * @return {@link #context} (Describes the clinical encounter or type of care that the document content is associated with.)
1758     */
1759    public List<Reference> getContext() { 
1760      if (this.context == null)
1761        this.context = new ArrayList<Reference>();
1762      return this.context;
1763    }
1764
1765    /**
1766     * @return Returns a reference to <code>this</code> for easy method chaining
1767     */
1768    public DocumentReference setContext(List<Reference> theContext) { 
1769      this.context = theContext;
1770      return this;
1771    }
1772
1773    public boolean hasContext() { 
1774      if (this.context == null)
1775        return false;
1776      for (Reference item : this.context)
1777        if (!item.isEmpty())
1778          return true;
1779      return false;
1780    }
1781
1782    public Reference addContext() { //3
1783      Reference t = new Reference();
1784      if (this.context == null)
1785        this.context = new ArrayList<Reference>();
1786      this.context.add(t);
1787      return t;
1788    }
1789
1790    public DocumentReference addContext(Reference t) { //3
1791      if (t == null)
1792        return this;
1793      if (this.context == null)
1794        this.context = new ArrayList<Reference>();
1795      this.context.add(t);
1796      return this;
1797    }
1798
1799    /**
1800     * @return The first repetition of repeating field {@link #context}, creating it if it does not already exist {3}
1801     */
1802    public Reference getContextFirstRep() { 
1803      if (getContext().isEmpty()) {
1804        addContext();
1805      }
1806      return getContext().get(0);
1807    }
1808
1809    /**
1810     * @return {@link #event} (This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the type Code, such as a "History and Physical Report" in which the procedure being documented is necessarily a "History and Physical" act.)
1811     */
1812    public List<CodeableReference> getEvent() { 
1813      if (this.event == null)
1814        this.event = new ArrayList<CodeableReference>();
1815      return this.event;
1816    }
1817
1818    /**
1819     * @return Returns a reference to <code>this</code> for easy method chaining
1820     */
1821    public DocumentReference setEvent(List<CodeableReference> theEvent) { 
1822      this.event = theEvent;
1823      return this;
1824    }
1825
1826    public boolean hasEvent() { 
1827      if (this.event == null)
1828        return false;
1829      for (CodeableReference item : this.event)
1830        if (!item.isEmpty())
1831          return true;
1832      return false;
1833    }
1834
1835    public CodeableReference addEvent() { //3
1836      CodeableReference t = new CodeableReference();
1837      if (this.event == null)
1838        this.event = new ArrayList<CodeableReference>();
1839      this.event.add(t);
1840      return t;
1841    }
1842
1843    public DocumentReference addEvent(CodeableReference t) { //3
1844      if (t == null)
1845        return this;
1846      if (this.event == null)
1847        this.event = new ArrayList<CodeableReference>();
1848      this.event.add(t);
1849      return this;
1850    }
1851
1852    /**
1853     * @return The first repetition of repeating field {@link #event}, creating it if it does not already exist {3}
1854     */
1855    public CodeableReference getEventFirstRep() { 
1856      if (getEvent().isEmpty()) {
1857        addEvent();
1858      }
1859      return getEvent().get(0);
1860    }
1861
1862    /**
1863     * @return {@link #bodySite} (The anatomic structures included in the document.)
1864     */
1865    public List<CodeableReference> getBodySite() { 
1866      if (this.bodySite == null)
1867        this.bodySite = new ArrayList<CodeableReference>();
1868      return this.bodySite;
1869    }
1870
1871    /**
1872     * @return Returns a reference to <code>this</code> for easy method chaining
1873     */
1874    public DocumentReference setBodySite(List<CodeableReference> theBodySite) { 
1875      this.bodySite = theBodySite;
1876      return this;
1877    }
1878
1879    public boolean hasBodySite() { 
1880      if (this.bodySite == null)
1881        return false;
1882      for (CodeableReference item : this.bodySite)
1883        if (!item.isEmpty())
1884          return true;
1885      return false;
1886    }
1887
1888    public CodeableReference addBodySite() { //3
1889      CodeableReference t = new CodeableReference();
1890      if (this.bodySite == null)
1891        this.bodySite = new ArrayList<CodeableReference>();
1892      this.bodySite.add(t);
1893      return t;
1894    }
1895
1896    public DocumentReference addBodySite(CodeableReference t) { //3
1897      if (t == null)
1898        return this;
1899      if (this.bodySite == null)
1900        this.bodySite = new ArrayList<CodeableReference>();
1901      this.bodySite.add(t);
1902      return this;
1903    }
1904
1905    /**
1906     * @return The first repetition of repeating field {@link #bodySite}, creating it if it does not already exist {3}
1907     */
1908    public CodeableReference getBodySiteFirstRep() { 
1909      if (getBodySite().isEmpty()) {
1910        addBodySite();
1911      }
1912      return getBodySite().get(0);
1913    }
1914
1915    /**
1916     * @return {@link #facilityType} (The kind of facility where the patient was seen.)
1917     */
1918    public CodeableConcept getFacilityType() { 
1919      if (this.facilityType == null)
1920        if (Configuration.errorOnAutoCreate())
1921          throw new Error("Attempt to auto-create DocumentReference.facilityType");
1922        else if (Configuration.doAutoCreate())
1923          this.facilityType = new CodeableConcept(); // cc
1924      return this.facilityType;
1925    }
1926
1927    public boolean hasFacilityType() { 
1928      return this.facilityType != null && !this.facilityType.isEmpty();
1929    }
1930
1931    /**
1932     * @param value {@link #facilityType} (The kind of facility where the patient was seen.)
1933     */
1934    public DocumentReference setFacilityType(CodeableConcept value) { 
1935      this.facilityType = value;
1936      return this;
1937    }
1938
1939    /**
1940     * @return {@link #practiceSetting} (This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty.)
1941     */
1942    public CodeableConcept getPracticeSetting() { 
1943      if (this.practiceSetting == null)
1944        if (Configuration.errorOnAutoCreate())
1945          throw new Error("Attempt to auto-create DocumentReference.practiceSetting");
1946        else if (Configuration.doAutoCreate())
1947          this.practiceSetting = new CodeableConcept(); // cc
1948      return this.practiceSetting;
1949    }
1950
1951    public boolean hasPracticeSetting() { 
1952      return this.practiceSetting != null && !this.practiceSetting.isEmpty();
1953    }
1954
1955    /**
1956     * @param value {@link #practiceSetting} (This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty.)
1957     */
1958    public DocumentReference setPracticeSetting(CodeableConcept value) { 
1959      this.practiceSetting = value;
1960      return this;
1961    }
1962
1963    /**
1964     * @return {@link #period} (The time period over which the service that is described by the document was provided.)
1965     */
1966    public Period getPeriod() { 
1967      if (this.period == null)
1968        if (Configuration.errorOnAutoCreate())
1969          throw new Error("Attempt to auto-create DocumentReference.period");
1970        else if (Configuration.doAutoCreate())
1971          this.period = new Period(); // cc
1972      return this.period;
1973    }
1974
1975    public boolean hasPeriod() { 
1976      return this.period != null && !this.period.isEmpty();
1977    }
1978
1979    /**
1980     * @param value {@link #period} (The time period over which the service that is described by the document was provided.)
1981     */
1982    public DocumentReference setPeriod(Period value) { 
1983      this.period = value;
1984      return this;
1985    }
1986
1987    /**
1988     * @return {@link #date} (When the document reference was created.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
1989     */
1990    public InstantType getDateElement() { 
1991      if (this.date == null)
1992        if (Configuration.errorOnAutoCreate())
1993          throw new Error("Attempt to auto-create DocumentReference.date");
1994        else if (Configuration.doAutoCreate())
1995          this.date = new InstantType(); // bb
1996      return this.date;
1997    }
1998
1999    public boolean hasDateElement() { 
2000      return this.date != null && !this.date.isEmpty();
2001    }
2002
2003    public boolean hasDate() { 
2004      return this.date != null && !this.date.isEmpty();
2005    }
2006
2007    /**
2008     * @param value {@link #date} (When the document reference was created.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
2009     */
2010    public DocumentReference setDateElement(InstantType value) { 
2011      this.date = value;
2012      return this;
2013    }
2014
2015    /**
2016     * @return When the document reference was created.
2017     */
2018    public Date getDate() { 
2019      return this.date == null ? null : this.date.getValue();
2020    }
2021
2022    /**
2023     * @param value When the document reference was created.
2024     */
2025    public DocumentReference setDate(Date value) { 
2026      if (value == null)
2027        this.date = null;
2028      else {
2029        if (this.date == null)
2030          this.date = new InstantType();
2031        this.date.setValue(value);
2032      }
2033      return this;
2034    }
2035
2036    /**
2037     * @return {@link #author} (Identifies who is responsible for adding the information to the document.)
2038     */
2039    public List<Reference> getAuthor() { 
2040      if (this.author == null)
2041        this.author = new ArrayList<Reference>();
2042      return this.author;
2043    }
2044
2045    /**
2046     * @return Returns a reference to <code>this</code> for easy method chaining
2047     */
2048    public DocumentReference setAuthor(List<Reference> theAuthor) { 
2049      this.author = theAuthor;
2050      return this;
2051    }
2052
2053    public boolean hasAuthor() { 
2054      if (this.author == null)
2055        return false;
2056      for (Reference item : this.author)
2057        if (!item.isEmpty())
2058          return true;
2059      return false;
2060    }
2061
2062    public Reference addAuthor() { //3
2063      Reference t = new Reference();
2064      if (this.author == null)
2065        this.author = new ArrayList<Reference>();
2066      this.author.add(t);
2067      return t;
2068    }
2069
2070    public DocumentReference addAuthor(Reference t) { //3
2071      if (t == null)
2072        return this;
2073      if (this.author == null)
2074        this.author = new ArrayList<Reference>();
2075      this.author.add(t);
2076      return this;
2077    }
2078
2079    /**
2080     * @return The first repetition of repeating field {@link #author}, creating it if it does not already exist {3}
2081     */
2082    public Reference getAuthorFirstRep() { 
2083      if (getAuthor().isEmpty()) {
2084        addAuthor();
2085      }
2086      return getAuthor().get(0);
2087    }
2088
2089    /**
2090     * @return {@link #attester} (A participant who has authenticated the accuracy of the document.)
2091     */
2092    public List<DocumentReferenceAttesterComponent> getAttester() { 
2093      if (this.attester == null)
2094        this.attester = new ArrayList<DocumentReferenceAttesterComponent>();
2095      return this.attester;
2096    }
2097
2098    /**
2099     * @return Returns a reference to <code>this</code> for easy method chaining
2100     */
2101    public DocumentReference setAttester(List<DocumentReferenceAttesterComponent> theAttester) { 
2102      this.attester = theAttester;
2103      return this;
2104    }
2105
2106    public boolean hasAttester() { 
2107      if (this.attester == null)
2108        return false;
2109      for (DocumentReferenceAttesterComponent item : this.attester)
2110        if (!item.isEmpty())
2111          return true;
2112      return false;
2113    }
2114
2115    public DocumentReferenceAttesterComponent addAttester() { //3
2116      DocumentReferenceAttesterComponent t = new DocumentReferenceAttesterComponent();
2117      if (this.attester == null)
2118        this.attester = new ArrayList<DocumentReferenceAttesterComponent>();
2119      this.attester.add(t);
2120      return t;
2121    }
2122
2123    public DocumentReference addAttester(DocumentReferenceAttesterComponent t) { //3
2124      if (t == null)
2125        return this;
2126      if (this.attester == null)
2127        this.attester = new ArrayList<DocumentReferenceAttesterComponent>();
2128      this.attester.add(t);
2129      return this;
2130    }
2131
2132    /**
2133     * @return The first repetition of repeating field {@link #attester}, creating it if it does not already exist {3}
2134     */
2135    public DocumentReferenceAttesterComponent getAttesterFirstRep() { 
2136      if (getAttester().isEmpty()) {
2137        addAttester();
2138      }
2139      return getAttester().get(0);
2140    }
2141
2142    /**
2143     * @return {@link #custodian} (Identifies the organization or group who is responsible for ongoing maintenance of and access to the document.)
2144     */
2145    public Reference getCustodian() { 
2146      if (this.custodian == null)
2147        if (Configuration.errorOnAutoCreate())
2148          throw new Error("Attempt to auto-create DocumentReference.custodian");
2149        else if (Configuration.doAutoCreate())
2150          this.custodian = new Reference(); // cc
2151      return this.custodian;
2152    }
2153
2154    public boolean hasCustodian() { 
2155      return this.custodian != null && !this.custodian.isEmpty();
2156    }
2157
2158    /**
2159     * @param value {@link #custodian} (Identifies the organization or group who is responsible for ongoing maintenance of and access to the document.)
2160     */
2161    public DocumentReference setCustodian(Reference value) { 
2162      this.custodian = value;
2163      return this;
2164    }
2165
2166    /**
2167     * @return {@link #relatesTo} (Relationships that this document has with other document references that already exist.)
2168     */
2169    public List<DocumentReferenceRelatesToComponent> getRelatesTo() { 
2170      if (this.relatesTo == null)
2171        this.relatesTo = new ArrayList<DocumentReferenceRelatesToComponent>();
2172      return this.relatesTo;
2173    }
2174
2175    /**
2176     * @return Returns a reference to <code>this</code> for easy method chaining
2177     */
2178    public DocumentReference setRelatesTo(List<DocumentReferenceRelatesToComponent> theRelatesTo) { 
2179      this.relatesTo = theRelatesTo;
2180      return this;
2181    }
2182
2183    public boolean hasRelatesTo() { 
2184      if (this.relatesTo == null)
2185        return false;
2186      for (DocumentReferenceRelatesToComponent item : this.relatesTo)
2187        if (!item.isEmpty())
2188          return true;
2189      return false;
2190    }
2191
2192    public DocumentReferenceRelatesToComponent addRelatesTo() { //3
2193      DocumentReferenceRelatesToComponent t = new DocumentReferenceRelatesToComponent();
2194      if (this.relatesTo == null)
2195        this.relatesTo = new ArrayList<DocumentReferenceRelatesToComponent>();
2196      this.relatesTo.add(t);
2197      return t;
2198    }
2199
2200    public DocumentReference addRelatesTo(DocumentReferenceRelatesToComponent t) { //3
2201      if (t == null)
2202        return this;
2203      if (this.relatesTo == null)
2204        this.relatesTo = new ArrayList<DocumentReferenceRelatesToComponent>();
2205      this.relatesTo.add(t);
2206      return this;
2207    }
2208
2209    /**
2210     * @return The first repetition of repeating field {@link #relatesTo}, creating it if it does not already exist {3}
2211     */
2212    public DocumentReferenceRelatesToComponent getRelatesToFirstRep() { 
2213      if (getRelatesTo().isEmpty()) {
2214        addRelatesTo();
2215      }
2216      return getRelatesTo().get(0);
2217    }
2218
2219    /**
2220     * @return {@link #description} (Human-readable description of the source document.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2221     */
2222    public MarkdownType getDescriptionElement() { 
2223      if (this.description == null)
2224        if (Configuration.errorOnAutoCreate())
2225          throw new Error("Attempt to auto-create DocumentReference.description");
2226        else if (Configuration.doAutoCreate())
2227          this.description = new MarkdownType(); // bb
2228      return this.description;
2229    }
2230
2231    public boolean hasDescriptionElement() { 
2232      return this.description != null && !this.description.isEmpty();
2233    }
2234
2235    public boolean hasDescription() { 
2236      return this.description != null && !this.description.isEmpty();
2237    }
2238
2239    /**
2240     * @param value {@link #description} (Human-readable description of the source document.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2241     */
2242    public DocumentReference setDescriptionElement(MarkdownType value) { 
2243      this.description = value;
2244      return this;
2245    }
2246
2247    /**
2248     * @return Human-readable description of the source document.
2249     */
2250    public String getDescription() { 
2251      return this.description == null ? null : this.description.getValue();
2252    }
2253
2254    /**
2255     * @param value Human-readable description of the source document.
2256     */
2257    public DocumentReference setDescription(String value) { 
2258      if (Utilities.noString(value))
2259        this.description = null;
2260      else {
2261        if (this.description == null)
2262          this.description = new MarkdownType();
2263        this.description.setValue(value);
2264      }
2265      return this;
2266    }
2267
2268    /**
2269     * @return {@link #securityLabel} (A set of Security-Tag codes specifying the level of privacy/security of the Document found at DocumentReference.content.attachment.url. Note that DocumentReference.meta.security contains the security labels of the data elements in DocumentReference, while DocumentReference.securityLabel contains the security labels for the document the reference refers to. The distinction recognizes that the document may contain sensitive information, while the DocumentReference is metadata about the document and thus might not be as sensitive as the document. For example: a psychotherapy episode may contain highly sensitive information, while the metadata may simply indicate that some episode happened.)
2270     */
2271    public List<CodeableConcept> getSecurityLabel() { 
2272      if (this.securityLabel == null)
2273        this.securityLabel = new ArrayList<CodeableConcept>();
2274      return this.securityLabel;
2275    }
2276
2277    /**
2278     * @return Returns a reference to <code>this</code> for easy method chaining
2279     */
2280    public DocumentReference setSecurityLabel(List<CodeableConcept> theSecurityLabel) { 
2281      this.securityLabel = theSecurityLabel;
2282      return this;
2283    }
2284
2285    public boolean hasSecurityLabel() { 
2286      if (this.securityLabel == null)
2287        return false;
2288      for (CodeableConcept item : this.securityLabel)
2289        if (!item.isEmpty())
2290          return true;
2291      return false;
2292    }
2293
2294    public CodeableConcept addSecurityLabel() { //3
2295      CodeableConcept t = new CodeableConcept();
2296      if (this.securityLabel == null)
2297        this.securityLabel = new ArrayList<CodeableConcept>();
2298      this.securityLabel.add(t);
2299      return t;
2300    }
2301
2302    public DocumentReference addSecurityLabel(CodeableConcept t) { //3
2303      if (t == null)
2304        return this;
2305      if (this.securityLabel == null)
2306        this.securityLabel = new ArrayList<CodeableConcept>();
2307      this.securityLabel.add(t);
2308      return this;
2309    }
2310
2311    /**
2312     * @return The first repetition of repeating field {@link #securityLabel}, creating it if it does not already exist {3}
2313     */
2314    public CodeableConcept getSecurityLabelFirstRep() { 
2315      if (getSecurityLabel().isEmpty()) {
2316        addSecurityLabel();
2317      }
2318      return getSecurityLabel().get(0);
2319    }
2320
2321    /**
2322     * @return {@link #content} (The document and format referenced.  If there are multiple content element repetitions, these must all represent the same document in different format, or attachment metadata.)
2323     */
2324    public List<DocumentReferenceContentComponent> getContent() { 
2325      if (this.content == null)
2326        this.content = new ArrayList<DocumentReferenceContentComponent>();
2327      return this.content;
2328    }
2329
2330    /**
2331     * @return Returns a reference to <code>this</code> for easy method chaining
2332     */
2333    public DocumentReference setContent(List<DocumentReferenceContentComponent> theContent) { 
2334      this.content = theContent;
2335      return this;
2336    }
2337
2338    public boolean hasContent() { 
2339      if (this.content == null)
2340        return false;
2341      for (DocumentReferenceContentComponent item : this.content)
2342        if (!item.isEmpty())
2343          return true;
2344      return false;
2345    }
2346
2347    public DocumentReferenceContentComponent addContent() { //3
2348      DocumentReferenceContentComponent t = new DocumentReferenceContentComponent();
2349      if (this.content == null)
2350        this.content = new ArrayList<DocumentReferenceContentComponent>();
2351      this.content.add(t);
2352      return t;
2353    }
2354
2355    public DocumentReference addContent(DocumentReferenceContentComponent t) { //3
2356      if (t == null)
2357        return this;
2358      if (this.content == null)
2359        this.content = new ArrayList<DocumentReferenceContentComponent>();
2360      this.content.add(t);
2361      return this;
2362    }
2363
2364    /**
2365     * @return The first repetition of repeating field {@link #content}, creating it if it does not already exist {3}
2366     */
2367    public DocumentReferenceContentComponent getContentFirstRep() { 
2368      if (getContent().isEmpty()) {
2369        addContent();
2370      }
2371      return getContent().get(0);
2372    }
2373
2374      protected void listChildren(List<Property> children) {
2375        super.listChildren(children);
2376        children.add(new Property("identifier", "Identifier", "Other business identifiers associated with the document, including version independent identifiers.", 0, java.lang.Integer.MAX_VALUE, identifier));
2377        children.add(new Property("version", "string", "An explicitly assigned identifer of a variation of the content in the DocumentReference.", 0, 1, version));
2378        children.add(new Property("basedOn", "Reference(Appointment|AppointmentResponse|CarePlan|Claim|CommunicationRequest|Contract|CoverageEligibilityRequest|DeviceRequest|EnrollmentRequest|ImmunizationRecommendation|MedicationRequest|NutritionOrder|RequestOrchestration|ServiceRequest|SupplyRequest|VisionPrescription)", "A procedure that is fulfilled in whole or in part by the creation of this media.", 0, java.lang.Integer.MAX_VALUE, basedOn));
2379        children.add(new Property("status", "code", "The status of this document reference.", 0, 1, status));
2380        children.add(new Property("docStatus", "code", "The status of the underlying document.", 0, 1, docStatus));
2381        children.add(new Property("modality", "CodeableConcept", "Imaging modality used. This may include both acquisition and non-acquisition modalities.", 0, java.lang.Integer.MAX_VALUE, modality));
2382        children.add(new Property("type", "CodeableConcept", "Specifies the particular kind of document referenced  (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the document referenced.", 0, 1, type));
2383        children.add(new Property("category", "CodeableConcept", "A categorization for the type of document referenced - helps for indexing and searching. This may be implied by or derived from the code specified in the DocumentReference.type.", 0, java.lang.Integer.MAX_VALUE, category));
2384        children.add(new Property("subject", "Reference(Any)", "Who or what the document is about. The document can be about a person, (patient or healthcare practitioner), a device (e.g. a machine) or even a group of subjects (such as a document about a herd of farm animals, or a set of patients that share a common exposure).", 0, 1, subject));
2385        children.add(new Property("context", "Reference(Appointment|Encounter|EpisodeOfCare)", "Describes the clinical encounter or type of care that the document content is associated with.", 0, java.lang.Integer.MAX_VALUE, context));
2386        children.add(new Property("event", "CodeableReference", "This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the type Code, such as a \"History and Physical Report\" in which the procedure being documented is necessarily a \"History and Physical\" act.", 0, java.lang.Integer.MAX_VALUE, event));
2387        children.add(new Property("bodySite", "CodeableReference(BodyStructure)", "The anatomic structures included in the document.", 0, java.lang.Integer.MAX_VALUE, bodySite));
2388        children.add(new Property("facilityType", "CodeableConcept", "The kind of facility where the patient was seen.", 0, 1, facilityType));
2389        children.add(new Property("practiceSetting", "CodeableConcept", "This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty.", 0, 1, practiceSetting));
2390        children.add(new Property("period", "Period", "The time period over which the service that is described by the document was provided.", 0, 1, period));
2391        children.add(new Property("date", "instant", "When the document reference was created.", 0, 1, date));
2392        children.add(new Property("author", "Reference(Practitioner|PractitionerRole|Organization|Device|Patient|RelatedPerson|CareTeam)", "Identifies who is responsible for adding the information to the document.", 0, java.lang.Integer.MAX_VALUE, author));
2393        children.add(new Property("attester", "", "A participant who has authenticated the accuracy of the document.", 0, java.lang.Integer.MAX_VALUE, attester));
2394        children.add(new Property("custodian", "Reference(Organization)", "Identifies the organization or group who is responsible for ongoing maintenance of and access to the document.", 0, 1, custodian));
2395        children.add(new Property("relatesTo", "", "Relationships that this document has with other document references that already exist.", 0, java.lang.Integer.MAX_VALUE, relatesTo));
2396        children.add(new Property("description", "markdown", "Human-readable description of the source document.", 0, 1, description));
2397        children.add(new Property("securityLabel", "CodeableConcept", "A set of Security-Tag codes specifying the level of privacy/security of the Document found at DocumentReference.content.attachment.url. Note that DocumentReference.meta.security contains the security labels of the data elements in DocumentReference, while DocumentReference.securityLabel contains the security labels for the document the reference refers to. The distinction recognizes that the document may contain sensitive information, while the DocumentReference is metadata about the document and thus might not be as sensitive as the document. For example: a psychotherapy episode may contain highly sensitive information, while the metadata may simply indicate that some episode happened.", 0, java.lang.Integer.MAX_VALUE, securityLabel));
2398        children.add(new Property("content", "", "The document and format referenced.  If there are multiple content element repetitions, these must all represent the same document in different format, or attachment metadata.", 0, java.lang.Integer.MAX_VALUE, content));
2399      }
2400
2401      @Override
2402      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2403        switch (_hash) {
2404        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Other business identifiers associated with the document, including version independent identifiers.", 0, java.lang.Integer.MAX_VALUE, identifier);
2405        case 351608024: /*version*/  return new Property("version", "string", "An explicitly assigned identifer of a variation of the content in the DocumentReference.", 0, 1, version);
2406        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(Appointment|AppointmentResponse|CarePlan|Claim|CommunicationRequest|Contract|CoverageEligibilityRequest|DeviceRequest|EnrollmentRequest|ImmunizationRecommendation|MedicationRequest|NutritionOrder|RequestOrchestration|ServiceRequest|SupplyRequest|VisionPrescription)", "A procedure that is fulfilled in whole or in part by the creation of this media.", 0, java.lang.Integer.MAX_VALUE, basedOn);
2407        case -892481550: /*status*/  return new Property("status", "code", "The status of this document reference.", 0, 1, status);
2408        case -23496886: /*docStatus*/  return new Property("docStatus", "code", "The status of the underlying document.", 0, 1, docStatus);
2409        case -622722335: /*modality*/  return new Property("modality", "CodeableConcept", "Imaging modality used. This may include both acquisition and non-acquisition modalities.", 0, java.lang.Integer.MAX_VALUE, modality);
2410        case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Specifies the particular kind of document referenced  (e.g. History and Physical, Discharge Summary, Progress Note). This usually equates to the purpose of making the document referenced.", 0, 1, type);
2411        case 50511102: /*category*/  return new Property("category", "CodeableConcept", "A categorization for the type of document referenced - helps for indexing and searching. This may be implied by or derived from the code specified in the DocumentReference.type.", 0, java.lang.Integer.MAX_VALUE, category);
2412        case -1867885268: /*subject*/  return new Property("subject", "Reference(Any)", "Who or what the document is about. The document can be about a person, (patient or healthcare practitioner), a device (e.g. a machine) or even a group of subjects (such as a document about a herd of farm animals, or a set of patients that share a common exposure).", 0, 1, subject);
2413        case 951530927: /*context*/  return new Property("context", "Reference(Appointment|Encounter|EpisodeOfCare)", "Describes the clinical encounter or type of care that the document content is associated with.", 0, java.lang.Integer.MAX_VALUE, context);
2414        case 96891546: /*event*/  return new Property("event", "CodeableReference", "This list of codes represents the main clinical acts, such as a colonoscopy or an appendectomy, being documented. In some cases, the event is inherent in the type Code, such as a \"History and Physical Report\" in which the procedure being documented is necessarily a \"History and Physical\" act.", 0, java.lang.Integer.MAX_VALUE, event);
2415        case 1702620169: /*bodySite*/  return new Property("bodySite", "CodeableReference(BodyStructure)", "The anatomic structures included in the document.", 0, java.lang.Integer.MAX_VALUE, bodySite);
2416        case 370698365: /*facilityType*/  return new Property("facilityType", "CodeableConcept", "The kind of facility where the patient was seen.", 0, 1, facilityType);
2417        case 331373717: /*practiceSetting*/  return new Property("practiceSetting", "CodeableConcept", "This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty.", 0, 1, practiceSetting);
2418        case -991726143: /*period*/  return new Property("period", "Period", "The time period over which the service that is described by the document was provided.", 0, 1, period);
2419        case 3076014: /*date*/  return new Property("date", "instant", "When the document reference was created.", 0, 1, date);
2420        case -1406328437: /*author*/  return new Property("author", "Reference(Practitioner|PractitionerRole|Organization|Device|Patient|RelatedPerson|CareTeam)", "Identifies who is responsible for adding the information to the document.", 0, java.lang.Integer.MAX_VALUE, author);
2421        case 542920370: /*attester*/  return new Property("attester", "", "A participant who has authenticated the accuracy of the document.", 0, java.lang.Integer.MAX_VALUE, attester);
2422        case 1611297262: /*custodian*/  return new Property("custodian", "Reference(Organization)", "Identifies the organization or group who is responsible for ongoing maintenance of and access to the document.", 0, 1, custodian);
2423        case -7765931: /*relatesTo*/  return new Property("relatesTo", "", "Relationships that this document has with other document references that already exist.", 0, java.lang.Integer.MAX_VALUE, relatesTo);
2424        case -1724546052: /*description*/  return new Property("description", "markdown", "Human-readable description of the source document.", 0, 1, description);
2425        case -722296940: /*securityLabel*/  return new Property("securityLabel", "CodeableConcept", "A set of Security-Tag codes specifying the level of privacy/security of the Document found at DocumentReference.content.attachment.url. Note that DocumentReference.meta.security contains the security labels of the data elements in DocumentReference, while DocumentReference.securityLabel contains the security labels for the document the reference refers to. The distinction recognizes that the document may contain sensitive information, while the DocumentReference is metadata about the document and thus might not be as sensitive as the document. For example: a psychotherapy episode may contain highly sensitive information, while the metadata may simply indicate that some episode happened.", 0, java.lang.Integer.MAX_VALUE, securityLabel);
2426        case 951530617: /*content*/  return new Property("content", "", "The document and format referenced.  If there are multiple content element repetitions, these must all represent the same document in different format, or attachment metadata.", 0, java.lang.Integer.MAX_VALUE, content);
2427        default: return super.getNamedProperty(_hash, _name, _checkValid);
2428        }
2429
2430      }
2431
2432      @Override
2433      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2434        switch (hash) {
2435        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
2436        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
2437        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
2438        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<DocumentReferenceStatus>
2439        case -23496886: /*docStatus*/ return this.docStatus == null ? new Base[0] : new Base[] {this.docStatus}; // Enumeration<CompositionStatus>
2440        case -622722335: /*modality*/ return this.modality == null ? new Base[0] : this.modality.toArray(new Base[this.modality.size()]); // CodeableConcept
2441        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
2442        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept
2443        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
2444        case 951530927: /*context*/ return this.context == null ? new Base[0] : this.context.toArray(new Base[this.context.size()]); // Reference
2445        case 96891546: /*event*/ return this.event == null ? new Base[0] : this.event.toArray(new Base[this.event.size()]); // CodeableReference
2446        case 1702620169: /*bodySite*/ return this.bodySite == null ? new Base[0] : this.bodySite.toArray(new Base[this.bodySite.size()]); // CodeableReference
2447        case 370698365: /*facilityType*/ return this.facilityType == null ? new Base[0] : new Base[] {this.facilityType}; // CodeableConcept
2448        case 331373717: /*practiceSetting*/ return this.practiceSetting == null ? new Base[0] : new Base[] {this.practiceSetting}; // CodeableConcept
2449        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
2450        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // InstantType
2451        case -1406328437: /*author*/ return this.author == null ? new Base[0] : this.author.toArray(new Base[this.author.size()]); // Reference
2452        case 542920370: /*attester*/ return this.attester == null ? new Base[0] : this.attester.toArray(new Base[this.attester.size()]); // DocumentReferenceAttesterComponent
2453        case 1611297262: /*custodian*/ return this.custodian == null ? new Base[0] : new Base[] {this.custodian}; // Reference
2454        case -7765931: /*relatesTo*/ return this.relatesTo == null ? new Base[0] : this.relatesTo.toArray(new Base[this.relatesTo.size()]); // DocumentReferenceRelatesToComponent
2455        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
2456        case -722296940: /*securityLabel*/ return this.securityLabel == null ? new Base[0] : this.securityLabel.toArray(new Base[this.securityLabel.size()]); // CodeableConcept
2457        case 951530617: /*content*/ return this.content == null ? new Base[0] : this.content.toArray(new Base[this.content.size()]); // DocumentReferenceContentComponent
2458        default: return super.getProperty(hash, name, checkValid);
2459        }
2460
2461      }
2462
2463      @Override
2464      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2465        switch (hash) {
2466        case -1618432855: // identifier
2467          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
2468          return value;
2469        case 351608024: // version
2470          this.version = TypeConvertor.castToString(value); // StringType
2471          return value;
2472        case -332612366: // basedOn
2473          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
2474          return value;
2475        case -892481550: // status
2476          value = new DocumentReferenceStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2477          this.status = (Enumeration) value; // Enumeration<DocumentReferenceStatus>
2478          return value;
2479        case -23496886: // docStatus
2480          value = new CompositionStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2481          this.docStatus = (Enumeration) value; // Enumeration<CompositionStatus>
2482          return value;
2483        case -622722335: // modality
2484          this.getModality().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2485          return value;
2486        case 3575610: // type
2487          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2488          return value;
2489        case 50511102: // category
2490          this.getCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2491          return value;
2492        case -1867885268: // subject
2493          this.subject = TypeConvertor.castToReference(value); // Reference
2494          return value;
2495        case 951530927: // context
2496          this.getContext().add(TypeConvertor.castToReference(value)); // Reference
2497          return value;
2498        case 96891546: // event
2499          this.getEvent().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
2500          return value;
2501        case 1702620169: // bodySite
2502          this.getBodySite().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
2503          return value;
2504        case 370698365: // facilityType
2505          this.facilityType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2506          return value;
2507        case 331373717: // practiceSetting
2508          this.practiceSetting = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2509          return value;
2510        case -991726143: // period
2511          this.period = TypeConvertor.castToPeriod(value); // Period
2512          return value;
2513        case 3076014: // date
2514          this.date = TypeConvertor.castToInstant(value); // InstantType
2515          return value;
2516        case -1406328437: // author
2517          this.getAuthor().add(TypeConvertor.castToReference(value)); // Reference
2518          return value;
2519        case 542920370: // attester
2520          this.getAttester().add((DocumentReferenceAttesterComponent) value); // DocumentReferenceAttesterComponent
2521          return value;
2522        case 1611297262: // custodian
2523          this.custodian = TypeConvertor.castToReference(value); // Reference
2524          return value;
2525        case -7765931: // relatesTo
2526          this.getRelatesTo().add((DocumentReferenceRelatesToComponent) value); // DocumentReferenceRelatesToComponent
2527          return value;
2528        case -1724546052: // description
2529          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
2530          return value;
2531        case -722296940: // securityLabel
2532          this.getSecurityLabel().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2533          return value;
2534        case 951530617: // content
2535          this.getContent().add((DocumentReferenceContentComponent) value); // DocumentReferenceContentComponent
2536          return value;
2537        default: return super.setProperty(hash, name, value);
2538        }
2539
2540      }
2541
2542      @Override
2543      public Base setProperty(String name, Base value) throws FHIRException {
2544        if (name.equals("identifier")) {
2545          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
2546        } else if (name.equals("version")) {
2547          this.version = TypeConvertor.castToString(value); // StringType
2548        } else if (name.equals("basedOn")) {
2549          this.getBasedOn().add(TypeConvertor.castToReference(value));
2550        } else if (name.equals("status")) {
2551          value = new DocumentReferenceStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2552          this.status = (Enumeration) value; // Enumeration<DocumentReferenceStatus>
2553        } else if (name.equals("docStatus")) {
2554          value = new CompositionStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2555          this.docStatus = (Enumeration) value; // Enumeration<CompositionStatus>
2556        } else if (name.equals("modality")) {
2557          this.getModality().add(TypeConvertor.castToCodeableConcept(value));
2558        } else if (name.equals("type")) {
2559          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2560        } else if (name.equals("category")) {
2561          this.getCategory().add(TypeConvertor.castToCodeableConcept(value));
2562        } else if (name.equals("subject")) {
2563          this.subject = TypeConvertor.castToReference(value); // Reference
2564        } else if (name.equals("context")) {
2565          this.getContext().add(TypeConvertor.castToReference(value));
2566        } else if (name.equals("event")) {
2567          this.getEvent().add(TypeConvertor.castToCodeableReference(value));
2568        } else if (name.equals("bodySite")) {
2569          this.getBodySite().add(TypeConvertor.castToCodeableReference(value));
2570        } else if (name.equals("facilityType")) {
2571          this.facilityType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2572        } else if (name.equals("practiceSetting")) {
2573          this.practiceSetting = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2574        } else if (name.equals("period")) {
2575          this.period = TypeConvertor.castToPeriod(value); // Period
2576        } else if (name.equals("date")) {
2577          this.date = TypeConvertor.castToInstant(value); // InstantType
2578        } else if (name.equals("author")) {
2579          this.getAuthor().add(TypeConvertor.castToReference(value));
2580        } else if (name.equals("attester")) {
2581          this.getAttester().add((DocumentReferenceAttesterComponent) value);
2582        } else if (name.equals("custodian")) {
2583          this.custodian = TypeConvertor.castToReference(value); // Reference
2584        } else if (name.equals("relatesTo")) {
2585          this.getRelatesTo().add((DocumentReferenceRelatesToComponent) value);
2586        } else if (name.equals("description")) {
2587          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
2588        } else if (name.equals("securityLabel")) {
2589          this.getSecurityLabel().add(TypeConvertor.castToCodeableConcept(value));
2590        } else if (name.equals("content")) {
2591          this.getContent().add((DocumentReferenceContentComponent) value);
2592        } else
2593          return super.setProperty(name, value);
2594        return value;
2595      }
2596
2597  @Override
2598  public void removeChild(String name, Base value) throws FHIRException {
2599        if (name.equals("identifier")) {
2600          this.getIdentifier().remove(value);
2601        } else if (name.equals("version")) {
2602          this.version = null;
2603        } else if (name.equals("basedOn")) {
2604          this.getBasedOn().remove(value);
2605        } else if (name.equals("status")) {
2606          value = new DocumentReferenceStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2607          this.status = (Enumeration) value; // Enumeration<DocumentReferenceStatus>
2608        } else if (name.equals("docStatus")) {
2609          value = new CompositionStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2610          this.docStatus = (Enumeration) value; // Enumeration<CompositionStatus>
2611        } else if (name.equals("modality")) {
2612          this.getModality().remove(value);
2613        } else if (name.equals("type")) {
2614          this.type = null;
2615        } else if (name.equals("category")) {
2616          this.getCategory().remove(value);
2617        } else if (name.equals("subject")) {
2618          this.subject = null;
2619        } else if (name.equals("context")) {
2620          this.getContext().remove(value);
2621        } else if (name.equals("event")) {
2622          this.getEvent().remove(value);
2623        } else if (name.equals("bodySite")) {
2624          this.getBodySite().remove(value);
2625        } else if (name.equals("facilityType")) {
2626          this.facilityType = null;
2627        } else if (name.equals("practiceSetting")) {
2628          this.practiceSetting = null;
2629        } else if (name.equals("period")) {
2630          this.period = null;
2631        } else if (name.equals("date")) {
2632          this.date = null;
2633        } else if (name.equals("author")) {
2634          this.getAuthor().remove(value);
2635        } else if (name.equals("attester")) {
2636          this.getAttester().remove((DocumentReferenceAttesterComponent) value);
2637        } else if (name.equals("custodian")) {
2638          this.custodian = null;
2639        } else if (name.equals("relatesTo")) {
2640          this.getRelatesTo().remove((DocumentReferenceRelatesToComponent) value);
2641        } else if (name.equals("description")) {
2642          this.description = null;
2643        } else if (name.equals("securityLabel")) {
2644          this.getSecurityLabel().remove(value);
2645        } else if (name.equals("content")) {
2646          this.getContent().remove((DocumentReferenceContentComponent) value);
2647        } else
2648          super.removeChild(name, value);
2649        
2650      }
2651
2652      @Override
2653      public Base makeProperty(int hash, String name) throws FHIRException {
2654        switch (hash) {
2655        case -1618432855:  return addIdentifier(); 
2656        case 351608024:  return getVersionElement();
2657        case -332612366:  return addBasedOn(); 
2658        case -892481550:  return getStatusElement();
2659        case -23496886:  return getDocStatusElement();
2660        case -622722335:  return addModality(); 
2661        case 3575610:  return getType();
2662        case 50511102:  return addCategory(); 
2663        case -1867885268:  return getSubject();
2664        case 951530927:  return addContext(); 
2665        case 96891546:  return addEvent(); 
2666        case 1702620169:  return addBodySite(); 
2667        case 370698365:  return getFacilityType();
2668        case 331373717:  return getPracticeSetting();
2669        case -991726143:  return getPeriod();
2670        case 3076014:  return getDateElement();
2671        case -1406328437:  return addAuthor(); 
2672        case 542920370:  return addAttester(); 
2673        case 1611297262:  return getCustodian();
2674        case -7765931:  return addRelatesTo(); 
2675        case -1724546052:  return getDescriptionElement();
2676        case -722296940:  return addSecurityLabel(); 
2677        case 951530617:  return addContent(); 
2678        default: return super.makeProperty(hash, name);
2679        }
2680
2681      }
2682
2683      @Override
2684      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2685        switch (hash) {
2686        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2687        case 351608024: /*version*/ return new String[] {"string"};
2688        case -332612366: /*basedOn*/ return new String[] {"Reference"};
2689        case -892481550: /*status*/ return new String[] {"code"};
2690        case -23496886: /*docStatus*/ return new String[] {"code"};
2691        case -622722335: /*modality*/ return new String[] {"CodeableConcept"};
2692        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
2693        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
2694        case -1867885268: /*subject*/ return new String[] {"Reference"};
2695        case 951530927: /*context*/ return new String[] {"Reference"};
2696        case 96891546: /*event*/ return new String[] {"CodeableReference"};
2697        case 1702620169: /*bodySite*/ return new String[] {"CodeableReference"};
2698        case 370698365: /*facilityType*/ return new String[] {"CodeableConcept"};
2699        case 331373717: /*practiceSetting*/ return new String[] {"CodeableConcept"};
2700        case -991726143: /*period*/ return new String[] {"Period"};
2701        case 3076014: /*date*/ return new String[] {"instant"};
2702        case -1406328437: /*author*/ return new String[] {"Reference"};
2703        case 542920370: /*attester*/ return new String[] {};
2704        case 1611297262: /*custodian*/ return new String[] {"Reference"};
2705        case -7765931: /*relatesTo*/ return new String[] {};
2706        case -1724546052: /*description*/ return new String[] {"markdown"};
2707        case -722296940: /*securityLabel*/ return new String[] {"CodeableConcept"};
2708        case 951530617: /*content*/ return new String[] {};
2709        default: return super.getTypesForProperty(hash, name);
2710        }
2711
2712      }
2713
2714      @Override
2715      public Base addChild(String name) throws FHIRException {
2716        if (name.equals("identifier")) {
2717          return addIdentifier();
2718        }
2719        else if (name.equals("version")) {
2720          throw new FHIRException("Cannot call addChild on a singleton property DocumentReference.version");
2721        }
2722        else if (name.equals("basedOn")) {
2723          return addBasedOn();
2724        }
2725        else if (name.equals("status")) {
2726          throw new FHIRException("Cannot call addChild on a singleton property DocumentReference.status");
2727        }
2728        else if (name.equals("docStatus")) {
2729          throw new FHIRException("Cannot call addChild on a singleton property DocumentReference.docStatus");
2730        }
2731        else if (name.equals("modality")) {
2732          return addModality();
2733        }
2734        else if (name.equals("type")) {
2735          this.type = new CodeableConcept();
2736          return this.type;
2737        }
2738        else if (name.equals("category")) {
2739          return addCategory();
2740        }
2741        else if (name.equals("subject")) {
2742          this.subject = new Reference();
2743          return this.subject;
2744        }
2745        else if (name.equals("context")) {
2746          return addContext();
2747        }
2748        else if (name.equals("event")) {
2749          return addEvent();
2750        }
2751        else if (name.equals("bodySite")) {
2752          return addBodySite();
2753        }
2754        else if (name.equals("facilityType")) {
2755          this.facilityType = new CodeableConcept();
2756          return this.facilityType;
2757        }
2758        else if (name.equals("practiceSetting")) {
2759          this.practiceSetting = new CodeableConcept();
2760          return this.practiceSetting;
2761        }
2762        else if (name.equals("period")) {
2763          this.period = new Period();
2764          return this.period;
2765        }
2766        else if (name.equals("date")) {
2767          throw new FHIRException("Cannot call addChild on a singleton property DocumentReference.date");
2768        }
2769        else if (name.equals("author")) {
2770          return addAuthor();
2771        }
2772        else if (name.equals("attester")) {
2773          return addAttester();
2774        }
2775        else if (name.equals("custodian")) {
2776          this.custodian = new Reference();
2777          return this.custodian;
2778        }
2779        else if (name.equals("relatesTo")) {
2780          return addRelatesTo();
2781        }
2782        else if (name.equals("description")) {
2783          throw new FHIRException("Cannot call addChild on a singleton property DocumentReference.description");
2784        }
2785        else if (name.equals("securityLabel")) {
2786          return addSecurityLabel();
2787        }
2788        else if (name.equals("content")) {
2789          return addContent();
2790        }
2791        else
2792          return super.addChild(name);
2793      }
2794
2795  public String fhirType() {
2796    return "DocumentReference";
2797
2798  }
2799
2800      public DocumentReference copy() {
2801        DocumentReference dst = new DocumentReference();
2802        copyValues(dst);
2803        return dst;
2804      }
2805
2806      public void copyValues(DocumentReference dst) {
2807        super.copyValues(dst);
2808        if (identifier != null) {
2809          dst.identifier = new ArrayList<Identifier>();
2810          for (Identifier i : identifier)
2811            dst.identifier.add(i.copy());
2812        };
2813        dst.version = version == null ? null : version.copy();
2814        if (basedOn != null) {
2815          dst.basedOn = new ArrayList<Reference>();
2816          for (Reference i : basedOn)
2817            dst.basedOn.add(i.copy());
2818        };
2819        dst.status = status == null ? null : status.copy();
2820        dst.docStatus = docStatus == null ? null : docStatus.copy();
2821        if (modality != null) {
2822          dst.modality = new ArrayList<CodeableConcept>();
2823          for (CodeableConcept i : modality)
2824            dst.modality.add(i.copy());
2825        };
2826        dst.type = type == null ? null : type.copy();
2827        if (category != null) {
2828          dst.category = new ArrayList<CodeableConcept>();
2829          for (CodeableConcept i : category)
2830            dst.category.add(i.copy());
2831        };
2832        dst.subject = subject == null ? null : subject.copy();
2833        if (context != null) {
2834          dst.context = new ArrayList<Reference>();
2835          for (Reference i : context)
2836            dst.context.add(i.copy());
2837        };
2838        if (event != null) {
2839          dst.event = new ArrayList<CodeableReference>();
2840          for (CodeableReference i : event)
2841            dst.event.add(i.copy());
2842        };
2843        if (bodySite != null) {
2844          dst.bodySite = new ArrayList<CodeableReference>();
2845          for (CodeableReference i : bodySite)
2846            dst.bodySite.add(i.copy());
2847        };
2848        dst.facilityType = facilityType == null ? null : facilityType.copy();
2849        dst.practiceSetting = practiceSetting == null ? null : practiceSetting.copy();
2850        dst.period = period == null ? null : period.copy();
2851        dst.date = date == null ? null : date.copy();
2852        if (author != null) {
2853          dst.author = new ArrayList<Reference>();
2854          for (Reference i : author)
2855            dst.author.add(i.copy());
2856        };
2857        if (attester != null) {
2858          dst.attester = new ArrayList<DocumentReferenceAttesterComponent>();
2859          for (DocumentReferenceAttesterComponent i : attester)
2860            dst.attester.add(i.copy());
2861        };
2862        dst.custodian = custodian == null ? null : custodian.copy();
2863        if (relatesTo != null) {
2864          dst.relatesTo = new ArrayList<DocumentReferenceRelatesToComponent>();
2865          for (DocumentReferenceRelatesToComponent i : relatesTo)
2866            dst.relatesTo.add(i.copy());
2867        };
2868        dst.description = description == null ? null : description.copy();
2869        if (securityLabel != null) {
2870          dst.securityLabel = new ArrayList<CodeableConcept>();
2871          for (CodeableConcept i : securityLabel)
2872            dst.securityLabel.add(i.copy());
2873        };
2874        if (content != null) {
2875          dst.content = new ArrayList<DocumentReferenceContentComponent>();
2876          for (DocumentReferenceContentComponent i : content)
2877            dst.content.add(i.copy());
2878        };
2879      }
2880
2881      protected DocumentReference typedCopy() {
2882        return copy();
2883      }
2884
2885      @Override
2886      public boolean equalsDeep(Base other_) {
2887        if (!super.equalsDeep(other_))
2888          return false;
2889        if (!(other_ instanceof DocumentReference))
2890          return false;
2891        DocumentReference o = (DocumentReference) other_;
2892        return compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true) && compareDeep(basedOn, o.basedOn, true)
2893           && compareDeep(status, o.status, true) && compareDeep(docStatus, o.docStatus, true) && compareDeep(modality, o.modality, true)
2894           && compareDeep(type, o.type, true) && compareDeep(category, o.category, true) && compareDeep(subject, o.subject, true)
2895           && compareDeep(context, o.context, true) && compareDeep(event, o.event, true) && compareDeep(bodySite, o.bodySite, true)
2896           && compareDeep(facilityType, o.facilityType, true) && compareDeep(practiceSetting, o.practiceSetting, true)
2897           && compareDeep(period, o.period, true) && compareDeep(date, o.date, true) && compareDeep(author, o.author, true)
2898           && compareDeep(attester, o.attester, true) && compareDeep(custodian, o.custodian, true) && compareDeep(relatesTo, o.relatesTo, true)
2899           && compareDeep(description, o.description, true) && compareDeep(securityLabel, o.securityLabel, true)
2900           && compareDeep(content, o.content, true);
2901      }
2902
2903      @Override
2904      public boolean equalsShallow(Base other_) {
2905        if (!super.equalsShallow(other_))
2906          return false;
2907        if (!(other_ instanceof DocumentReference))
2908          return false;
2909        DocumentReference o = (DocumentReference) other_;
2910        return compareValues(version, o.version, true) && compareValues(status, o.status, true) && compareValues(docStatus, o.docStatus, true)
2911           && compareValues(date, o.date, true) && compareValues(description, o.description, true);
2912      }
2913
2914      public boolean isEmpty() {
2915        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, version, basedOn
2916          , status, docStatus, modality, type, category, subject, context, event, bodySite
2917          , facilityType, practiceSetting, period, date, author, attester, custodian, relatesTo
2918          , description, securityLabel, content);
2919      }
2920
2921  @Override
2922  public ResourceType getResourceType() {
2923    return ResourceType.DocumentReference;
2924   }
2925
2926 /**
2927   * Search parameter: <b>attester</b>
2928   * <p>
2929   * Description: <b>Who attested the document</b><br>
2930   * Type: <b>reference</b><br>
2931   * Path: <b>DocumentReference.attester.party</b><br>
2932   * </p>
2933   */
2934  @SearchParamDefinition(name="attester", path="DocumentReference.attester.party", description="Who attested the document", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
2935  public static final String SP_ATTESTER = "attester";
2936 /**
2937   * <b>Fluent Client</b> search parameter constant for <b>attester</b>
2938   * <p>
2939   * Description: <b>Who attested the document</b><br>
2940   * Type: <b>reference</b><br>
2941   * Path: <b>DocumentReference.attester.party</b><br>
2942   * </p>
2943   */
2944  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ATTESTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ATTESTER);
2945
2946/**
2947   * Constant for fluent queries to be used to add include statements. Specifies
2948   * the path value of "<b>DocumentReference:attester</b>".
2949   */
2950  public static final ca.uhn.fhir.model.api.Include INCLUDE_ATTESTER = new ca.uhn.fhir.model.api.Include("DocumentReference:attester").toLocked();
2951
2952 /**
2953   * Search parameter: <b>author</b>
2954   * <p>
2955   * Description: <b>Who and/or what authored the document</b><br>
2956   * Type: <b>reference</b><br>
2957   * Path: <b>DocumentReference.author</b><br>
2958   * </p>
2959   */
2960  @SearchParamDefinition(name="author", path="DocumentReference.author", description="Who and/or what authored the document", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for RelatedPerson") }, target={CareTeam.class, Device.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
2961  public static final String SP_AUTHOR = "author";
2962 /**
2963   * <b>Fluent Client</b> search parameter constant for <b>author</b>
2964   * <p>
2965   * Description: <b>Who and/or what authored the document</b><br>
2966   * Type: <b>reference</b><br>
2967   * Path: <b>DocumentReference.author</b><br>
2968   * </p>
2969   */
2970  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam AUTHOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_AUTHOR);
2971
2972/**
2973   * Constant for fluent queries to be used to add include statements. Specifies
2974   * the path value of "<b>DocumentReference:author</b>".
2975   */
2976  public static final ca.uhn.fhir.model.api.Include INCLUDE_AUTHOR = new ca.uhn.fhir.model.api.Include("DocumentReference:author").toLocked();
2977
2978 /**
2979   * Search parameter: <b>based-on</b>
2980   * <p>
2981   * Description: <b>Procedure that caused this media to be created</b><br>
2982   * Type: <b>reference</b><br>
2983   * Path: <b>DocumentReference.basedOn</b><br>
2984   * </p>
2985   */
2986  @SearchParamDefinition(name="based-on", path="DocumentReference.basedOn", description="Procedure that caused this media to be created", type="reference", target={Appointment.class, AppointmentResponse.class, CarePlan.class, Claim.class, CommunicationRequest.class, Contract.class, CoverageEligibilityRequest.class, DeviceRequest.class, EnrollmentRequest.class, ImmunizationRecommendation.class, MedicationRequest.class, NutritionOrder.class, RequestOrchestration.class, ServiceRequest.class, SupplyRequest.class, VisionPrescription.class } )
2987  public static final String SP_BASED_ON = "based-on";
2988 /**
2989   * <b>Fluent Client</b> search parameter constant for <b>based-on</b>
2990   * <p>
2991   * Description: <b>Procedure that caused this media to be created</b><br>
2992   * Type: <b>reference</b><br>
2993   * Path: <b>DocumentReference.basedOn</b><br>
2994   * </p>
2995   */
2996  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASED_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASED_ON);
2997
2998/**
2999   * Constant for fluent queries to be used to add include statements. Specifies
3000   * the path value of "<b>DocumentReference:based-on</b>".
3001   */
3002  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASED_ON = new ca.uhn.fhir.model.api.Include("DocumentReference:based-on").toLocked();
3003
3004 /**
3005   * Search parameter: <b>bodysite-reference</b>
3006   * <p>
3007   * Description: <b>The body site studied</b><br>
3008   * Type: <b>reference</b><br>
3009   * Path: <b>DocumentReference.bodySite.reference</b><br>
3010   * </p>
3011   */
3012  @SearchParamDefinition(name="bodysite-reference", path="DocumentReference.bodySite.reference", description="The body site studied", type="reference", target={BodyStructure.class } )
3013  public static final String SP_BODYSITE_REFERENCE = "bodysite-reference";
3014 /**
3015   * <b>Fluent Client</b> search parameter constant for <b>bodysite-reference</b>
3016   * <p>
3017   * Description: <b>The body site studied</b><br>
3018   * Type: <b>reference</b><br>
3019   * Path: <b>DocumentReference.bodySite.reference</b><br>
3020   * </p>
3021   */
3022  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BODYSITE_REFERENCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BODYSITE_REFERENCE);
3023
3024/**
3025   * Constant for fluent queries to be used to add include statements. Specifies
3026   * the path value of "<b>DocumentReference:bodysite-reference</b>".
3027   */
3028  public static final ca.uhn.fhir.model.api.Include INCLUDE_BODYSITE_REFERENCE = new ca.uhn.fhir.model.api.Include("DocumentReference:bodysite-reference").toLocked();
3029
3030 /**
3031   * Search parameter: <b>bodysite</b>
3032   * <p>
3033   * Description: <b>The body site studied</b><br>
3034   * Type: <b>token</b><br>
3035   * Path: <b>DocumentReference.bodySite.concept</b><br>
3036   * </p>
3037   */
3038  @SearchParamDefinition(name="bodysite", path="DocumentReference.bodySite.concept", description="The body site studied", type="token" )
3039  public static final String SP_BODYSITE = "bodysite";
3040 /**
3041   * <b>Fluent Client</b> search parameter constant for <b>bodysite</b>
3042   * <p>
3043   * Description: <b>The body site studied</b><br>
3044   * Type: <b>token</b><br>
3045   * Path: <b>DocumentReference.bodySite.concept</b><br>
3046   * </p>
3047   */
3048  public static final ca.uhn.fhir.rest.gclient.TokenClientParam BODYSITE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_BODYSITE);
3049
3050 /**
3051   * Search parameter: <b>category</b>
3052   * <p>
3053   * Description: <b>Categorization of document</b><br>
3054   * Type: <b>token</b><br>
3055   * Path: <b>DocumentReference.category</b><br>
3056   * </p>
3057   */
3058  @SearchParamDefinition(name="category", path="DocumentReference.category", description="Categorization of document", type="token" )
3059  public static final String SP_CATEGORY = "category";
3060 /**
3061   * <b>Fluent Client</b> search parameter constant for <b>category</b>
3062   * <p>
3063   * Description: <b>Categorization of document</b><br>
3064   * Type: <b>token</b><br>
3065   * Path: <b>DocumentReference.category</b><br>
3066   * </p>
3067   */
3068  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
3069
3070 /**
3071   * Search parameter: <b>contenttype</b>
3072   * <p>
3073   * Description: <b>Mime type of the content, with charset etc.</b><br>
3074   * Type: <b>token</b><br>
3075   * Path: <b>DocumentReference.content.attachment.contentType</b><br>
3076   * </p>
3077   */
3078  @SearchParamDefinition(name="contenttype", path="DocumentReference.content.attachment.contentType", description="Mime type of the content, with charset etc.", type="token" )
3079  public static final String SP_CONTENTTYPE = "contenttype";
3080 /**
3081   * <b>Fluent Client</b> search parameter constant for <b>contenttype</b>
3082   * <p>
3083   * Description: <b>Mime type of the content, with charset etc.</b><br>
3084   * Type: <b>token</b><br>
3085   * Path: <b>DocumentReference.content.attachment.contentType</b><br>
3086   * </p>
3087   */
3088  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTENTTYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTENTTYPE);
3089
3090 /**
3091   * Search parameter: <b>context</b>
3092   * <p>
3093   * Description: <b>Context of the document content</b><br>
3094   * Type: <b>reference</b><br>
3095   * Path: <b>DocumentReference.context</b><br>
3096   * </p>
3097   */
3098  @SearchParamDefinition(name="context", path="DocumentReference.context", description="Context of the document content", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Encounter") }, target={Appointment.class, Encounter.class, EpisodeOfCare.class } )
3099  public static final String SP_CONTEXT = "context";
3100 /**
3101   * <b>Fluent Client</b> search parameter constant for <b>context</b>
3102   * <p>
3103   * Description: <b>Context of the document content</b><br>
3104   * Type: <b>reference</b><br>
3105   * Path: <b>DocumentReference.context</b><br>
3106   * </p>
3107   */
3108  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_CONTEXT);
3109
3110/**
3111   * Constant for fluent queries to be used to add include statements. Specifies
3112   * the path value of "<b>DocumentReference:context</b>".
3113   */
3114  public static final ca.uhn.fhir.model.api.Include INCLUDE_CONTEXT = new ca.uhn.fhir.model.api.Include("DocumentReference:context").toLocked();
3115
3116 /**
3117   * Search parameter: <b>creation</b>
3118   * <p>
3119   * Description: <b>Date attachment was first created</b><br>
3120   * Type: <b>date</b><br>
3121   * Path: <b>DocumentReference.content.attachment.creation</b><br>
3122   * </p>
3123   */
3124  @SearchParamDefinition(name="creation", path="DocumentReference.content.attachment.creation", description="Date attachment was first created", type="date" )
3125  public static final String SP_CREATION = "creation";
3126 /**
3127   * <b>Fluent Client</b> search parameter constant for <b>creation</b>
3128   * <p>
3129   * Description: <b>Date attachment was first created</b><br>
3130   * Type: <b>date</b><br>
3131   * Path: <b>DocumentReference.content.attachment.creation</b><br>
3132   * </p>
3133   */
3134  public static final ca.uhn.fhir.rest.gclient.DateClientParam CREATION = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_CREATION);
3135
3136 /**
3137   * Search parameter: <b>custodian</b>
3138   * <p>
3139   * Description: <b>Organization which maintains the document</b><br>
3140   * Type: <b>reference</b><br>
3141   * Path: <b>DocumentReference.custodian</b><br>
3142   * </p>
3143   */
3144  @SearchParamDefinition(name="custodian", path="DocumentReference.custodian", description="Organization which maintains the document", type="reference", target={Organization.class } )
3145  public static final String SP_CUSTODIAN = "custodian";
3146 /**
3147   * <b>Fluent Client</b> search parameter constant for <b>custodian</b>
3148   * <p>
3149   * Description: <b>Organization which maintains the document</b><br>
3150   * Type: <b>reference</b><br>
3151   * Path: <b>DocumentReference.custodian</b><br>
3152   * </p>
3153   */
3154  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam CUSTODIAN = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_CUSTODIAN);
3155
3156/**
3157   * Constant for fluent queries to be used to add include statements. Specifies
3158   * the path value of "<b>DocumentReference:custodian</b>".
3159   */
3160  public static final ca.uhn.fhir.model.api.Include INCLUDE_CUSTODIAN = new ca.uhn.fhir.model.api.Include("DocumentReference:custodian").toLocked();
3161
3162 /**
3163   * Search parameter: <b>description</b>
3164   * <p>
3165   * Description: <b>Human-readable description</b><br>
3166   * Type: <b>string</b><br>
3167   * Path: <b>DocumentReference.description</b><br>
3168   * </p>
3169   */
3170  @SearchParamDefinition(name="description", path="DocumentReference.description", description="Human-readable description", type="string" )
3171  public static final String SP_DESCRIPTION = "description";
3172 /**
3173   * <b>Fluent Client</b> search parameter constant for <b>description</b>
3174   * <p>
3175   * Description: <b>Human-readable description</b><br>
3176   * Type: <b>string</b><br>
3177   * Path: <b>DocumentReference.description</b><br>
3178   * </p>
3179   */
3180  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
3181
3182 /**
3183   * Search parameter: <b>doc-status</b>
3184   * <p>
3185   * Description: <b>preliminary | final | amended | entered-in-error</b><br>
3186   * Type: <b>token</b><br>
3187   * Path: <b>DocumentReference.docStatus</b><br>
3188   * </p>
3189   */
3190  @SearchParamDefinition(name="doc-status", path="DocumentReference.docStatus", description="preliminary | final | amended | entered-in-error", type="token" )
3191  public static final String SP_DOC_STATUS = "doc-status";
3192 /**
3193   * <b>Fluent Client</b> search parameter constant for <b>doc-status</b>
3194   * <p>
3195   * Description: <b>preliminary | final | amended | entered-in-error</b><br>
3196   * Type: <b>token</b><br>
3197   * Path: <b>DocumentReference.docStatus</b><br>
3198   * </p>
3199   */
3200  public static final ca.uhn.fhir.rest.gclient.TokenClientParam DOC_STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_DOC_STATUS);
3201
3202 /**
3203   * Search parameter: <b>event-code</b>
3204   * <p>
3205   * Description: <b>Main clinical acts documented</b><br>
3206   * Type: <b>token</b><br>
3207   * Path: <b>DocumentReference.event.concept</b><br>
3208   * </p>
3209   */
3210  @SearchParamDefinition(name="event-code", path="DocumentReference.event.concept", description="Main clinical acts documented", type="token" )
3211  public static final String SP_EVENT_CODE = "event-code";
3212 /**
3213   * <b>Fluent Client</b> search parameter constant for <b>event-code</b>
3214   * <p>
3215   * Description: <b>Main clinical acts documented</b><br>
3216   * Type: <b>token</b><br>
3217   * Path: <b>DocumentReference.event.concept</b><br>
3218   * </p>
3219   */
3220  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EVENT_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EVENT_CODE);
3221
3222 /**
3223   * Search parameter: <b>event-reference</b>
3224   * <p>
3225   * Description: <b>Main clinical acts documented</b><br>
3226   * Type: <b>reference</b><br>
3227   * Path: <b>DocumentReference.event.reference</b><br>
3228   * </p>
3229   */
3230  @SearchParamDefinition(name="event-reference", path="DocumentReference.event.reference", description="Main clinical acts documented", 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 } )
3231  public static final String SP_EVENT_REFERENCE = "event-reference";
3232 /**
3233   * <b>Fluent Client</b> search parameter constant for <b>event-reference</b>
3234   * <p>
3235   * Description: <b>Main clinical acts documented</b><br>
3236   * Type: <b>reference</b><br>
3237   * Path: <b>DocumentReference.event.reference</b><br>
3238   * </p>
3239   */
3240  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam EVENT_REFERENCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_EVENT_REFERENCE);
3241
3242/**
3243   * Constant for fluent queries to be used to add include statements. Specifies
3244   * the path value of "<b>DocumentReference:event-reference</b>".
3245   */
3246  public static final ca.uhn.fhir.model.api.Include INCLUDE_EVENT_REFERENCE = new ca.uhn.fhir.model.api.Include("DocumentReference:event-reference").toLocked();
3247
3248 /**
3249   * Search parameter: <b>facility</b>
3250   * <p>
3251   * Description: <b>Kind of facility where patient was seen</b><br>
3252   * Type: <b>token</b><br>
3253   * Path: <b>DocumentReference.facilityType</b><br>
3254   * </p>
3255   */
3256  @SearchParamDefinition(name="facility", path="DocumentReference.facilityType", description="Kind of facility where patient was seen", type="token" )
3257  public static final String SP_FACILITY = "facility";
3258 /**
3259   * <b>Fluent Client</b> search parameter constant for <b>facility</b>
3260   * <p>
3261   * Description: <b>Kind of facility where patient was seen</b><br>
3262   * Type: <b>token</b><br>
3263   * Path: <b>DocumentReference.facilityType</b><br>
3264   * </p>
3265   */
3266  public static final ca.uhn.fhir.rest.gclient.TokenClientParam FACILITY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_FACILITY);
3267
3268 /**
3269   * Search parameter: <b>format-canonical</b>
3270   * <p>
3271   * Description: <b>Profile canonical content rules for the document</b><br>
3272   * Type: <b>reference</b><br>
3273   * Path: <b>(DocumentReference.content.profile.value.ofType(canonical))</b><br>
3274   * </p>
3275   */
3276  @SearchParamDefinition(name="format-canonical", path="(DocumentReference.content.profile.value.ofType(canonical))", description="Profile canonical content rules for the document", type="reference", target={ActivityDefinition.class, ActorDefinition.class, CapabilityStatement.class, ChargeItemDefinition.class, Citation.class, CodeSystem.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, ConditionDefinition.class, Contract.class, Device.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, GraphDefinition.class, ImplementationGuide.class, Library.class, Measure.class, MessageDefinition.class, NamingSystem.class, ObservationDefinition.class, OperationDefinition.class, PlanDefinition.class, Questionnaire.class, Requirements.class, ResearchStudy.class, SearchParameter.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, SubscriptionTopic.class, TerminologyCapabilities.class, TestPlan.class, TestScript.class, ValueSet.class } )
3277  public static final String SP_FORMAT_CANONICAL = "format-canonical";
3278 /**
3279   * <b>Fluent Client</b> search parameter constant for <b>format-canonical</b>
3280   * <p>
3281   * Description: <b>Profile canonical content rules for the document</b><br>
3282   * Type: <b>reference</b><br>
3283   * Path: <b>(DocumentReference.content.profile.value.ofType(canonical))</b><br>
3284   * </p>
3285   */
3286  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam FORMAT_CANONICAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_FORMAT_CANONICAL);
3287
3288/**
3289   * Constant for fluent queries to be used to add include statements. Specifies
3290   * the path value of "<b>DocumentReference:format-canonical</b>".
3291   */
3292  public static final ca.uhn.fhir.model.api.Include INCLUDE_FORMAT_CANONICAL = new ca.uhn.fhir.model.api.Include("DocumentReference:format-canonical").toLocked();
3293
3294 /**
3295   * Search parameter: <b>format-code</b>
3296   * <p>
3297   * Description: <b>Format code content rules for the document</b><br>
3298   * Type: <b>token</b><br>
3299   * Path: <b>(DocumentReference.content.profile.value.ofType(Coding))</b><br>
3300   * </p>
3301   */
3302  @SearchParamDefinition(name="format-code", path="(DocumentReference.content.profile.value.ofType(Coding))", description="Format code content rules for the document", type="token" )
3303  public static final String SP_FORMAT_CODE = "format-code";
3304 /**
3305   * <b>Fluent Client</b> search parameter constant for <b>format-code</b>
3306   * <p>
3307   * Description: <b>Format code content rules for the document</b><br>
3308   * Type: <b>token</b><br>
3309   * Path: <b>(DocumentReference.content.profile.value.ofType(Coding))</b><br>
3310   * </p>
3311   */
3312  public static final ca.uhn.fhir.rest.gclient.TokenClientParam FORMAT_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_FORMAT_CODE);
3313
3314 /**
3315   * Search parameter: <b>format-uri</b>
3316   * <p>
3317   * Description: <b>Profile URI content rules for the document</b><br>
3318   * Type: <b>uri</b><br>
3319   * Path: <b>(DocumentReference.content.profile.value.ofType(uri))</b><br>
3320   * </p>
3321   */
3322  @SearchParamDefinition(name="format-uri", path="(DocumentReference.content.profile.value.ofType(uri))", description="Profile URI content rules for the document", type="uri" )
3323  public static final String SP_FORMAT_URI = "format-uri";
3324 /**
3325   * <b>Fluent Client</b> search parameter constant for <b>format-uri</b>
3326   * <p>
3327   * Description: <b>Profile URI content rules for the document</b><br>
3328   * Type: <b>uri</b><br>
3329   * Path: <b>(DocumentReference.content.profile.value.ofType(uri))</b><br>
3330   * </p>
3331   */
3332  public static final ca.uhn.fhir.rest.gclient.UriClientParam FORMAT_URI = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_FORMAT_URI);
3333
3334 /**
3335   * Search parameter: <b>language</b>
3336   * <p>
3337   * Description: <b>Human language of the content (BCP-47)</b><br>
3338   * Type: <b>token</b><br>
3339   * Path: <b>DocumentReference.content.attachment.language</b><br>
3340   * </p>
3341   */
3342  @SearchParamDefinition(name="language", path="DocumentReference.content.attachment.language", description="Human language of the content (BCP-47)", type="token" )
3343  public static final String SP_LANGUAGE = "language";
3344 /**
3345   * <b>Fluent Client</b> search parameter constant for <b>language</b>
3346   * <p>
3347   * Description: <b>Human language of the content (BCP-47)</b><br>
3348   * Type: <b>token</b><br>
3349   * Path: <b>DocumentReference.content.attachment.language</b><br>
3350   * </p>
3351   */
3352  public static final ca.uhn.fhir.rest.gclient.TokenClientParam LANGUAGE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_LANGUAGE);
3353
3354 /**
3355   * Search parameter: <b>location</b>
3356   * <p>
3357   * Description: <b>Uri where the data can be found</b><br>
3358   * Type: <b>uri</b><br>
3359   * Path: <b>DocumentReference.content.attachment.url</b><br>
3360   * </p>
3361   */
3362  @SearchParamDefinition(name="location", path="DocumentReference.content.attachment.url", description="Uri where the data can be found", type="uri" )
3363  public static final String SP_LOCATION = "location";
3364 /**
3365   * <b>Fluent Client</b> search parameter constant for <b>location</b>
3366   * <p>
3367   * Description: <b>Uri where the data can be found</b><br>
3368   * Type: <b>uri</b><br>
3369   * Path: <b>DocumentReference.content.attachment.url</b><br>
3370   * </p>
3371   */
3372  public static final ca.uhn.fhir.rest.gclient.UriClientParam LOCATION = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_LOCATION);
3373
3374 /**
3375   * Search parameter: <b>modality</b>
3376   * <p>
3377   * Description: <b>The modality used</b><br>
3378   * Type: <b>token</b><br>
3379   * Path: <b>DocumentReference.modality</b><br>
3380   * </p>
3381   */
3382  @SearchParamDefinition(name="modality", path="DocumentReference.modality", description="The modality used", type="token" )
3383  public static final String SP_MODALITY = "modality";
3384 /**
3385   * <b>Fluent Client</b> search parameter constant for <b>modality</b>
3386   * <p>
3387   * Description: <b>The modality used</b><br>
3388   * Type: <b>token</b><br>
3389   * Path: <b>DocumentReference.modality</b><br>
3390   * </p>
3391   */
3392  public static final ca.uhn.fhir.rest.gclient.TokenClientParam MODALITY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_MODALITY);
3393
3394 /**
3395   * Search parameter: <b>period</b>
3396   * <p>
3397   * Description: <b>Time of service that is being documented</b><br>
3398   * Type: <b>date</b><br>
3399   * Path: <b>DocumentReference.period</b><br>
3400   * </p>
3401   */
3402  @SearchParamDefinition(name="period", path="DocumentReference.period", description="Time of service that is being documented", type="date" )
3403  public static final String SP_PERIOD = "period";
3404 /**
3405   * <b>Fluent Client</b> search parameter constant for <b>period</b>
3406   * <p>
3407   * Description: <b>Time of service that is being documented</b><br>
3408   * Type: <b>date</b><br>
3409   * Path: <b>DocumentReference.period</b><br>
3410   * </p>
3411   */
3412  public static final ca.uhn.fhir.rest.gclient.DateClientParam PERIOD = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_PERIOD);
3413
3414 /**
3415   * Search parameter: <b>relatesto</b>
3416   * <p>
3417   * Description: <b>Target of the relationship</b><br>
3418   * Type: <b>reference</b><br>
3419   * Path: <b>DocumentReference.relatesTo.target</b><br>
3420   * </p>
3421   */
3422  @SearchParamDefinition(name="relatesto", path="DocumentReference.relatesTo.target", description="Target of the relationship", type="reference", target={DocumentReference.class } )
3423  public static final String SP_RELATESTO = "relatesto";
3424 /**
3425   * <b>Fluent Client</b> search parameter constant for <b>relatesto</b>
3426   * <p>
3427   * Description: <b>Target of the relationship</b><br>
3428   * Type: <b>reference</b><br>
3429   * Path: <b>DocumentReference.relatesTo.target</b><br>
3430   * </p>
3431   */
3432  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam RELATESTO = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_RELATESTO);
3433
3434/**
3435   * Constant for fluent queries to be used to add include statements. Specifies
3436   * the path value of "<b>DocumentReference:relatesto</b>".
3437   */
3438  public static final ca.uhn.fhir.model.api.Include INCLUDE_RELATESTO = new ca.uhn.fhir.model.api.Include("DocumentReference:relatesto").toLocked();
3439
3440 /**
3441   * Search parameter: <b>relation</b>
3442   * <p>
3443   * Description: <b>replaces | transforms | signs | appends</b><br>
3444   * Type: <b>token</b><br>
3445   * Path: <b>DocumentReference.relatesTo.code</b><br>
3446   * </p>
3447   */
3448  @SearchParamDefinition(name="relation", path="DocumentReference.relatesTo.code", description="replaces | transforms | signs | appends", type="token" )
3449  public static final String SP_RELATION = "relation";
3450 /**
3451   * <b>Fluent Client</b> search parameter constant for <b>relation</b>
3452   * <p>
3453   * Description: <b>replaces | transforms | signs | appends</b><br>
3454   * Type: <b>token</b><br>
3455   * Path: <b>DocumentReference.relatesTo.code</b><br>
3456   * </p>
3457   */
3458  public static final ca.uhn.fhir.rest.gclient.TokenClientParam RELATION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_RELATION);
3459
3460 /**
3461   * Search parameter: <b>relationship</b>
3462   * <p>
3463   * Description: <b>Combination of relation and relatesTo</b><br>
3464   * Type: <b>composite</b><br>
3465   * Path: <b>DocumentReference.relatesTo</b><br>
3466   * </p>
3467   */
3468  @SearchParamDefinition(name="relationship", path="DocumentReference.relatesTo", description="Combination of relation and relatesTo", type="composite", compositeOf={"relatesto", "relation"} )
3469  public static final String SP_RELATIONSHIP = "relationship";
3470 /**
3471   * <b>Fluent Client</b> search parameter constant for <b>relationship</b>
3472   * <p>
3473   * Description: <b>Combination of relation and relatesTo</b><br>
3474   * Type: <b>composite</b><br>
3475   * Path: <b>DocumentReference.relatesTo</b><br>
3476   * </p>
3477   */
3478  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.ReferenceClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam> RELATIONSHIP = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.ReferenceClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam>(SP_RELATIONSHIP);
3479
3480 /**
3481   * Search parameter: <b>security-label</b>
3482   * <p>
3483   * Description: <b>Document security-tags</b><br>
3484   * Type: <b>token</b><br>
3485   * Path: <b>DocumentReference.securityLabel</b><br>
3486   * </p>
3487   */
3488  @SearchParamDefinition(name="security-label", path="DocumentReference.securityLabel", description="Document security-tags", type="token" )
3489  public static final String SP_SECURITY_LABEL = "security-label";
3490 /**
3491   * <b>Fluent Client</b> search parameter constant for <b>security-label</b>
3492   * <p>
3493   * Description: <b>Document security-tags</b><br>
3494   * Type: <b>token</b><br>
3495   * Path: <b>DocumentReference.securityLabel</b><br>
3496   * </p>
3497   */
3498  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SECURITY_LABEL = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SECURITY_LABEL);
3499
3500 /**
3501   * Search parameter: <b>setting</b>
3502   * <p>
3503   * Description: <b>Additional details about where the content was created (e.g. clinical specialty)</b><br>
3504   * Type: <b>token</b><br>
3505   * Path: <b>DocumentReference.practiceSetting</b><br>
3506   * </p>
3507   */
3508  @SearchParamDefinition(name="setting", path="DocumentReference.practiceSetting", description="Additional details about where the content was created (e.g. clinical specialty)", type="token" )
3509  public static final String SP_SETTING = "setting";
3510 /**
3511   * <b>Fluent Client</b> search parameter constant for <b>setting</b>
3512   * <p>
3513   * Description: <b>Additional details about where the content was created (e.g. clinical specialty)</b><br>
3514   * Type: <b>token</b><br>
3515   * Path: <b>DocumentReference.practiceSetting</b><br>
3516   * </p>
3517   */
3518  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SETTING = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SETTING);
3519
3520 /**
3521   * Search parameter: <b>status</b>
3522   * <p>
3523   * Description: <b>current | superseded | entered-in-error</b><br>
3524   * Type: <b>token</b><br>
3525   * Path: <b>DocumentReference.status</b><br>
3526   * </p>
3527   */
3528  @SearchParamDefinition(name="status", path="DocumentReference.status", description="current | superseded | entered-in-error", type="token" )
3529  public static final String SP_STATUS = "status";
3530 /**
3531   * <b>Fluent Client</b> search parameter constant for <b>status</b>
3532   * <p>
3533   * Description: <b>current | superseded | entered-in-error</b><br>
3534   * Type: <b>token</b><br>
3535   * Path: <b>DocumentReference.status</b><br>
3536   * </p>
3537   */
3538  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
3539
3540 /**
3541   * Search parameter: <b>subject</b>
3542   * <p>
3543   * Description: <b>Who/what is the subject of the document</b><br>
3544   * Type: <b>reference</b><br>
3545   * Path: <b>DocumentReference.subject</b><br>
3546   * </p>
3547   */
3548  @SearchParamDefinition(name="subject", path="DocumentReference.subject", description="Who/what is the subject of the document", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, 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 } )
3549  public static final String SP_SUBJECT = "subject";
3550 /**
3551   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
3552   * <p>
3553   * Description: <b>Who/what is the subject of the document</b><br>
3554   * Type: <b>reference</b><br>
3555   * Path: <b>DocumentReference.subject</b><br>
3556   * </p>
3557   */
3558  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
3559
3560/**
3561   * Constant for fluent queries to be used to add include statements. Specifies
3562   * the path value of "<b>DocumentReference:subject</b>".
3563   */
3564  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("DocumentReference:subject").toLocked();
3565
3566 /**
3567   * Search parameter: <b>version</b>
3568   * <p>
3569   * Description: <b>The business version identifier</b><br>
3570   * Type: <b>string</b><br>
3571   * Path: <b>DocumentReference.version</b><br>
3572   * </p>
3573   */
3574  @SearchParamDefinition(name="version", path="DocumentReference.version", description="The business version identifier", type="string" )
3575  public static final String SP_VERSION = "version";
3576 /**
3577   * <b>Fluent Client</b> search parameter constant for <b>version</b>
3578   * <p>
3579   * Description: <b>The business version identifier</b><br>
3580   * Type: <b>string</b><br>
3581   * Path: <b>DocumentReference.version</b><br>
3582   * </p>
3583   */
3584  public static final ca.uhn.fhir.rest.gclient.StringClientParam VERSION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_VERSION);
3585
3586 /**
3587   * Search parameter: <b>date</b>
3588   * <p>
3589   * Description: <b>Multiple Resources: 
3590
3591* [AdverseEvent](adverseevent.html): When the event occurred
3592* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
3593* [Appointment](appointment.html): Appointment date/time.
3594* [AuditEvent](auditevent.html): Time when the event was recorded
3595* [CarePlan](careplan.html): Time period plan covers
3596* [CareTeam](careteam.html): A date within the coverage time period.
3597* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
3598* [Composition](composition.html): Composition editing time
3599* [Consent](consent.html): When consent was agreed to
3600* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
3601* [DocumentReference](documentreference.html): When this document reference was created
3602* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
3603* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
3604* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
3605* [Flag](flag.html): Time period when flag is active
3606* [Immunization](immunization.html): Vaccination  (non)-Administration Date
3607* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated
3608* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created
3609* [Invoice](invoice.html): Invoice date / posting date
3610* [List](list.html): When the list was prepared
3611* [MeasureReport](measurereport.html): The date of the measure report
3612* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication
3613* [Observation](observation.html): Clinically relevant time/time-period for observation
3614* [Procedure](procedure.html): When the procedure occurred or is occurring
3615* [ResearchSubject](researchsubject.html): Start and end of participation
3616* [RiskAssessment](riskassessment.html): When was assessment made?
3617* [SupplyRequest](supplyrequest.html): When the request was made
3618</b><br>
3619   * Type: <b>date</b><br>
3620   * 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>
3621   * </p>
3622   */
3623  @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" )
3624  public static final String SP_DATE = "date";
3625 /**
3626   * <b>Fluent Client</b> search parameter constant for <b>date</b>
3627   * <p>
3628   * Description: <b>Multiple Resources: 
3629
3630* [AdverseEvent](adverseevent.html): When the event occurred
3631* [AllergyIntolerance](allergyintolerance.html): Date first version of the resource instance was recorded
3632* [Appointment](appointment.html): Appointment date/time.
3633* [AuditEvent](auditevent.html): Time when the event was recorded
3634* [CarePlan](careplan.html): Time period plan covers
3635* [CareTeam](careteam.html): A date within the coverage time period.
3636* [ClinicalImpression](clinicalimpression.html): When the assessment was documented
3637* [Composition](composition.html): Composition editing time
3638* [Consent](consent.html): When consent was agreed to
3639* [DiagnosticReport](diagnosticreport.html): The clinically relevant time of the report
3640* [DocumentReference](documentreference.html): When this document reference was created
3641* [Encounter](encounter.html): A date within the actualPeriod the Encounter lasted
3642* [EpisodeOfCare](episodeofcare.html): The provided date search value falls within the episode of care's period
3643* [FamilyMemberHistory](familymemberhistory.html): When history was recorded or last updated
3644* [Flag](flag.html): Time period when flag is active
3645* [Immunization](immunization.html): Vaccination  (non)-Administration Date
3646* [ImmunizationEvaluation](immunizationevaluation.html): Date the evaluation was generated
3647* [ImmunizationRecommendation](immunizationrecommendation.html): Date recommendation(s) created
3648* [Invoice](invoice.html): Invoice date / posting date
3649* [List](list.html): When the list was prepared
3650* [MeasureReport](measurereport.html): The date of the measure report
3651* [NutritionIntake](nutritionintake.html): Date when patient was taking (or not taking) the medication
3652* [Observation](observation.html): Clinically relevant time/time-period for observation
3653* [Procedure](procedure.html): When the procedure occurred or is occurring
3654* [ResearchSubject](researchsubject.html): Start and end of participation
3655* [RiskAssessment](riskassessment.html): When was assessment made?
3656* [SupplyRequest](supplyrequest.html): When the request was made
3657</b><br>
3658   * Type: <b>date</b><br>
3659   * 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>
3660   * </p>
3661   */
3662  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
3663
3664 /**
3665   * Search parameter: <b>identifier</b>
3666   * <p>
3667   * Description: <b>Multiple Resources: 
3668
3669* [Account](account.html): Account number
3670* [AdverseEvent](adverseevent.html): Business identifier for the event
3671* [AllergyIntolerance](allergyintolerance.html): External ids for this item
3672* [Appointment](appointment.html): An Identifier of the Appointment
3673* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
3674* [Basic](basic.html): Business identifier
3675* [BodyStructure](bodystructure.html): Bodystructure identifier
3676* [CarePlan](careplan.html): External Ids for this plan
3677* [CareTeam](careteam.html): External Ids for this team
3678* [ChargeItem](chargeitem.html): Business Identifier for item
3679* [Claim](claim.html): The primary identifier of the financial resource
3680* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
3681* [ClinicalImpression](clinicalimpression.html): Business identifier
3682* [Communication](communication.html): Unique identifier
3683* [CommunicationRequest](communicationrequest.html): Unique identifier
3684* [Composition](composition.html): Version-independent identifier for the Composition
3685* [Condition](condition.html): A unique identifier of the condition record
3686* [Consent](consent.html): Identifier for this record (external references)
3687* [Contract](contract.html): The identity of the contract
3688* [Coverage](coverage.html): The primary identifier of the insured and the coverage
3689* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
3690* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
3691* [DetectedIssue](detectedissue.html): Unique id for the detected issue
3692* [DeviceRequest](devicerequest.html): Business identifier for request/order
3693* [DeviceUsage](deviceusage.html): Search by identifier
3694* [DiagnosticReport](diagnosticreport.html): An identifier for the report
3695* [DocumentReference](documentreference.html): Identifier of the attachment binary
3696* [Encounter](encounter.html): Identifier(s) by which this encounter is known
3697* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
3698* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
3699* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
3700* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
3701* [Flag](flag.html): Business identifier
3702* [Goal](goal.html): External Ids for this goal
3703* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
3704* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
3705* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
3706* [Immunization](immunization.html): Business identifier
3707* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
3708* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
3709* [Invoice](invoice.html): Business Identifier for item
3710* [List](list.html): Business identifier
3711* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
3712* [Medication](medication.html): Returns medications with this external identifier
3713* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
3714* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
3715* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
3716* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
3717* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
3718* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
3719* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
3720* [Observation](observation.html): The unique id for a particular observation
3721* [Person](person.html): A person Identifier
3722* [Procedure](procedure.html): A unique identifier for a procedure
3723* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
3724* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
3725* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
3726* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
3727* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
3728* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
3729* [Specimen](specimen.html): The unique identifier associated with the specimen
3730* [SupplyDelivery](supplydelivery.html): External identifier
3731* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
3732* [Task](task.html): Search for a task instance by its business identifier
3733* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
3734</b><br>
3735   * Type: <b>token</b><br>
3736   * 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>
3737   * </p>
3738   */
3739  @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" )
3740  public static final String SP_IDENTIFIER = "identifier";
3741 /**
3742   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
3743   * <p>
3744   * Description: <b>Multiple Resources: 
3745
3746* [Account](account.html): Account number
3747* [AdverseEvent](adverseevent.html): Business identifier for the event
3748* [AllergyIntolerance](allergyintolerance.html): External ids for this item
3749* [Appointment](appointment.html): An Identifier of the Appointment
3750* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
3751* [Basic](basic.html): Business identifier
3752* [BodyStructure](bodystructure.html): Bodystructure identifier
3753* [CarePlan](careplan.html): External Ids for this plan
3754* [CareTeam](careteam.html): External Ids for this team
3755* [ChargeItem](chargeitem.html): Business Identifier for item
3756* [Claim](claim.html): The primary identifier of the financial resource
3757* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
3758* [ClinicalImpression](clinicalimpression.html): Business identifier
3759* [Communication](communication.html): Unique identifier
3760* [CommunicationRequest](communicationrequest.html): Unique identifier
3761* [Composition](composition.html): Version-independent identifier for the Composition
3762* [Condition](condition.html): A unique identifier of the condition record
3763* [Consent](consent.html): Identifier for this record (external references)
3764* [Contract](contract.html): The identity of the contract
3765* [Coverage](coverage.html): The primary identifier of the insured and the coverage
3766* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
3767* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
3768* [DetectedIssue](detectedissue.html): Unique id for the detected issue
3769* [DeviceRequest](devicerequest.html): Business identifier for request/order
3770* [DeviceUsage](deviceusage.html): Search by identifier
3771* [DiagnosticReport](diagnosticreport.html): An identifier for the report
3772* [DocumentReference](documentreference.html): Identifier of the attachment binary
3773* [Encounter](encounter.html): Identifier(s) by which this encounter is known
3774* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
3775* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
3776* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
3777* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
3778* [Flag](flag.html): Business identifier
3779* [Goal](goal.html): External Ids for this goal
3780* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
3781* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
3782* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
3783* [Immunization](immunization.html): Business identifier
3784* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
3785* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
3786* [Invoice](invoice.html): Business Identifier for item
3787* [List](list.html): Business identifier
3788* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
3789* [Medication](medication.html): Returns medications with this external identifier
3790* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
3791* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
3792* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
3793* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
3794* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
3795* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
3796* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
3797* [Observation](observation.html): The unique id for a particular observation
3798* [Person](person.html): A person Identifier
3799* [Procedure](procedure.html): A unique identifier for a procedure
3800* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
3801* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
3802* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
3803* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
3804* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
3805* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
3806* [Specimen](specimen.html): The unique identifier associated with the specimen
3807* [SupplyDelivery](supplydelivery.html): External identifier
3808* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
3809* [Task](task.html): Search for a task instance by its business identifier
3810* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
3811</b><br>
3812   * Type: <b>token</b><br>
3813   * 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>
3814   * </p>
3815   */
3816  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
3817
3818 /**
3819   * Search parameter: <b>patient</b>
3820   * <p>
3821   * Description: <b>Multiple Resources: 
3822
3823* [Account](account.html): The entity that caused the expenses
3824* [AdverseEvent](adverseevent.html): Subject impacted by event
3825* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
3826* [Appointment](appointment.html): One of the individuals of the appointment is this patient
3827* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
3828* [AuditEvent](auditevent.html): Where the activity involved patient data
3829* [Basic](basic.html): Identifies the focus of this resource
3830* [BodyStructure](bodystructure.html): Who this is about
3831* [CarePlan](careplan.html): Who the care plan is for
3832* [CareTeam](careteam.html): Who care team is for
3833* [ChargeItem](chargeitem.html): Individual service was done for/to
3834* [Claim](claim.html): Patient receiving the products or services
3835* [ClaimResponse](claimresponse.html): The subject of care
3836* [ClinicalImpression](clinicalimpression.html): Patient assessed
3837* [Communication](communication.html): Focus of message
3838* [CommunicationRequest](communicationrequest.html): Focus of message
3839* [Composition](composition.html): Who and/or what the composition is about
3840* [Condition](condition.html): Who has the condition?
3841* [Consent](consent.html): Who the consent applies to
3842* [Contract](contract.html): The identity of the subject of the contract (if a patient)
3843* [Coverage](coverage.html): Retrieve coverages for a patient
3844* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
3845* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
3846* [DetectedIssue](detectedissue.html): Associated patient
3847* [DeviceRequest](devicerequest.html): Individual the service is ordered for
3848* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
3849* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
3850* [DocumentReference](documentreference.html): Who/what is the subject of the document
3851* [Encounter](encounter.html): The patient present at the encounter
3852* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
3853* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
3854* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
3855* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
3856* [Flag](flag.html): The identity of a subject to list flags for
3857* [Goal](goal.html): Who this goal is intended for
3858* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
3859* [ImagingSelection](imagingselection.html): Who the study is about
3860* [ImagingStudy](imagingstudy.html): Who the study is about
3861* [Immunization](immunization.html): The patient for the vaccination record
3862* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
3863* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
3864* [Invoice](invoice.html): Recipient(s) of goods and services
3865* [List](list.html): If all resources have the same subject
3866* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
3867* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
3868* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
3869* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
3870* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
3871* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
3872* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
3873* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
3874* [Observation](observation.html): The subject that the observation is about (if patient)
3875* [Person](person.html): The Person links to this Patient
3876* [Procedure](procedure.html): Search by subject - a patient
3877* [Provenance](provenance.html): Where the activity involved patient data
3878* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
3879* [RelatedPerson](relatedperson.html): The patient this related person is related to
3880* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
3881* [ResearchSubject](researchsubject.html): Who or what is part of study
3882* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
3883* [ServiceRequest](servicerequest.html): Search by subject - a patient
3884* [Specimen](specimen.html): The patient the specimen comes from
3885* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
3886* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
3887* [Task](task.html): Search by patient
3888* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
3889</b><br>
3890   * Type: <b>reference</b><br>
3891   * 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>
3892   * </p>
3893   */
3894  @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 } )
3895  public static final String SP_PATIENT = "patient";
3896 /**
3897   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
3898   * <p>
3899   * Description: <b>Multiple Resources: 
3900
3901* [Account](account.html): The entity that caused the expenses
3902* [AdverseEvent](adverseevent.html): Subject impacted by event
3903* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
3904* [Appointment](appointment.html): One of the individuals of the appointment is this patient
3905* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
3906* [AuditEvent](auditevent.html): Where the activity involved patient data
3907* [Basic](basic.html): Identifies the focus of this resource
3908* [BodyStructure](bodystructure.html): Who this is about
3909* [CarePlan](careplan.html): Who the care plan is for
3910* [CareTeam](careteam.html): Who care team is for
3911* [ChargeItem](chargeitem.html): Individual service was done for/to
3912* [Claim](claim.html): Patient receiving the products or services
3913* [ClaimResponse](claimresponse.html): The subject of care
3914* [ClinicalImpression](clinicalimpression.html): Patient assessed
3915* [Communication](communication.html): Focus of message
3916* [CommunicationRequest](communicationrequest.html): Focus of message
3917* [Composition](composition.html): Who and/or what the composition is about
3918* [Condition](condition.html): Who has the condition?
3919* [Consent](consent.html): Who the consent applies to
3920* [Contract](contract.html): The identity of the subject of the contract (if a patient)
3921* [Coverage](coverage.html): Retrieve coverages for a patient
3922* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
3923* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
3924* [DetectedIssue](detectedissue.html): Associated patient
3925* [DeviceRequest](devicerequest.html): Individual the service is ordered for
3926* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
3927* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
3928* [DocumentReference](documentreference.html): Who/what is the subject of the document
3929* [Encounter](encounter.html): The patient present at the encounter
3930* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
3931* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
3932* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
3933* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
3934* [Flag](flag.html): The identity of a subject to list flags for
3935* [Goal](goal.html): Who this goal is intended for
3936* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
3937* [ImagingSelection](imagingselection.html): Who the study is about
3938* [ImagingStudy](imagingstudy.html): Who the study is about
3939* [Immunization](immunization.html): The patient for the vaccination record
3940* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
3941* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
3942* [Invoice](invoice.html): Recipient(s) of goods and services
3943* [List](list.html): If all resources have the same subject
3944* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
3945* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
3946* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
3947* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
3948* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
3949* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
3950* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
3951* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
3952* [Observation](observation.html): The subject that the observation is about (if patient)
3953* [Person](person.html): The Person links to this Patient
3954* [Procedure](procedure.html): Search by subject - a patient
3955* [Provenance](provenance.html): Where the activity involved patient data
3956* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
3957* [RelatedPerson](relatedperson.html): The patient this related person is related to
3958* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
3959* [ResearchSubject](researchsubject.html): Who or what is part of study
3960* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
3961* [ServiceRequest](servicerequest.html): Search by subject - a patient
3962* [Specimen](specimen.html): The patient the specimen comes from
3963* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
3964* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
3965* [Task](task.html): Search by patient
3966* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
3967</b><br>
3968   * Type: <b>reference</b><br>
3969   * 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>
3970   * </p>
3971   */
3972  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
3973
3974/**
3975   * Constant for fluent queries to be used to add include statements. Specifies
3976   * the path value of "<b>DocumentReference:patient</b>".
3977   */
3978  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("DocumentReference:patient").toLocked();
3979
3980 /**
3981   * Search parameter: <b>type</b>
3982   * <p>
3983   * Description: <b>Multiple Resources: 
3984
3985* [Account](account.html): E.g. patient, expense, depreciation
3986* [AllergyIntolerance](allergyintolerance.html): allergy | intolerance - Underlying mechanism (if known)
3987* [Composition](composition.html): Kind of composition (LOINC if possible)
3988* [Coverage](coverage.html): The kind of coverage (health plan, auto, Workers Compensation)
3989* [DocumentReference](documentreference.html): Kind of document (LOINC if possible)
3990* [Encounter](encounter.html): Specific type of encounter
3991* [EpisodeOfCare](episodeofcare.html): Type/class  - e.g. specialist referral, disease management
3992* [Invoice](invoice.html): Type of Invoice
3993* [MedicationDispense](medicationdispense.html): Returns dispenses of a specific type
3994* [MolecularSequence](molecularsequence.html): Amino Acid Sequence/ DNA Sequence / RNA Sequence
3995* [Specimen](specimen.html): The specimen type
3996</b><br>
3997   * Type: <b>token</b><br>
3998   * Path: <b>Account.type | AllergyIntolerance.type | Composition.type | Coverage.type | DocumentReference.type | Encounter.type | EpisodeOfCare.type | Invoice.type | MedicationDispense.type | MolecularSequence.type | Specimen.type</b><br>
3999   * </p>
4000   */
4001  @SearchParamDefinition(name="type", path="Account.type | AllergyIntolerance.type | Composition.type | Coverage.type | DocumentReference.type | Encounter.type | EpisodeOfCare.type | Invoice.type | MedicationDispense.type | MolecularSequence.type | Specimen.type", description="Multiple Resources: \r\n\r\n* [Account](account.html): E.g. patient, expense, depreciation\r\n* [AllergyIntolerance](allergyintolerance.html): allergy | intolerance - Underlying mechanism (if known)\r\n* [Composition](composition.html): Kind of composition (LOINC if possible)\r\n* [Coverage](coverage.html): The kind of coverage (health plan, auto, Workers Compensation)\r\n* [DocumentReference](documentreference.html): Kind of document (LOINC if possible)\r\n* [Encounter](encounter.html): Specific type of encounter\r\n* [EpisodeOfCare](episodeofcare.html): Type/class  - e.g. specialist referral, disease management\r\n* [Invoice](invoice.html): Type of Invoice\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses of a specific type\r\n* [MolecularSequence](molecularsequence.html): Amino Acid Sequence/ DNA Sequence / RNA Sequence\r\n* [Specimen](specimen.html): The specimen type\r\n", type="token" )
4002  public static final String SP_TYPE = "type";
4003 /**
4004   * <b>Fluent Client</b> search parameter constant for <b>type</b>
4005   * <p>
4006   * Description: <b>Multiple Resources: 
4007
4008* [Account](account.html): E.g. patient, expense, depreciation
4009* [AllergyIntolerance](allergyintolerance.html): allergy | intolerance - Underlying mechanism (if known)
4010* [Composition](composition.html): Kind of composition (LOINC if possible)
4011* [Coverage](coverage.html): The kind of coverage (health plan, auto, Workers Compensation)
4012* [DocumentReference](documentreference.html): Kind of document (LOINC if possible)
4013* [Encounter](encounter.html): Specific type of encounter
4014* [EpisodeOfCare](episodeofcare.html): Type/class  - e.g. specialist referral, disease management
4015* [Invoice](invoice.html): Type of Invoice
4016* [MedicationDispense](medicationdispense.html): Returns dispenses of a specific type
4017* [MolecularSequence](molecularsequence.html): Amino Acid Sequence/ DNA Sequence / RNA Sequence
4018* [Specimen](specimen.html): The specimen type
4019</b><br>
4020   * Type: <b>token</b><br>
4021   * Path: <b>Account.type | AllergyIntolerance.type | Composition.type | Coverage.type | DocumentReference.type | Encounter.type | EpisodeOfCare.type | Invoice.type | MedicationDispense.type | MolecularSequence.type | Specimen.type</b><br>
4022   * </p>
4023   */
4024  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TYPE);
4025
4026
4027}
4028