001package org.hl7.fhir.r4b.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 Fri, Dec 31, 2021 05:58+1100 for FHIR v4.3.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r4b.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. Provides metadata about the document so that the document can be discovered and managed. The scope of a document is any seralized object with a mime-type, so includes formal patient centric documents (CDA), cliical notes, scanned paper, and non-patient specific documents like policy text.
052 */
053@ResourceDef(name="DocumentReference", profile="http://hl7.org/fhir/StructureDefinition/DocumentReference")
054public class DocumentReference extends DomainResource {
055
056    @Block()
057    public static class DocumentReferenceRelatesToComponent extends BackboneElement implements IBaseBackboneElement {
058        /**
059         * The type of relationship that this document has with anther document.
060         */
061        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
062        @Description(shortDefinition="replaces | transforms | signs | appends", formalDefinition="The type of relationship that this document has with anther document." )
063        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/document-relationship-type")
064        protected Enumeration<DocumentRelationshipType> code;
065
066        /**
067         * The target document of this relationship.
068         */
069        @Child(name = "target", type = {DocumentReference.class}, order=2, min=1, max=1, modifier=false, summary=true)
070        @Description(shortDefinition="Target of the relationship", formalDefinition="The target document of this relationship." )
071        protected Reference target;
072
073        private static final long serialVersionUID = 1212070475L;
074
075    /**
076     * Constructor
077     */
078      public DocumentReferenceRelatesToComponent() {
079        super();
080      }
081
082    /**
083     * Constructor
084     */
085      public DocumentReferenceRelatesToComponent(DocumentRelationshipType code, Reference target) {
086        super();
087        this.setCode(code);
088        this.setTarget(target);
089      }
090
091        /**
092         * @return {@link #code} (The type of relationship that this document has with anther document.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
093         */
094        public Enumeration<DocumentRelationshipType> getCodeElement() { 
095          if (this.code == null)
096            if (Configuration.errorOnAutoCreate())
097              throw new Error("Attempt to auto-create DocumentReferenceRelatesToComponent.code");
098            else if (Configuration.doAutoCreate())
099              this.code = new Enumeration<DocumentRelationshipType>(new DocumentRelationshipTypeEnumFactory()); // bb
100          return this.code;
101        }
102
103        public boolean hasCodeElement() { 
104          return this.code != null && !this.code.isEmpty();
105        }
106
107        public boolean hasCode() { 
108          return this.code != null && !this.code.isEmpty();
109        }
110
111        /**
112         * @param value {@link #code} (The type of relationship that this document has with anther document.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
113         */
114        public DocumentReferenceRelatesToComponent setCodeElement(Enumeration<DocumentRelationshipType> value) { 
115          this.code = value;
116          return this;
117        }
118
119        /**
120         * @return The type of relationship that this document has with anther document.
121         */
122        public DocumentRelationshipType getCode() { 
123          return this.code == null ? null : this.code.getValue();
124        }
125
126        /**
127         * @param value The type of relationship that this document has with anther document.
128         */
129        public DocumentReferenceRelatesToComponent setCode(DocumentRelationshipType value) { 
130            if (this.code == null)
131              this.code = new Enumeration<DocumentRelationshipType>(new DocumentRelationshipTypeEnumFactory());
132            this.code.setValue(value);
133          return this;
134        }
135
136        /**
137         * @return {@link #target} (The target document of this relationship.)
138         */
139        public Reference getTarget() { 
140          if (this.target == null)
141            if (Configuration.errorOnAutoCreate())
142              throw new Error("Attempt to auto-create DocumentReferenceRelatesToComponent.target");
143            else if (Configuration.doAutoCreate())
144              this.target = new Reference(); // cc
145          return this.target;
146        }
147
148        public boolean hasTarget() { 
149          return this.target != null && !this.target.isEmpty();
150        }
151
152        /**
153         * @param value {@link #target} (The target document of this relationship.)
154         */
155        public DocumentReferenceRelatesToComponent setTarget(Reference value) { 
156          this.target = value;
157          return this;
158        }
159
160        protected void listChildren(List<Property> children) {
161          super.listChildren(children);
162          children.add(new Property("code", "code", "The type of relationship that this document has with anther document.", 0, 1, code));
163          children.add(new Property("target", "Reference(DocumentReference)", "The target document of this relationship.", 0, 1, target));
164        }
165
166        @Override
167        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
168          switch (_hash) {
169          case 3059181: /*code*/  return new Property("code", "code", "The type of relationship that this document has with anther document.", 0, 1, code);
170          case -880905839: /*target*/  return new Property("target", "Reference(DocumentReference)", "The target document of this relationship.", 0, 1, target);
171          default: return super.getNamedProperty(_hash, _name, _checkValid);
172          }
173
174        }
175
176      @Override
177      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
178        switch (hash) {
179        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // Enumeration<DocumentRelationshipType>
180        case -880905839: /*target*/ return this.target == null ? new Base[0] : new Base[] {this.target}; // Reference
181        default: return super.getProperty(hash, name, checkValid);
182        }
183
184      }
185
186      @Override
187      public Base setProperty(int hash, String name, Base value) throws FHIRException {
188        switch (hash) {
189        case 3059181: // code
190          value = new DocumentRelationshipTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
191          this.code = (Enumeration) value; // Enumeration<DocumentRelationshipType>
192          return value;
193        case -880905839: // target
194          this.target = TypeConvertor.castToReference(value); // Reference
195          return value;
196        default: return super.setProperty(hash, name, value);
197        }
198
199      }
200
201      @Override
202      public Base setProperty(String name, Base value) throws FHIRException {
203        if (name.equals("code")) {
204          value = new DocumentRelationshipTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
205          this.code = (Enumeration) value; // Enumeration<DocumentRelationshipType>
206        } else if (name.equals("target")) {
207          this.target = TypeConvertor.castToReference(value); // Reference
208        } else
209          return super.setProperty(name, value);
210        return value;
211      }
212
213      @Override
214      public Base makeProperty(int hash, String name) throws FHIRException {
215        switch (hash) {
216        case 3059181:  return getCodeElement();
217        case -880905839:  return getTarget();
218        default: return super.makeProperty(hash, name);
219        }
220
221      }
222
223      @Override
224      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
225        switch (hash) {
226        case 3059181: /*code*/ return new String[] {"code"};
227        case -880905839: /*target*/ return new String[] {"Reference"};
228        default: return super.getTypesForProperty(hash, name);
229        }
230
231      }
232
233      @Override
234      public Base addChild(String name) throws FHIRException {
235        if (name.equals("code")) {
236          throw new FHIRException("Cannot call addChild on a primitive type DocumentReference.relatesTo.code");
237        }
238        else if (name.equals("target")) {
239          this.target = new Reference();
240          return this.target;
241        }
242        else
243          return super.addChild(name);
244      }
245
246      public DocumentReferenceRelatesToComponent copy() {
247        DocumentReferenceRelatesToComponent dst = new DocumentReferenceRelatesToComponent();
248        copyValues(dst);
249        return dst;
250      }
251
252      public void copyValues(DocumentReferenceRelatesToComponent dst) {
253        super.copyValues(dst);
254        dst.code = code == null ? null : code.copy();
255        dst.target = target == null ? null : target.copy();
256      }
257
258      @Override
259      public boolean equalsDeep(Base other_) {
260        if (!super.equalsDeep(other_))
261          return false;
262        if (!(other_ instanceof DocumentReferenceRelatesToComponent))
263          return false;
264        DocumentReferenceRelatesToComponent o = (DocumentReferenceRelatesToComponent) other_;
265        return compareDeep(code, o.code, true) && compareDeep(target, o.target, true);
266      }
267
268      @Override
269      public boolean equalsShallow(Base other_) {
270        if (!super.equalsShallow(other_))
271          return false;
272        if (!(other_ instanceof DocumentReferenceRelatesToComponent))
273          return false;
274        DocumentReferenceRelatesToComponent o = (DocumentReferenceRelatesToComponent) other_;
275        return compareValues(code, o.code, true);
276      }
277
278      public boolean isEmpty() {
279        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, target);
280      }
281
282  public String fhirType() {
283    return "DocumentReference.relatesTo";
284
285  }
286
287  }
288
289    @Block()
290    public static class DocumentReferenceContentComponent extends BackboneElement implements IBaseBackboneElement {
291        /**
292         * The document or URL of the document along with critical metadata to prove content has integrity.
293         */
294        @Child(name = "attachment", type = {Attachment.class}, order=1, min=1, max=1, modifier=false, summary=true)
295        @Description(shortDefinition="Where to access the document", formalDefinition="The document or URL of the document along with critical metadata to prove content has integrity." )
296        protected Attachment attachment;
297
298        /**
299         * An identifier of the document encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType.
300         */
301        @Child(name = "format", type = {Coding.class}, order=2, min=0, max=1, modifier=false, summary=true)
302        @Description(shortDefinition="Format/content rules for the document", formalDefinition="An identifier of the document encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType." )
303        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/formatcodes")
304        protected Coding format;
305
306        private static final long serialVersionUID = -1313860217L;
307
308    /**
309     * Constructor
310     */
311      public DocumentReferenceContentComponent() {
312        super();
313      }
314
315    /**
316     * Constructor
317     */
318      public DocumentReferenceContentComponent(Attachment attachment) {
319        super();
320        this.setAttachment(attachment);
321      }
322
323        /**
324         * @return {@link #attachment} (The document or URL of the document along with critical metadata to prove content has integrity.)
325         */
326        public Attachment getAttachment() { 
327          if (this.attachment == null)
328            if (Configuration.errorOnAutoCreate())
329              throw new Error("Attempt to auto-create DocumentReferenceContentComponent.attachment");
330            else if (Configuration.doAutoCreate())
331              this.attachment = new Attachment(); // cc
332          return this.attachment;
333        }
334
335        public boolean hasAttachment() { 
336          return this.attachment != null && !this.attachment.isEmpty();
337        }
338
339        /**
340         * @param value {@link #attachment} (The document or URL of the document along with critical metadata to prove content has integrity.)
341         */
342        public DocumentReferenceContentComponent setAttachment(Attachment value) { 
343          this.attachment = value;
344          return this;
345        }
346
347        /**
348         * @return {@link #format} (An identifier of the document encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType.)
349         */
350        public Coding getFormat() { 
351          if (this.format == null)
352            if (Configuration.errorOnAutoCreate())
353              throw new Error("Attempt to auto-create DocumentReferenceContentComponent.format");
354            else if (Configuration.doAutoCreate())
355              this.format = new Coding(); // cc
356          return this.format;
357        }
358
359        public boolean hasFormat() { 
360          return this.format != null && !this.format.isEmpty();
361        }
362
363        /**
364         * @param value {@link #format} (An identifier of the document encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType.)
365         */
366        public DocumentReferenceContentComponent setFormat(Coding value) { 
367          this.format = value;
368          return this;
369        }
370
371        protected void listChildren(List<Property> children) {
372          super.listChildren(children);
373          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));
374          children.add(new Property("format", "Coding", "An identifier of the document encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType.", 0, 1, format));
375        }
376
377        @Override
378        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
379          switch (_hash) {
380          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);
381          case -1268779017: /*format*/  return new Property("format", "Coding", "An identifier of the document encoding, structure, and template that the document conforms to beyond the base format indicated in the mimeType.", 0, 1, format);
382          default: return super.getNamedProperty(_hash, _name, _checkValid);
383          }
384
385        }
386
387      @Override
388      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
389        switch (hash) {
390        case -1963501277: /*attachment*/ return this.attachment == null ? new Base[0] : new Base[] {this.attachment}; // Attachment
391        case -1268779017: /*format*/ return this.format == null ? new Base[0] : new Base[] {this.format}; // Coding
392        default: return super.getProperty(hash, name, checkValid);
393        }
394
395      }
396
397      @Override
398      public Base setProperty(int hash, String name, Base value) throws FHIRException {
399        switch (hash) {
400        case -1963501277: // attachment
401          this.attachment = TypeConvertor.castToAttachment(value); // Attachment
402          return value;
403        case -1268779017: // format
404          this.format = TypeConvertor.castToCoding(value); // Coding
405          return value;
406        default: return super.setProperty(hash, name, value);
407        }
408
409      }
410
411      @Override
412      public Base setProperty(String name, Base value) throws FHIRException {
413        if (name.equals("attachment")) {
414          this.attachment = TypeConvertor.castToAttachment(value); // Attachment
415        } else if (name.equals("format")) {
416          this.format = TypeConvertor.castToCoding(value); // Coding
417        } else
418          return super.setProperty(name, value);
419        return value;
420      }
421
422      @Override
423      public Base makeProperty(int hash, String name) throws FHIRException {
424        switch (hash) {
425        case -1963501277:  return getAttachment();
426        case -1268779017:  return getFormat();
427        default: return super.makeProperty(hash, name);
428        }
429
430      }
431
432      @Override
433      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
434        switch (hash) {
435        case -1963501277: /*attachment*/ return new String[] {"Attachment"};
436        case -1268779017: /*format*/ return new String[] {"Coding"};
437        default: return super.getTypesForProperty(hash, name);
438        }
439
440      }
441
442      @Override
443      public Base addChild(String name) throws FHIRException {
444        if (name.equals("attachment")) {
445          this.attachment = new Attachment();
446          return this.attachment;
447        }
448        else if (name.equals("format")) {
449          this.format = new Coding();
450          return this.format;
451        }
452        else
453          return super.addChild(name);
454      }
455
456      public DocumentReferenceContentComponent copy() {
457        DocumentReferenceContentComponent dst = new DocumentReferenceContentComponent();
458        copyValues(dst);
459        return dst;
460      }
461
462      public void copyValues(DocumentReferenceContentComponent dst) {
463        super.copyValues(dst);
464        dst.attachment = attachment == null ? null : attachment.copy();
465        dst.format = format == null ? null : format.copy();
466      }
467
468      @Override
469      public boolean equalsDeep(Base other_) {
470        if (!super.equalsDeep(other_))
471          return false;
472        if (!(other_ instanceof DocumentReferenceContentComponent))
473          return false;
474        DocumentReferenceContentComponent o = (DocumentReferenceContentComponent) other_;
475        return compareDeep(attachment, o.attachment, true) && compareDeep(format, o.format, true);
476      }
477
478      @Override
479      public boolean equalsShallow(Base other_) {
480        if (!super.equalsShallow(other_))
481          return false;
482        if (!(other_ instanceof DocumentReferenceContentComponent))
483          return false;
484        DocumentReferenceContentComponent o = (DocumentReferenceContentComponent) other_;
485        return true;
486      }
487
488      public boolean isEmpty() {
489        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(attachment, format);
490      }
491
492  public String fhirType() {
493    return "DocumentReference.content";
494
495  }
496
497  }
498
499    @Block()
500    public static class DocumentReferenceContextComponent extends BackboneElement implements IBaseBackboneElement {
501        /**
502         * Describes the clinical encounter or type of care that the document content is associated with.
503         */
504        @Child(name = "encounter", type = {Encounter.class, EpisodeOfCare.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
505        @Description(shortDefinition="Context of the document  content", formalDefinition="Describes the clinical encounter or type of care that the document content is associated with." )
506        protected List<Reference> encounter;
507
508        /**
509         * 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.
510         */
511        @Child(name = "event", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
512        @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." )
513        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/v3-ActCode")
514        protected List<CodeableConcept> event;
515
516        /**
517         * The time period over which the service that is described by the document was provided.
518         */
519        @Child(name = "period", type = {Period.class}, order=3, min=0, max=1, modifier=false, summary=true)
520        @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." )
521        protected Period period;
522
523        /**
524         * The kind of facility where the patient was seen.
525         */
526        @Child(name = "facilityType", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=false)
527        @Description(shortDefinition="Kind of facility where patient was seen", formalDefinition="The kind of facility where the patient was seen." )
528        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/c80-facilitycodes")
529        protected CodeableConcept facilityType;
530
531        /**
532         * This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty.
533         */
534        @Child(name = "practiceSetting", type = {CodeableConcept.class}, order=5, min=0, max=1, modifier=false, summary=false)
535        @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." )
536        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/c80-practice-codes")
537        protected CodeableConcept practiceSetting;
538
539        /**
540         * The Patient Information as known when the document was published. May be a reference to a version specific, or contained.
541         */
542        @Child(name = "sourcePatientInfo", type = {Patient.class}, order=6, min=0, max=1, modifier=false, summary=false)
543        @Description(shortDefinition="Patient demographics from source", formalDefinition="The Patient Information as known when the document was published. May be a reference to a version specific, or contained." )
544        protected Reference sourcePatientInfo;
545
546        /**
547         * Related identifiers or resources associated with the DocumentReference.
548         */
549        @Child(name = "related", type = {Reference.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
550        @Description(shortDefinition="Related identifiers or resources", formalDefinition="Related identifiers or resources associated with the DocumentReference." )
551        protected List<Reference> related;
552
553        private static final long serialVersionUID = -1982672562L;
554
555    /**
556     * Constructor
557     */
558      public DocumentReferenceContextComponent() {
559        super();
560      }
561
562        /**
563         * @return {@link #encounter} (Describes the clinical encounter or type of care that the document content is associated with.)
564         */
565        public List<Reference> getEncounter() { 
566          if (this.encounter == null)
567            this.encounter = new ArrayList<Reference>();
568          return this.encounter;
569        }
570
571        /**
572         * @return Returns a reference to <code>this</code> for easy method chaining
573         */
574        public DocumentReferenceContextComponent setEncounter(List<Reference> theEncounter) { 
575          this.encounter = theEncounter;
576          return this;
577        }
578
579        public boolean hasEncounter() { 
580          if (this.encounter == null)
581            return false;
582          for (Reference item : this.encounter)
583            if (!item.isEmpty())
584              return true;
585          return false;
586        }
587
588        public Reference addEncounter() { //3
589          Reference t = new Reference();
590          if (this.encounter == null)
591            this.encounter = new ArrayList<Reference>();
592          this.encounter.add(t);
593          return t;
594        }
595
596        public DocumentReferenceContextComponent addEncounter(Reference t) { //3
597          if (t == null)
598            return this;
599          if (this.encounter == null)
600            this.encounter = new ArrayList<Reference>();
601          this.encounter.add(t);
602          return this;
603        }
604
605        /**
606         * @return The first repetition of repeating field {@link #encounter}, creating it if it does not already exist {3}
607         */
608        public Reference getEncounterFirstRep() { 
609          if (getEncounter().isEmpty()) {
610            addEncounter();
611          }
612          return getEncounter().get(0);
613        }
614
615        /**
616         * @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.)
617         */
618        public List<CodeableConcept> getEvent() { 
619          if (this.event == null)
620            this.event = new ArrayList<CodeableConcept>();
621          return this.event;
622        }
623
624        /**
625         * @return Returns a reference to <code>this</code> for easy method chaining
626         */
627        public DocumentReferenceContextComponent setEvent(List<CodeableConcept> theEvent) { 
628          this.event = theEvent;
629          return this;
630        }
631
632        public boolean hasEvent() { 
633          if (this.event == null)
634            return false;
635          for (CodeableConcept item : this.event)
636            if (!item.isEmpty())
637              return true;
638          return false;
639        }
640
641        public CodeableConcept addEvent() { //3
642          CodeableConcept t = new CodeableConcept();
643          if (this.event == null)
644            this.event = new ArrayList<CodeableConcept>();
645          this.event.add(t);
646          return t;
647        }
648
649        public DocumentReferenceContextComponent addEvent(CodeableConcept t) { //3
650          if (t == null)
651            return this;
652          if (this.event == null)
653            this.event = new ArrayList<CodeableConcept>();
654          this.event.add(t);
655          return this;
656        }
657
658        /**
659         * @return The first repetition of repeating field {@link #event}, creating it if it does not already exist {3}
660         */
661        public CodeableConcept getEventFirstRep() { 
662          if (getEvent().isEmpty()) {
663            addEvent();
664          }
665          return getEvent().get(0);
666        }
667
668        /**
669         * @return {@link #period} (The time period over which the service that is described by the document was provided.)
670         */
671        public Period getPeriod() { 
672          if (this.period == null)
673            if (Configuration.errorOnAutoCreate())
674              throw new Error("Attempt to auto-create DocumentReferenceContextComponent.period");
675            else if (Configuration.doAutoCreate())
676              this.period = new Period(); // cc
677          return this.period;
678        }
679
680        public boolean hasPeriod() { 
681          return this.period != null && !this.period.isEmpty();
682        }
683
684        /**
685         * @param value {@link #period} (The time period over which the service that is described by the document was provided.)
686         */
687        public DocumentReferenceContextComponent setPeriod(Period value) { 
688          this.period = value;
689          return this;
690        }
691
692        /**
693         * @return {@link #facilityType} (The kind of facility where the patient was seen.)
694         */
695        public CodeableConcept getFacilityType() { 
696          if (this.facilityType == null)
697            if (Configuration.errorOnAutoCreate())
698              throw new Error("Attempt to auto-create DocumentReferenceContextComponent.facilityType");
699            else if (Configuration.doAutoCreate())
700              this.facilityType = new CodeableConcept(); // cc
701          return this.facilityType;
702        }
703
704        public boolean hasFacilityType() { 
705          return this.facilityType != null && !this.facilityType.isEmpty();
706        }
707
708        /**
709         * @param value {@link #facilityType} (The kind of facility where the patient was seen.)
710         */
711        public DocumentReferenceContextComponent setFacilityType(CodeableConcept value) { 
712          this.facilityType = value;
713          return this;
714        }
715
716        /**
717         * @return {@link #practiceSetting} (This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty.)
718         */
719        public CodeableConcept getPracticeSetting() { 
720          if (this.practiceSetting == null)
721            if (Configuration.errorOnAutoCreate())
722              throw new Error("Attempt to auto-create DocumentReferenceContextComponent.practiceSetting");
723            else if (Configuration.doAutoCreate())
724              this.practiceSetting = new CodeableConcept(); // cc
725          return this.practiceSetting;
726        }
727
728        public boolean hasPracticeSetting() { 
729          return this.practiceSetting != null && !this.practiceSetting.isEmpty();
730        }
731
732        /**
733         * @param value {@link #practiceSetting} (This property may convey specifics about the practice setting where the content was created, often reflecting the clinical specialty.)
734         */
735        public DocumentReferenceContextComponent setPracticeSetting(CodeableConcept value) { 
736          this.practiceSetting = value;
737          return this;
738        }
739
740        /**
741         * @return {@link #sourcePatientInfo} (The Patient Information as known when the document was published. May be a reference to a version specific, or contained.)
742         */
743        public Reference getSourcePatientInfo() { 
744          if (this.sourcePatientInfo == null)
745            if (Configuration.errorOnAutoCreate())
746              throw new Error("Attempt to auto-create DocumentReferenceContextComponent.sourcePatientInfo");
747            else if (Configuration.doAutoCreate())
748              this.sourcePatientInfo = new Reference(); // cc
749          return this.sourcePatientInfo;
750        }
751
752        public boolean hasSourcePatientInfo() { 
753          return this.sourcePatientInfo != null && !this.sourcePatientInfo.isEmpty();
754        }
755
756        /**
757         * @param value {@link #sourcePatientInfo} (The Patient Information as known when the document was published. May be a reference to a version specific, or contained.)
758         */
759        public DocumentReferenceContextComponent setSourcePatientInfo(Reference value) { 
760          this.sourcePatientInfo = value;
761          return this;
762        }
763
764        /**
765         * @return {@link #related} (Related identifiers or resources associated with the DocumentReference.)
766         */
767        public List<Reference> getRelated() { 
768          if (this.related == null)
769            this.related = new ArrayList<Reference>();
770          return this.related;
771        }
772
773        /**
774         * @return Returns a reference to <code>this</code> for easy method chaining
775         */
776        public DocumentReferenceContextComponent setRelated(List<Reference> theRelated) { 
777          this.related = theRelated;
778          return this;
779        }
780
781        public boolean hasRelated() { 
782          if (this.related == null)
783            return false;
784          for (Reference item : this.related)
785            if (!item.isEmpty())
786              return true;
787          return false;
788        }
789
790        public Reference addRelated() { //3
791          Reference t = new Reference();
792          if (this.related == null)
793            this.related = new ArrayList<Reference>();
794          this.related.add(t);
795          return t;
796        }
797
798        public DocumentReferenceContextComponent addRelated(Reference t) { //3
799          if (t == null)
800            return this;
801          if (this.related == null)
802            this.related = new ArrayList<Reference>();
803          this.related.add(t);
804          return this;
805        }
806
807        /**
808         * @return The first repetition of repeating field {@link #related}, creating it if it does not already exist {3}
809         */
810        public Reference getRelatedFirstRep() { 
811          if (getRelated().isEmpty()) {
812            addRelated();
813          }
814          return getRelated().get(0);
815        }
816
817        protected void listChildren(List<Property> children) {
818          super.listChildren(children);
819          children.add(new Property("encounter", "Reference(Encounter|EpisodeOfCare)", "Describes the clinical encounter or type of care that the document content is associated with.", 0, java.lang.Integer.MAX_VALUE, encounter));
820          children.add(new Property("event", "CodeableConcept", "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));
821          children.add(new Property("period", "Period", "The time period over which the service that is described by the document was provided.", 0, 1, period));
822          children.add(new Property("facilityType", "CodeableConcept", "The kind of facility where the patient was seen.", 0, 1, facilityType));
823          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));
824          children.add(new Property("sourcePatientInfo", "Reference(Patient)", "The Patient Information as known when the document was published. May be a reference to a version specific, or contained.", 0, 1, sourcePatientInfo));
825          children.add(new Property("related", "Reference(Any)", "Related identifiers or resources associated with the DocumentReference.", 0, java.lang.Integer.MAX_VALUE, related));
826        }
827
828        @Override
829        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
830          switch (_hash) {
831          case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter|EpisodeOfCare)", "Describes the clinical encounter or type of care that the document content is associated with.", 0, java.lang.Integer.MAX_VALUE, encounter);
832          case 96891546: /*event*/  return new Property("event", "CodeableConcept", "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);
833          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);
834          case 370698365: /*facilityType*/  return new Property("facilityType", "CodeableConcept", "The kind of facility where the patient was seen.", 0, 1, facilityType);
835          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);
836          case 2031381048: /*sourcePatientInfo*/  return new Property("sourcePatientInfo", "Reference(Patient)", "The Patient Information as known when the document was published. May be a reference to a version specific, or contained.", 0, 1, sourcePatientInfo);
837          case 1090493483: /*related*/  return new Property("related", "Reference(Any)", "Related identifiers or resources associated with the DocumentReference.", 0, java.lang.Integer.MAX_VALUE, related);
838          default: return super.getNamedProperty(_hash, _name, _checkValid);
839          }
840
841        }
842
843      @Override
844      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
845        switch (hash) {
846        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : this.encounter.toArray(new Base[this.encounter.size()]); // Reference
847        case 96891546: /*event*/ return this.event == null ? new Base[0] : this.event.toArray(new Base[this.event.size()]); // CodeableConcept
848        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
849        case 370698365: /*facilityType*/ return this.facilityType == null ? new Base[0] : new Base[] {this.facilityType}; // CodeableConcept
850        case 331373717: /*practiceSetting*/ return this.practiceSetting == null ? new Base[0] : new Base[] {this.practiceSetting}; // CodeableConcept
851        case 2031381048: /*sourcePatientInfo*/ return this.sourcePatientInfo == null ? new Base[0] : new Base[] {this.sourcePatientInfo}; // Reference
852        case 1090493483: /*related*/ return this.related == null ? new Base[0] : this.related.toArray(new Base[this.related.size()]); // Reference
853        default: return super.getProperty(hash, name, checkValid);
854        }
855
856      }
857
858      @Override
859      public Base setProperty(int hash, String name, Base value) throws FHIRException {
860        switch (hash) {
861        case 1524132147: // encounter
862          this.getEncounter().add(TypeConvertor.castToReference(value)); // Reference
863          return value;
864        case 96891546: // event
865          this.getEvent().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
866          return value;
867        case -991726143: // period
868          this.period = TypeConvertor.castToPeriod(value); // Period
869          return value;
870        case 370698365: // facilityType
871          this.facilityType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
872          return value;
873        case 331373717: // practiceSetting
874          this.practiceSetting = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
875          return value;
876        case 2031381048: // sourcePatientInfo
877          this.sourcePatientInfo = TypeConvertor.castToReference(value); // Reference
878          return value;
879        case 1090493483: // related
880          this.getRelated().add(TypeConvertor.castToReference(value)); // Reference
881          return value;
882        default: return super.setProperty(hash, name, value);
883        }
884
885      }
886
887      @Override
888      public Base setProperty(String name, Base value) throws FHIRException {
889        if (name.equals("encounter")) {
890          this.getEncounter().add(TypeConvertor.castToReference(value));
891        } else if (name.equals("event")) {
892          this.getEvent().add(TypeConvertor.castToCodeableConcept(value));
893        } else if (name.equals("period")) {
894          this.period = TypeConvertor.castToPeriod(value); // Period
895        } else if (name.equals("facilityType")) {
896          this.facilityType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
897        } else if (name.equals("practiceSetting")) {
898          this.practiceSetting = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
899        } else if (name.equals("sourcePatientInfo")) {
900          this.sourcePatientInfo = TypeConvertor.castToReference(value); // Reference
901        } else if (name.equals("related")) {
902          this.getRelated().add(TypeConvertor.castToReference(value));
903        } else
904          return super.setProperty(name, value);
905        return value;
906      }
907
908      @Override
909      public Base makeProperty(int hash, String name) throws FHIRException {
910        switch (hash) {
911        case 1524132147:  return addEncounter(); 
912        case 96891546:  return addEvent(); 
913        case -991726143:  return getPeriod();
914        case 370698365:  return getFacilityType();
915        case 331373717:  return getPracticeSetting();
916        case 2031381048:  return getSourcePatientInfo();
917        case 1090493483:  return addRelated(); 
918        default: return super.makeProperty(hash, name);
919        }
920
921      }
922
923      @Override
924      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
925        switch (hash) {
926        case 1524132147: /*encounter*/ return new String[] {"Reference"};
927        case 96891546: /*event*/ return new String[] {"CodeableConcept"};
928        case -991726143: /*period*/ return new String[] {"Period"};
929        case 370698365: /*facilityType*/ return new String[] {"CodeableConcept"};
930        case 331373717: /*practiceSetting*/ return new String[] {"CodeableConcept"};
931        case 2031381048: /*sourcePatientInfo*/ return new String[] {"Reference"};
932        case 1090493483: /*related*/ return new String[] {"Reference"};
933        default: return super.getTypesForProperty(hash, name);
934        }
935
936      }
937
938      @Override
939      public Base addChild(String name) throws FHIRException {
940        if (name.equals("encounter")) {
941          return addEncounter();
942        }
943        else if (name.equals("event")) {
944          return addEvent();
945        }
946        else if (name.equals("period")) {
947          this.period = new Period();
948          return this.period;
949        }
950        else if (name.equals("facilityType")) {
951          this.facilityType = new CodeableConcept();
952          return this.facilityType;
953        }
954        else if (name.equals("practiceSetting")) {
955          this.practiceSetting = new CodeableConcept();
956          return this.practiceSetting;
957        }
958        else if (name.equals("sourcePatientInfo")) {
959          this.sourcePatientInfo = new Reference();
960          return this.sourcePatientInfo;
961        }
962        else if (name.equals("related")) {
963          return addRelated();
964        }
965        else
966          return super.addChild(name);
967      }
968
969      public DocumentReferenceContextComponent copy() {
970        DocumentReferenceContextComponent dst = new DocumentReferenceContextComponent();
971        copyValues(dst);
972        return dst;
973      }
974
975      public void copyValues(DocumentReferenceContextComponent dst) {
976        super.copyValues(dst);
977        if (encounter != null) {
978          dst.encounter = new ArrayList<Reference>();
979          for (Reference i : encounter)
980            dst.encounter.add(i.copy());
981        };
982        if (event != null) {
983          dst.event = new ArrayList<CodeableConcept>();
984          for (CodeableConcept i : event)
985            dst.event.add(i.copy());
986        };
987        dst.period = period == null ? null : period.copy();
988        dst.facilityType = facilityType == null ? null : facilityType.copy();
989        dst.practiceSetting = practiceSetting == null ? null : practiceSetting.copy();
990        dst.sourcePatientInfo = sourcePatientInfo == null ? null : sourcePatientInfo.copy();
991        if (related != null) {
992          dst.related = new ArrayList<Reference>();
993          for (Reference i : related)
994            dst.related.add(i.copy());
995        };
996      }
997
998      @Override
999      public boolean equalsDeep(Base other_) {
1000        if (!super.equalsDeep(other_))
1001          return false;
1002        if (!(other_ instanceof DocumentReferenceContextComponent))
1003          return false;
1004        DocumentReferenceContextComponent o = (DocumentReferenceContextComponent) other_;
1005        return compareDeep(encounter, o.encounter, true) && compareDeep(event, o.event, true) && compareDeep(period, o.period, true)
1006           && compareDeep(facilityType, o.facilityType, true) && compareDeep(practiceSetting, o.practiceSetting, true)
1007           && compareDeep(sourcePatientInfo, o.sourcePatientInfo, true) && compareDeep(related, o.related, true)
1008          ;
1009      }
1010
1011      @Override
1012      public boolean equalsShallow(Base other_) {
1013        if (!super.equalsShallow(other_))
1014          return false;
1015        if (!(other_ instanceof DocumentReferenceContextComponent))
1016          return false;
1017        DocumentReferenceContextComponent o = (DocumentReferenceContextComponent) other_;
1018        return true;
1019      }
1020
1021      public boolean isEmpty() {
1022        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(encounter, event, period
1023          , facilityType, practiceSetting, sourcePatientInfo, related);
1024      }
1025
1026  public String fhirType() {
1027    return "DocumentReference.context";
1028
1029  }
1030
1031  }
1032
1033    /**
1034     * Document identifier as assigned by the source of the document. This identifier is specific to this version of the document. This unique identifier may be used elsewhere to identify this version of the document.
1035     */
1036    @Child(name = "masterIdentifier", type = {Identifier.class}, order=0, min=0, max=1, modifier=false, summary=true)
1037    @Description(shortDefinition="Master Version Specific Identifier", formalDefinition="Document identifier as assigned by the source of the document. This identifier is specific to this version of the document. This unique identifier may be used elsewhere to identify this version of the document." )
1038    protected Identifier masterIdentifier;
1039
1040    /**
1041     * Other identifiers associated with the document, including version independent identifiers.
1042     */
1043    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1044    @Description(shortDefinition="Other identifiers for the document", formalDefinition="Other identifiers associated with the document, including version independent identifiers." )
1045    protected List<Identifier> identifier;
1046
1047    /**
1048     * The status of this document reference.
1049     */
1050    @Child(name = "status", type = {CodeType.class}, order=2, min=1, max=1, modifier=true, summary=true)
1051    @Description(shortDefinition="current | superseded | entered-in-error", formalDefinition="The status of this document reference." )
1052    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/document-reference-status")
1053    protected Enumeration<DocumentReferenceStatus> status;
1054
1055    /**
1056     * The status of the underlying document.
1057     */
1058    @Child(name = "docStatus", type = {CodeType.class}, order=3, min=0, max=1, modifier=false, summary=true)
1059    @Description(shortDefinition="preliminary | final | amended | entered-in-error", formalDefinition="The status of the underlying document." )
1060    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/composition-status")
1061    protected Enumeration<CompositionStatus> docStatus;
1062
1063    /**
1064     * 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.
1065     */
1066    @Child(name = "type", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=true)
1067    @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." )
1068    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/doc-typecodes")
1069    protected CodeableConcept type;
1070
1071    /**
1072     * 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.
1073     */
1074    @Child(name = "category", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1075    @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." )
1076    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/doc-classcodes")
1077    protected List<CodeableConcept> category;
1078
1079    /**
1080     * 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).
1081     */
1082    @Child(name = "subject", type = {Patient.class, Practitioner.class, Group.class, Device.class}, order=6, min=0, max=1, modifier=false, summary=true)
1083    @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)." )
1084    protected Reference subject;
1085
1086    /**
1087     * When the document reference was created.
1088     */
1089    @Child(name = "date", type = {InstantType.class}, order=7, min=0, max=1, modifier=false, summary=true)
1090    @Description(shortDefinition="When this document reference was created", formalDefinition="When the document reference was created." )
1091    protected InstantType date;
1092
1093    /**
1094     * Identifies who is responsible for adding the information to the document.
1095     */
1096    @Child(name = "author", type = {Practitioner.class, PractitionerRole.class, Organization.class, Device.class, Patient.class, RelatedPerson.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1097    @Description(shortDefinition="Who and/or what authored the document", formalDefinition="Identifies who is responsible for adding the information to the document." )
1098    protected List<Reference> author;
1099
1100    /**
1101     * Which person or organization authenticates that this document is valid.
1102     */
1103    @Child(name = "authenticator", type = {Practitioner.class, PractitionerRole.class, Organization.class}, order=9, min=0, max=1, modifier=false, summary=false)
1104    @Description(shortDefinition="Who/what authenticated the document", formalDefinition="Which person or organization authenticates that this document is valid." )
1105    protected Reference authenticator;
1106
1107    /**
1108     * Identifies the organization or group who is responsible for ongoing maintenance of and access to the document.
1109     */
1110    @Child(name = "custodian", type = {Organization.class}, order=10, min=0, max=1, modifier=false, summary=false)
1111    @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." )
1112    protected Reference custodian;
1113
1114    /**
1115     * Relationships that this document has with other document references that already exist.
1116     */
1117    @Child(name = "relatesTo", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1118    @Description(shortDefinition="Relationships to other documents", formalDefinition="Relationships that this document has with other document references that already exist." )
1119    protected List<DocumentReferenceRelatesToComponent> relatesTo;
1120
1121    /**
1122     * Human-readable description of the source document.
1123     */
1124    @Child(name = "description", type = {StringType.class}, order=12, min=0, max=1, modifier=false, summary=true)
1125    @Description(shortDefinition="Human-readable description", formalDefinition="Human-readable description of the source document." )
1126    protected StringType description;
1127
1128    /**
1129     * A set of Security-Tag codes specifying the level of privacy/security of the Document. Note that DocumentReference.meta.security contains the security labels of the "reference" to the document, while DocumentReference.securityLabel contains a snapshot of the security labels on the document the reference refers to.
1130     */
1131    @Child(name = "securityLabel", type = {CodeableConcept.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1132    @Description(shortDefinition="Document security-tags", formalDefinition="A set of Security-Tag codes specifying the level of privacy/security of the Document. Note that DocumentReference.meta.security contains the security labels of the \"reference\" to the document, while DocumentReference.securityLabel contains a snapshot of the security labels on the document the reference refers to." )
1133    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/security-labels")
1134    protected List<CodeableConcept> securityLabel;
1135
1136    /**
1137     * The document and format referenced. There may be multiple content element repetitions, each with a different format.
1138     */
1139    @Child(name = "content", type = {}, order=14, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1140    @Description(shortDefinition="Document referenced", formalDefinition="The document and format referenced. There may be multiple content element repetitions, each with a different format." )
1141    protected List<DocumentReferenceContentComponent> content;
1142
1143    /**
1144     * The clinical context in which the document was prepared.
1145     */
1146    @Child(name = "context", type = {}, order=15, min=0, max=1, modifier=false, summary=true)
1147    @Description(shortDefinition="Clinical context of document", formalDefinition="The clinical context in which the document was prepared." )
1148    protected DocumentReferenceContextComponent context;
1149
1150    private static final long serialVersionUID = -521547148L;
1151
1152  /**
1153   * Constructor
1154   */
1155    public DocumentReference() {
1156      super();
1157    }
1158
1159  /**
1160   * Constructor
1161   */
1162    public DocumentReference(DocumentReferenceStatus status, DocumentReferenceContentComponent content) {
1163      super();
1164      this.setStatus(status);
1165      this.addContent(content);
1166    }
1167
1168    /**
1169     * @return {@link #masterIdentifier} (Document identifier as assigned by the source of the document. This identifier is specific to this version of the document. This unique identifier may be used elsewhere to identify this version of the document.)
1170     */
1171    public Identifier getMasterIdentifier() { 
1172      if (this.masterIdentifier == null)
1173        if (Configuration.errorOnAutoCreate())
1174          throw new Error("Attempt to auto-create DocumentReference.masterIdentifier");
1175        else if (Configuration.doAutoCreate())
1176          this.masterIdentifier = new Identifier(); // cc
1177      return this.masterIdentifier;
1178    }
1179
1180    public boolean hasMasterIdentifier() { 
1181      return this.masterIdentifier != null && !this.masterIdentifier.isEmpty();
1182    }
1183
1184    /**
1185     * @param value {@link #masterIdentifier} (Document identifier as assigned by the source of the document. This identifier is specific to this version of the document. This unique identifier may be used elsewhere to identify this version of the document.)
1186     */
1187    public DocumentReference setMasterIdentifier(Identifier value) { 
1188      this.masterIdentifier = value;
1189      return this;
1190    }
1191
1192    /**
1193     * @return {@link #identifier} (Other identifiers associated with the document, including version independent identifiers.)
1194     */
1195    public List<Identifier> getIdentifier() { 
1196      if (this.identifier == null)
1197        this.identifier = new ArrayList<Identifier>();
1198      return this.identifier;
1199    }
1200
1201    /**
1202     * @return Returns a reference to <code>this</code> for easy method chaining
1203     */
1204    public DocumentReference setIdentifier(List<Identifier> theIdentifier) { 
1205      this.identifier = theIdentifier;
1206      return this;
1207    }
1208
1209    public boolean hasIdentifier() { 
1210      if (this.identifier == null)
1211        return false;
1212      for (Identifier item : this.identifier)
1213        if (!item.isEmpty())
1214          return true;
1215      return false;
1216    }
1217
1218    public Identifier addIdentifier() { //3
1219      Identifier t = new Identifier();
1220      if (this.identifier == null)
1221        this.identifier = new ArrayList<Identifier>();
1222      this.identifier.add(t);
1223      return t;
1224    }
1225
1226    public DocumentReference addIdentifier(Identifier t) { //3
1227      if (t == null)
1228        return this;
1229      if (this.identifier == null)
1230        this.identifier = new ArrayList<Identifier>();
1231      this.identifier.add(t);
1232      return this;
1233    }
1234
1235    /**
1236     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
1237     */
1238    public Identifier getIdentifierFirstRep() { 
1239      if (getIdentifier().isEmpty()) {
1240        addIdentifier();
1241      }
1242      return getIdentifier().get(0);
1243    }
1244
1245    /**
1246     * @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
1247     */
1248    public Enumeration<DocumentReferenceStatus> getStatusElement() { 
1249      if (this.status == null)
1250        if (Configuration.errorOnAutoCreate())
1251          throw new Error("Attempt to auto-create DocumentReference.status");
1252        else if (Configuration.doAutoCreate())
1253          this.status = new Enumeration<DocumentReferenceStatus>(new DocumentReferenceStatusEnumFactory()); // bb
1254      return this.status;
1255    }
1256
1257    public boolean hasStatusElement() { 
1258      return this.status != null && !this.status.isEmpty();
1259    }
1260
1261    public boolean hasStatus() { 
1262      return this.status != null && !this.status.isEmpty();
1263    }
1264
1265    /**
1266     * @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
1267     */
1268    public DocumentReference setStatusElement(Enumeration<DocumentReferenceStatus> value) { 
1269      this.status = value;
1270      return this;
1271    }
1272
1273    /**
1274     * @return The status of this document reference.
1275     */
1276    public DocumentReferenceStatus getStatus() { 
1277      return this.status == null ? null : this.status.getValue();
1278    }
1279
1280    /**
1281     * @param value The status of this document reference.
1282     */
1283    public DocumentReference setStatus(DocumentReferenceStatus value) { 
1284        if (this.status == null)
1285          this.status = new Enumeration<DocumentReferenceStatus>(new DocumentReferenceStatusEnumFactory());
1286        this.status.setValue(value);
1287      return this;
1288    }
1289
1290    /**
1291     * @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
1292     */
1293    public Enumeration<CompositionStatus> getDocStatusElement() { 
1294      if (this.docStatus == null)
1295        if (Configuration.errorOnAutoCreate())
1296          throw new Error("Attempt to auto-create DocumentReference.docStatus");
1297        else if (Configuration.doAutoCreate())
1298          this.docStatus = new Enumeration<CompositionStatus>(new CompositionStatusEnumFactory()); // bb
1299      return this.docStatus;
1300    }
1301
1302    public boolean hasDocStatusElement() { 
1303      return this.docStatus != null && !this.docStatus.isEmpty();
1304    }
1305
1306    public boolean hasDocStatus() { 
1307      return this.docStatus != null && !this.docStatus.isEmpty();
1308    }
1309
1310    /**
1311     * @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
1312     */
1313    public DocumentReference setDocStatusElement(Enumeration<CompositionStatus> value) { 
1314      this.docStatus = value;
1315      return this;
1316    }
1317
1318    /**
1319     * @return The status of the underlying document.
1320     */
1321    public CompositionStatus getDocStatus() { 
1322      return this.docStatus == null ? null : this.docStatus.getValue();
1323    }
1324
1325    /**
1326     * @param value The status of the underlying document.
1327     */
1328    public DocumentReference setDocStatus(CompositionStatus value) { 
1329      if (value == null)
1330        this.docStatus = null;
1331      else {
1332        if (this.docStatus == null)
1333          this.docStatus = new Enumeration<CompositionStatus>(new CompositionStatusEnumFactory());
1334        this.docStatus.setValue(value);
1335      }
1336      return this;
1337    }
1338
1339    /**
1340     * @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.)
1341     */
1342    public CodeableConcept getType() { 
1343      if (this.type == null)
1344        if (Configuration.errorOnAutoCreate())
1345          throw new Error("Attempt to auto-create DocumentReference.type");
1346        else if (Configuration.doAutoCreate())
1347          this.type = new CodeableConcept(); // cc
1348      return this.type;
1349    }
1350
1351    public boolean hasType() { 
1352      return this.type != null && !this.type.isEmpty();
1353    }
1354
1355    /**
1356     * @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.)
1357     */
1358    public DocumentReference setType(CodeableConcept value) { 
1359      this.type = value;
1360      return this;
1361    }
1362
1363    /**
1364     * @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.)
1365     */
1366    public List<CodeableConcept> getCategory() { 
1367      if (this.category == null)
1368        this.category = new ArrayList<CodeableConcept>();
1369      return this.category;
1370    }
1371
1372    /**
1373     * @return Returns a reference to <code>this</code> for easy method chaining
1374     */
1375    public DocumentReference setCategory(List<CodeableConcept> theCategory) { 
1376      this.category = theCategory;
1377      return this;
1378    }
1379
1380    public boolean hasCategory() { 
1381      if (this.category == null)
1382        return false;
1383      for (CodeableConcept item : this.category)
1384        if (!item.isEmpty())
1385          return true;
1386      return false;
1387    }
1388
1389    public CodeableConcept addCategory() { //3
1390      CodeableConcept t = new CodeableConcept();
1391      if (this.category == null)
1392        this.category = new ArrayList<CodeableConcept>();
1393      this.category.add(t);
1394      return t;
1395    }
1396
1397    public DocumentReference addCategory(CodeableConcept t) { //3
1398      if (t == null)
1399        return this;
1400      if (this.category == null)
1401        this.category = new ArrayList<CodeableConcept>();
1402      this.category.add(t);
1403      return this;
1404    }
1405
1406    /**
1407     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
1408     */
1409    public CodeableConcept getCategoryFirstRep() { 
1410      if (getCategory().isEmpty()) {
1411        addCategory();
1412      }
1413      return getCategory().get(0);
1414    }
1415
1416    /**
1417     * @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).)
1418     */
1419    public Reference getSubject() { 
1420      if (this.subject == null)
1421        if (Configuration.errorOnAutoCreate())
1422          throw new Error("Attempt to auto-create DocumentReference.subject");
1423        else if (Configuration.doAutoCreate())
1424          this.subject = new Reference(); // cc
1425      return this.subject;
1426    }
1427
1428    public boolean hasSubject() { 
1429      return this.subject != null && !this.subject.isEmpty();
1430    }
1431
1432    /**
1433     * @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).)
1434     */
1435    public DocumentReference setSubject(Reference value) { 
1436      this.subject = value;
1437      return this;
1438    }
1439
1440    /**
1441     * @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
1442     */
1443    public InstantType getDateElement() { 
1444      if (this.date == null)
1445        if (Configuration.errorOnAutoCreate())
1446          throw new Error("Attempt to auto-create DocumentReference.date");
1447        else if (Configuration.doAutoCreate())
1448          this.date = new InstantType(); // bb
1449      return this.date;
1450    }
1451
1452    public boolean hasDateElement() { 
1453      return this.date != null && !this.date.isEmpty();
1454    }
1455
1456    public boolean hasDate() { 
1457      return this.date != null && !this.date.isEmpty();
1458    }
1459
1460    /**
1461     * @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
1462     */
1463    public DocumentReference setDateElement(InstantType value) { 
1464      this.date = value;
1465      return this;
1466    }
1467
1468    /**
1469     * @return When the document reference was created.
1470     */
1471    public Date getDate() { 
1472      return this.date == null ? null : this.date.getValue();
1473    }
1474
1475    /**
1476     * @param value When the document reference was created.
1477     */
1478    public DocumentReference setDate(Date value) { 
1479      if (value == null)
1480        this.date = null;
1481      else {
1482        if (this.date == null)
1483          this.date = new InstantType();
1484        this.date.setValue(value);
1485      }
1486      return this;
1487    }
1488
1489    /**
1490     * @return {@link #author} (Identifies who is responsible for adding the information to the document.)
1491     */
1492    public List<Reference> getAuthor() { 
1493      if (this.author == null)
1494        this.author = new ArrayList<Reference>();
1495      return this.author;
1496    }
1497
1498    /**
1499     * @return Returns a reference to <code>this</code> for easy method chaining
1500     */
1501    public DocumentReference setAuthor(List<Reference> theAuthor) { 
1502      this.author = theAuthor;
1503      return this;
1504    }
1505
1506    public boolean hasAuthor() { 
1507      if (this.author == null)
1508        return false;
1509      for (Reference item : this.author)
1510        if (!item.isEmpty())
1511          return true;
1512      return false;
1513    }
1514
1515    public Reference addAuthor() { //3
1516      Reference t = new Reference();
1517      if (this.author == null)
1518        this.author = new ArrayList<Reference>();
1519      this.author.add(t);
1520      return t;
1521    }
1522
1523    public DocumentReference addAuthor(Reference t) { //3
1524      if (t == null)
1525        return this;
1526      if (this.author == null)
1527        this.author = new ArrayList<Reference>();
1528      this.author.add(t);
1529      return this;
1530    }
1531
1532    /**
1533     * @return The first repetition of repeating field {@link #author}, creating it if it does not already exist {3}
1534     */
1535    public Reference getAuthorFirstRep() { 
1536      if (getAuthor().isEmpty()) {
1537        addAuthor();
1538      }
1539      return getAuthor().get(0);
1540    }
1541
1542    /**
1543     * @return {@link #authenticator} (Which person or organization authenticates that this document is valid.)
1544     */
1545    public Reference getAuthenticator() { 
1546      if (this.authenticator == null)
1547        if (Configuration.errorOnAutoCreate())
1548          throw new Error("Attempt to auto-create DocumentReference.authenticator");
1549        else if (Configuration.doAutoCreate())
1550          this.authenticator = new Reference(); // cc
1551      return this.authenticator;
1552    }
1553
1554    public boolean hasAuthenticator() { 
1555      return this.authenticator != null && !this.authenticator.isEmpty();
1556    }
1557
1558    /**
1559     * @param value {@link #authenticator} (Which person or organization authenticates that this document is valid.)
1560     */
1561    public DocumentReference setAuthenticator(Reference value) { 
1562      this.authenticator = value;
1563      return this;
1564    }
1565
1566    /**
1567     * @return {@link #custodian} (Identifies the organization or group who is responsible for ongoing maintenance of and access to the document.)
1568     */
1569    public Reference getCustodian() { 
1570      if (this.custodian == null)
1571        if (Configuration.errorOnAutoCreate())
1572          throw new Error("Attempt to auto-create DocumentReference.custodian");
1573        else if (Configuration.doAutoCreate())
1574          this.custodian = new Reference(); // cc
1575      return this.custodian;
1576    }
1577
1578    public boolean hasCustodian() { 
1579      return this.custodian != null && !this.custodian.isEmpty();
1580    }
1581
1582    /**
1583     * @param value {@link #custodian} (Identifies the organization or group who is responsible for ongoing maintenance of and access to the document.)
1584     */
1585    public DocumentReference setCustodian(Reference value) { 
1586      this.custodian = value;
1587      return this;
1588    }
1589
1590    /**
1591     * @return {@link #relatesTo} (Relationships that this document has with other document references that already exist.)
1592     */
1593    public List<DocumentReferenceRelatesToComponent> getRelatesTo() { 
1594      if (this.relatesTo == null)
1595        this.relatesTo = new ArrayList<DocumentReferenceRelatesToComponent>();
1596      return this.relatesTo;
1597    }
1598
1599    /**
1600     * @return Returns a reference to <code>this</code> for easy method chaining
1601     */
1602    public DocumentReference setRelatesTo(List<DocumentReferenceRelatesToComponent> theRelatesTo) { 
1603      this.relatesTo = theRelatesTo;
1604      return this;
1605    }
1606
1607    public boolean hasRelatesTo() { 
1608      if (this.relatesTo == null)
1609        return false;
1610      for (DocumentReferenceRelatesToComponent item : this.relatesTo)
1611        if (!item.isEmpty())
1612          return true;
1613      return false;
1614    }
1615
1616    public DocumentReferenceRelatesToComponent addRelatesTo() { //3
1617      DocumentReferenceRelatesToComponent t = new DocumentReferenceRelatesToComponent();
1618      if (this.relatesTo == null)
1619        this.relatesTo = new ArrayList<DocumentReferenceRelatesToComponent>();
1620      this.relatesTo.add(t);
1621      return t;
1622    }
1623
1624    public DocumentReference addRelatesTo(DocumentReferenceRelatesToComponent t) { //3
1625      if (t == null)
1626        return this;
1627      if (this.relatesTo == null)
1628        this.relatesTo = new ArrayList<DocumentReferenceRelatesToComponent>();
1629      this.relatesTo.add(t);
1630      return this;
1631    }
1632
1633    /**
1634     * @return The first repetition of repeating field {@link #relatesTo}, creating it if it does not already exist {3}
1635     */
1636    public DocumentReferenceRelatesToComponent getRelatesToFirstRep() { 
1637      if (getRelatesTo().isEmpty()) {
1638        addRelatesTo();
1639      }
1640      return getRelatesTo().get(0);
1641    }
1642
1643    /**
1644     * @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
1645     */
1646    public StringType getDescriptionElement() { 
1647      if (this.description == null)
1648        if (Configuration.errorOnAutoCreate())
1649          throw new Error("Attempt to auto-create DocumentReference.description");
1650        else if (Configuration.doAutoCreate())
1651          this.description = new StringType(); // bb
1652      return this.description;
1653    }
1654
1655    public boolean hasDescriptionElement() { 
1656      return this.description != null && !this.description.isEmpty();
1657    }
1658
1659    public boolean hasDescription() { 
1660      return this.description != null && !this.description.isEmpty();
1661    }
1662
1663    /**
1664     * @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
1665     */
1666    public DocumentReference setDescriptionElement(StringType value) { 
1667      this.description = value;
1668      return this;
1669    }
1670
1671    /**
1672     * @return Human-readable description of the source document.
1673     */
1674    public String getDescription() { 
1675      return this.description == null ? null : this.description.getValue();
1676    }
1677
1678    /**
1679     * @param value Human-readable description of the source document.
1680     */
1681    public DocumentReference setDescription(String value) { 
1682      if (Utilities.noString(value))
1683        this.description = null;
1684      else {
1685        if (this.description == null)
1686          this.description = new StringType();
1687        this.description.setValue(value);
1688      }
1689      return this;
1690    }
1691
1692    /**
1693     * @return {@link #securityLabel} (A set of Security-Tag codes specifying the level of privacy/security of the Document. Note that DocumentReference.meta.security contains the security labels of the "reference" to the document, while DocumentReference.securityLabel contains a snapshot of the security labels on the document the reference refers to.)
1694     */
1695    public List<CodeableConcept> getSecurityLabel() { 
1696      if (this.securityLabel == null)
1697        this.securityLabel = new ArrayList<CodeableConcept>();
1698      return this.securityLabel;
1699    }
1700
1701    /**
1702     * @return Returns a reference to <code>this</code> for easy method chaining
1703     */
1704    public DocumentReference setSecurityLabel(List<CodeableConcept> theSecurityLabel) { 
1705      this.securityLabel = theSecurityLabel;
1706      return this;
1707    }
1708
1709    public boolean hasSecurityLabel() { 
1710      if (this.securityLabel == null)
1711        return false;
1712      for (CodeableConcept item : this.securityLabel)
1713        if (!item.isEmpty())
1714          return true;
1715      return false;
1716    }
1717
1718    public CodeableConcept addSecurityLabel() { //3
1719      CodeableConcept t = new CodeableConcept();
1720      if (this.securityLabel == null)
1721        this.securityLabel = new ArrayList<CodeableConcept>();
1722      this.securityLabel.add(t);
1723      return t;
1724    }
1725
1726    public DocumentReference addSecurityLabel(CodeableConcept t) { //3
1727      if (t == null)
1728        return this;
1729      if (this.securityLabel == null)
1730        this.securityLabel = new ArrayList<CodeableConcept>();
1731      this.securityLabel.add(t);
1732      return this;
1733    }
1734
1735    /**
1736     * @return The first repetition of repeating field {@link #securityLabel}, creating it if it does not already exist {3}
1737     */
1738    public CodeableConcept getSecurityLabelFirstRep() { 
1739      if (getSecurityLabel().isEmpty()) {
1740        addSecurityLabel();
1741      }
1742      return getSecurityLabel().get(0);
1743    }
1744
1745    /**
1746     * @return {@link #content} (The document and format referenced. There may be multiple content element repetitions, each with a different format.)
1747     */
1748    public List<DocumentReferenceContentComponent> getContent() { 
1749      if (this.content == null)
1750        this.content = new ArrayList<DocumentReferenceContentComponent>();
1751      return this.content;
1752    }
1753
1754    /**
1755     * @return Returns a reference to <code>this</code> for easy method chaining
1756     */
1757    public DocumentReference setContent(List<DocumentReferenceContentComponent> theContent) { 
1758      this.content = theContent;
1759      return this;
1760    }
1761
1762    public boolean hasContent() { 
1763      if (this.content == null)
1764        return false;
1765      for (DocumentReferenceContentComponent item : this.content)
1766        if (!item.isEmpty())
1767          return true;
1768      return false;
1769    }
1770
1771    public DocumentReferenceContentComponent addContent() { //3
1772      DocumentReferenceContentComponent t = new DocumentReferenceContentComponent();
1773      if (this.content == null)
1774        this.content = new ArrayList<DocumentReferenceContentComponent>();
1775      this.content.add(t);
1776      return t;
1777    }
1778
1779    public DocumentReference addContent(DocumentReferenceContentComponent t) { //3
1780      if (t == null)
1781        return this;
1782      if (this.content == null)
1783        this.content = new ArrayList<DocumentReferenceContentComponent>();
1784      this.content.add(t);
1785      return this;
1786    }
1787
1788    /**
1789     * @return The first repetition of repeating field {@link #content}, creating it if it does not already exist {3}
1790     */
1791    public DocumentReferenceContentComponent getContentFirstRep() { 
1792      if (getContent().isEmpty()) {
1793        addContent();
1794      }
1795      return getContent().get(0);
1796    }
1797
1798    /**
1799     * @return {@link #context} (The clinical context in which the document was prepared.)
1800     */
1801    public DocumentReferenceContextComponent getContext() { 
1802      if (this.context == null)
1803        if (Configuration.errorOnAutoCreate())
1804          throw new Error("Attempt to auto-create DocumentReference.context");
1805        else if (Configuration.doAutoCreate())
1806          this.context = new DocumentReferenceContextComponent(); // cc
1807      return this.context;
1808    }
1809
1810    public boolean hasContext() { 
1811      return this.context != null && !this.context.isEmpty();
1812    }
1813
1814    /**
1815     * @param value {@link #context} (The clinical context in which the document was prepared.)
1816     */
1817    public DocumentReference setContext(DocumentReferenceContextComponent value) { 
1818      this.context = value;
1819      return this;
1820    }
1821
1822      protected void listChildren(List<Property> children) {
1823        super.listChildren(children);
1824        children.add(new Property("masterIdentifier", "Identifier", "Document identifier as assigned by the source of the document. This identifier is specific to this version of the document. This unique identifier may be used elsewhere to identify this version of the document.", 0, 1, masterIdentifier));
1825        children.add(new Property("identifier", "Identifier", "Other identifiers associated with the document, including version independent identifiers.", 0, java.lang.Integer.MAX_VALUE, identifier));
1826        children.add(new Property("status", "code", "The status of this document reference.", 0, 1, status));
1827        children.add(new Property("docStatus", "code", "The status of the underlying document.", 0, 1, docStatus));
1828        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));
1829        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));
1830        children.add(new Property("subject", "Reference(Patient|Practitioner|Group|Device)", "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));
1831        children.add(new Property("date", "instant", "When the document reference was created.", 0, 1, date));
1832        children.add(new Property("author", "Reference(Practitioner|PractitionerRole|Organization|Device|Patient|RelatedPerson)", "Identifies who is responsible for adding the information to the document.", 0, java.lang.Integer.MAX_VALUE, author));
1833        children.add(new Property("authenticator", "Reference(Practitioner|PractitionerRole|Organization)", "Which person or organization authenticates that this document is valid.", 0, 1, authenticator));
1834        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));
1835        children.add(new Property("relatesTo", "", "Relationships that this document has with other document references that already exist.", 0, java.lang.Integer.MAX_VALUE, relatesTo));
1836        children.add(new Property("description", "string", "Human-readable description of the source document.", 0, 1, description));
1837        children.add(new Property("securityLabel", "CodeableConcept", "A set of Security-Tag codes specifying the level of privacy/security of the Document. Note that DocumentReference.meta.security contains the security labels of the \"reference\" to the document, while DocumentReference.securityLabel contains a snapshot of the security labels on the document the reference refers to.", 0, java.lang.Integer.MAX_VALUE, securityLabel));
1838        children.add(new Property("content", "", "The document and format referenced. There may be multiple content element repetitions, each with a different format.", 0, java.lang.Integer.MAX_VALUE, content));
1839        children.add(new Property("context", "", "The clinical context in which the document was prepared.", 0, 1, context));
1840      }
1841
1842      @Override
1843      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1844        switch (_hash) {
1845        case 243769515: /*masterIdentifier*/  return new Property("masterIdentifier", "Identifier", "Document identifier as assigned by the source of the document. This identifier is specific to this version of the document. This unique identifier may be used elsewhere to identify this version of the document.", 0, 1, masterIdentifier);
1846        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Other identifiers associated with the document, including version independent identifiers.", 0, java.lang.Integer.MAX_VALUE, identifier);
1847        case -892481550: /*status*/  return new Property("status", "code", "The status of this document reference.", 0, 1, status);
1848        case -23496886: /*docStatus*/  return new Property("docStatus", "code", "The status of the underlying document.", 0, 1, docStatus);
1849        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);
1850        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);
1851        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Practitioner|Group|Device)", "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);
1852        case 3076014: /*date*/  return new Property("date", "instant", "When the document reference was created.", 0, 1, date);
1853        case -1406328437: /*author*/  return new Property("author", "Reference(Practitioner|PractitionerRole|Organization|Device|Patient|RelatedPerson)", "Identifies who is responsible for adding the information to the document.", 0, java.lang.Integer.MAX_VALUE, author);
1854        case 1815000435: /*authenticator*/  return new Property("authenticator", "Reference(Practitioner|PractitionerRole|Organization)", "Which person or organization authenticates that this document is valid.", 0, 1, authenticator);
1855        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);
1856        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);
1857        case -1724546052: /*description*/  return new Property("description", "string", "Human-readable description of the source document.", 0, 1, description);
1858        case -722296940: /*securityLabel*/  return new Property("securityLabel", "CodeableConcept", "A set of Security-Tag codes specifying the level of privacy/security of the Document. Note that DocumentReference.meta.security contains the security labels of the \"reference\" to the document, while DocumentReference.securityLabel contains a snapshot of the security labels on the document the reference refers to.", 0, java.lang.Integer.MAX_VALUE, securityLabel);
1859        case 951530617: /*content*/  return new Property("content", "", "The document and format referenced. There may be multiple content element repetitions, each with a different format.", 0, java.lang.Integer.MAX_VALUE, content);
1860        case 951530927: /*context*/  return new Property("context", "", "The clinical context in which the document was prepared.", 0, 1, context);
1861        default: return super.getNamedProperty(_hash, _name, _checkValid);
1862        }
1863
1864      }
1865
1866      @Override
1867      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1868        switch (hash) {
1869        case 243769515: /*masterIdentifier*/ return this.masterIdentifier == null ? new Base[0] : new Base[] {this.masterIdentifier}; // Identifier
1870        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1871        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<DocumentReferenceStatus>
1872        case -23496886: /*docStatus*/ return this.docStatus == null ? new Base[0] : new Base[] {this.docStatus}; // Enumeration<CompositionStatus>
1873        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
1874        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept
1875        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1876        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // InstantType
1877        case -1406328437: /*author*/ return this.author == null ? new Base[0] : this.author.toArray(new Base[this.author.size()]); // Reference
1878        case 1815000435: /*authenticator*/ return this.authenticator == null ? new Base[0] : new Base[] {this.authenticator}; // Reference
1879        case 1611297262: /*custodian*/ return this.custodian == null ? new Base[0] : new Base[] {this.custodian}; // Reference
1880        case -7765931: /*relatesTo*/ return this.relatesTo == null ? new Base[0] : this.relatesTo.toArray(new Base[this.relatesTo.size()]); // DocumentReferenceRelatesToComponent
1881        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1882        case -722296940: /*securityLabel*/ return this.securityLabel == null ? new Base[0] : this.securityLabel.toArray(new Base[this.securityLabel.size()]); // CodeableConcept
1883        case 951530617: /*content*/ return this.content == null ? new Base[0] : this.content.toArray(new Base[this.content.size()]); // DocumentReferenceContentComponent
1884        case 951530927: /*context*/ return this.context == null ? new Base[0] : new Base[] {this.context}; // DocumentReferenceContextComponent
1885        default: return super.getProperty(hash, name, checkValid);
1886        }
1887
1888      }
1889
1890      @Override
1891      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1892        switch (hash) {
1893        case 243769515: // masterIdentifier
1894          this.masterIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
1895          return value;
1896        case -1618432855: // identifier
1897          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1898          return value;
1899        case -892481550: // status
1900          value = new DocumentReferenceStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1901          this.status = (Enumeration) value; // Enumeration<DocumentReferenceStatus>
1902          return value;
1903        case -23496886: // docStatus
1904          value = new CompositionStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1905          this.docStatus = (Enumeration) value; // Enumeration<CompositionStatus>
1906          return value;
1907        case 3575610: // type
1908          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1909          return value;
1910        case 50511102: // category
1911          this.getCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1912          return value;
1913        case -1867885268: // subject
1914          this.subject = TypeConvertor.castToReference(value); // Reference
1915          return value;
1916        case 3076014: // date
1917          this.date = TypeConvertor.castToInstant(value); // InstantType
1918          return value;
1919        case -1406328437: // author
1920          this.getAuthor().add(TypeConvertor.castToReference(value)); // Reference
1921          return value;
1922        case 1815000435: // authenticator
1923          this.authenticator = TypeConvertor.castToReference(value); // Reference
1924          return value;
1925        case 1611297262: // custodian
1926          this.custodian = TypeConvertor.castToReference(value); // Reference
1927          return value;
1928        case -7765931: // relatesTo
1929          this.getRelatesTo().add((DocumentReferenceRelatesToComponent) value); // DocumentReferenceRelatesToComponent
1930          return value;
1931        case -1724546052: // description
1932          this.description = TypeConvertor.castToString(value); // StringType
1933          return value;
1934        case -722296940: // securityLabel
1935          this.getSecurityLabel().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1936          return value;
1937        case 951530617: // content
1938          this.getContent().add((DocumentReferenceContentComponent) value); // DocumentReferenceContentComponent
1939          return value;
1940        case 951530927: // context
1941          this.context = (DocumentReferenceContextComponent) value; // DocumentReferenceContextComponent
1942          return value;
1943        default: return super.setProperty(hash, name, value);
1944        }
1945
1946      }
1947
1948      @Override
1949      public Base setProperty(String name, Base value) throws FHIRException {
1950        if (name.equals("masterIdentifier")) {
1951          this.masterIdentifier = TypeConvertor.castToIdentifier(value); // Identifier
1952        } else if (name.equals("identifier")) {
1953          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1954        } else if (name.equals("status")) {
1955          value = new DocumentReferenceStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1956          this.status = (Enumeration) value; // Enumeration<DocumentReferenceStatus>
1957        } else if (name.equals("docStatus")) {
1958          value = new CompositionStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1959          this.docStatus = (Enumeration) value; // Enumeration<CompositionStatus>
1960        } else if (name.equals("type")) {
1961          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1962        } else if (name.equals("category")) {
1963          this.getCategory().add(TypeConvertor.castToCodeableConcept(value));
1964        } else if (name.equals("subject")) {
1965          this.subject = TypeConvertor.castToReference(value); // Reference
1966        } else if (name.equals("date")) {
1967          this.date = TypeConvertor.castToInstant(value); // InstantType
1968        } else if (name.equals("author")) {
1969          this.getAuthor().add(TypeConvertor.castToReference(value));
1970        } else if (name.equals("authenticator")) {
1971          this.authenticator = TypeConvertor.castToReference(value); // Reference
1972        } else if (name.equals("custodian")) {
1973          this.custodian = TypeConvertor.castToReference(value); // Reference
1974        } else if (name.equals("relatesTo")) {
1975          this.getRelatesTo().add((DocumentReferenceRelatesToComponent) value);
1976        } else if (name.equals("description")) {
1977          this.description = TypeConvertor.castToString(value); // StringType
1978        } else if (name.equals("securityLabel")) {
1979          this.getSecurityLabel().add(TypeConvertor.castToCodeableConcept(value));
1980        } else if (name.equals("content")) {
1981          this.getContent().add((DocumentReferenceContentComponent) value);
1982        } else if (name.equals("context")) {
1983          this.context = (DocumentReferenceContextComponent) value; // DocumentReferenceContextComponent
1984        } else
1985          return super.setProperty(name, value);
1986        return value;
1987      }
1988
1989      @Override
1990      public Base makeProperty(int hash, String name) throws FHIRException {
1991        switch (hash) {
1992        case 243769515:  return getMasterIdentifier();
1993        case -1618432855:  return addIdentifier(); 
1994        case -892481550:  return getStatusElement();
1995        case -23496886:  return getDocStatusElement();
1996        case 3575610:  return getType();
1997        case 50511102:  return addCategory(); 
1998        case -1867885268:  return getSubject();
1999        case 3076014:  return getDateElement();
2000        case -1406328437:  return addAuthor(); 
2001        case 1815000435:  return getAuthenticator();
2002        case 1611297262:  return getCustodian();
2003        case -7765931:  return addRelatesTo(); 
2004        case -1724546052:  return getDescriptionElement();
2005        case -722296940:  return addSecurityLabel(); 
2006        case 951530617:  return addContent(); 
2007        case 951530927:  return getContext();
2008        default: return super.makeProperty(hash, name);
2009        }
2010
2011      }
2012
2013      @Override
2014      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2015        switch (hash) {
2016        case 243769515: /*masterIdentifier*/ return new String[] {"Identifier"};
2017        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2018        case -892481550: /*status*/ return new String[] {"code"};
2019        case -23496886: /*docStatus*/ return new String[] {"code"};
2020        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
2021        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
2022        case -1867885268: /*subject*/ return new String[] {"Reference"};
2023        case 3076014: /*date*/ return new String[] {"instant"};
2024        case -1406328437: /*author*/ return new String[] {"Reference"};
2025        case 1815000435: /*authenticator*/ return new String[] {"Reference"};
2026        case 1611297262: /*custodian*/ return new String[] {"Reference"};
2027        case -7765931: /*relatesTo*/ return new String[] {};
2028        case -1724546052: /*description*/ return new String[] {"string"};
2029        case -722296940: /*securityLabel*/ return new String[] {"CodeableConcept"};
2030        case 951530617: /*content*/ return new String[] {};
2031        case 951530927: /*context*/ return new String[] {};
2032        default: return super.getTypesForProperty(hash, name);
2033        }
2034
2035      }
2036
2037      @Override
2038      public Base addChild(String name) throws FHIRException {
2039        if (name.equals("masterIdentifier")) {
2040          this.masterIdentifier = new Identifier();
2041          return this.masterIdentifier;
2042        }
2043        else if (name.equals("identifier")) {
2044          return addIdentifier();
2045        }
2046        else if (name.equals("status")) {
2047          throw new FHIRException("Cannot call addChild on a primitive type DocumentReference.status");
2048        }
2049        else if (name.equals("docStatus")) {
2050          throw new FHIRException("Cannot call addChild on a primitive type DocumentReference.docStatus");
2051        }
2052        else if (name.equals("type")) {
2053          this.type = new CodeableConcept();
2054          return this.type;
2055        }
2056        else if (name.equals("category")) {
2057          return addCategory();
2058        }
2059        else if (name.equals("subject")) {
2060          this.subject = new Reference();
2061          return this.subject;
2062        }
2063        else if (name.equals("date")) {
2064          throw new FHIRException("Cannot call addChild on a primitive type DocumentReference.date");
2065        }
2066        else if (name.equals("author")) {
2067          return addAuthor();
2068        }
2069        else if (name.equals("authenticator")) {
2070          this.authenticator = new Reference();
2071          return this.authenticator;
2072        }
2073        else if (name.equals("custodian")) {
2074          this.custodian = new Reference();
2075          return this.custodian;
2076        }
2077        else if (name.equals("relatesTo")) {
2078          return addRelatesTo();
2079        }
2080        else if (name.equals("description")) {
2081          throw new FHIRException("Cannot call addChild on a primitive type DocumentReference.description");
2082        }
2083        else if (name.equals("securityLabel")) {
2084          return addSecurityLabel();
2085        }
2086        else if (name.equals("content")) {
2087          return addContent();
2088        }
2089        else if (name.equals("context")) {
2090          this.context = new DocumentReferenceContextComponent();
2091          return this.context;
2092        }
2093        else
2094          return super.addChild(name);
2095      }
2096
2097  public String fhirType() {
2098    return "DocumentReference";
2099
2100  }
2101
2102      public DocumentReference copy() {
2103        DocumentReference dst = new DocumentReference();
2104        copyValues(dst);
2105        return dst;
2106      }
2107
2108      public void copyValues(DocumentReference dst) {
2109        super.copyValues(dst);
2110        dst.masterIdentifier = masterIdentifier == null ? null : masterIdentifier.copy();
2111        if (identifier != null) {
2112          dst.identifier = new ArrayList<Identifier>();
2113          for (Identifier i : identifier)
2114            dst.identifier.add(i.copy());
2115        };
2116        dst.status = status == null ? null : status.copy();
2117        dst.docStatus = docStatus == null ? null : docStatus.copy();
2118        dst.type = type == null ? null : type.copy();
2119        if (category != null) {
2120          dst.category = new ArrayList<CodeableConcept>();
2121          for (CodeableConcept i : category)
2122            dst.category.add(i.copy());
2123        };
2124        dst.subject = subject == null ? null : subject.copy();
2125        dst.date = date == null ? null : date.copy();
2126        if (author != null) {
2127          dst.author = new ArrayList<Reference>();
2128          for (Reference i : author)
2129            dst.author.add(i.copy());
2130        };
2131        dst.authenticator = authenticator == null ? null : authenticator.copy();
2132        dst.custodian = custodian == null ? null : custodian.copy();
2133        if (relatesTo != null) {
2134          dst.relatesTo = new ArrayList<DocumentReferenceRelatesToComponent>();
2135          for (DocumentReferenceRelatesToComponent i : relatesTo)
2136            dst.relatesTo.add(i.copy());
2137        };
2138        dst.description = description == null ? null : description.copy();
2139        if (securityLabel != null) {
2140          dst.securityLabel = new ArrayList<CodeableConcept>();
2141          for (CodeableConcept i : securityLabel)
2142            dst.securityLabel.add(i.copy());
2143        };
2144        if (content != null) {
2145          dst.content = new ArrayList<DocumentReferenceContentComponent>();
2146          for (DocumentReferenceContentComponent i : content)
2147            dst.content.add(i.copy());
2148        };
2149        dst.context = context == null ? null : context.copy();
2150      }
2151
2152      protected DocumentReference typedCopy() {
2153        return copy();
2154      }
2155
2156      @Override
2157      public boolean equalsDeep(Base other_) {
2158        if (!super.equalsDeep(other_))
2159          return false;
2160        if (!(other_ instanceof DocumentReference))
2161          return false;
2162        DocumentReference o = (DocumentReference) other_;
2163        return compareDeep(masterIdentifier, o.masterIdentifier, true) && compareDeep(identifier, o.identifier, true)
2164           && compareDeep(status, o.status, true) && compareDeep(docStatus, o.docStatus, true) && compareDeep(type, o.type, true)
2165           && compareDeep(category, o.category, true) && compareDeep(subject, o.subject, true) && compareDeep(date, o.date, true)
2166           && compareDeep(author, o.author, true) && compareDeep(authenticator, o.authenticator, true) && compareDeep(custodian, o.custodian, true)
2167           && compareDeep(relatesTo, o.relatesTo, true) && compareDeep(description, o.description, true) && compareDeep(securityLabel, o.securityLabel, true)
2168           && compareDeep(content, o.content, true) && compareDeep(context, o.context, true);
2169      }
2170
2171      @Override
2172      public boolean equalsShallow(Base other_) {
2173        if (!super.equalsShallow(other_))
2174          return false;
2175        if (!(other_ instanceof DocumentReference))
2176          return false;
2177        DocumentReference o = (DocumentReference) other_;
2178        return compareValues(status, o.status, true) && compareValues(docStatus, o.docStatus, true) && compareValues(date, o.date, true)
2179           && compareValues(description, o.description, true);
2180      }
2181
2182      public boolean isEmpty() {
2183        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(masterIdentifier, identifier
2184          , status, docStatus, type, category, subject, date, author, authenticator, custodian
2185          , relatesTo, description, securityLabel, content, context);
2186      }
2187
2188  @Override
2189  public ResourceType getResourceType() {
2190    return ResourceType.DocumentReference;
2191   }
2192
2193 /**
2194   * Search parameter: <b>authenticator</b>
2195   * <p>
2196   * Description: <b>Who/what authenticated the document</b><br>
2197   * Type: <b>reference</b><br>
2198   * Path: <b>DocumentReference.authenticator</b><br>
2199   * </p>
2200   */
2201  @SearchParamDefinition(name="authenticator", path="DocumentReference.authenticator", description="Who/what authenticated the document", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={Organization.class, Practitioner.class, PractitionerRole.class } )
2202  public static final String SP_AUTHENTICATOR = "authenticator";
2203 /**
2204   * <b>Fluent Client</b> search parameter constant for <b>authenticator</b>
2205   * <p>
2206   * Description: <b>Who/what authenticated the document</b><br>
2207   * Type: <b>reference</b><br>
2208   * Path: <b>DocumentReference.authenticator</b><br>
2209   * </p>
2210   */
2211  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam AUTHENTICATOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_AUTHENTICATOR);
2212
2213/**
2214   * Constant for fluent queries to be used to add include statements. Specifies
2215   * the path value of "<b>DocumentReference:authenticator</b>".
2216   */
2217  public static final ca.uhn.fhir.model.api.Include INCLUDE_AUTHENTICATOR = new ca.uhn.fhir.model.api.Include("DocumentReference:authenticator").toLocked();
2218
2219 /**
2220   * Search parameter: <b>author</b>
2221   * <p>
2222   * Description: <b>Who and/or what authored the document</b><br>
2223   * Type: <b>reference</b><br>
2224   * Path: <b>DocumentReference.author</b><br>
2225   * </p>
2226   */
2227  @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={Device.class, Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
2228  public static final String SP_AUTHOR = "author";
2229 /**
2230   * <b>Fluent Client</b> search parameter constant for <b>author</b>
2231   * <p>
2232   * Description: <b>Who and/or what authored the document</b><br>
2233   * Type: <b>reference</b><br>
2234   * Path: <b>DocumentReference.author</b><br>
2235   * </p>
2236   */
2237  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam AUTHOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_AUTHOR);
2238
2239/**
2240   * Constant for fluent queries to be used to add include statements. Specifies
2241   * the path value of "<b>DocumentReference:author</b>".
2242   */
2243  public static final ca.uhn.fhir.model.api.Include INCLUDE_AUTHOR = new ca.uhn.fhir.model.api.Include("DocumentReference:author").toLocked();
2244
2245 /**
2246   * Search parameter: <b>category</b>
2247   * <p>
2248   * Description: <b>Categorization of document</b><br>
2249   * Type: <b>token</b><br>
2250   * Path: <b>DocumentReference.category</b><br>
2251   * </p>
2252   */
2253  @SearchParamDefinition(name="category", path="DocumentReference.category", description="Categorization of document", type="token" )
2254  public static final String SP_CATEGORY = "category";
2255 /**
2256   * <b>Fluent Client</b> search parameter constant for <b>category</b>
2257   * <p>
2258   * Description: <b>Categorization of document</b><br>
2259   * Type: <b>token</b><br>
2260   * Path: <b>DocumentReference.category</b><br>
2261   * </p>
2262   */
2263  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
2264
2265 /**
2266   * Search parameter: <b>contenttype</b>
2267   * <p>
2268   * Description: <b>Mime type of the content, with charset etc.</b><br>
2269   * Type: <b>token</b><br>
2270   * Path: <b>DocumentReference.content.attachment.contentType</b><br>
2271   * </p>
2272   */
2273  @SearchParamDefinition(name="contenttype", path="DocumentReference.content.attachment.contentType", description="Mime type of the content, with charset etc.", type="token" )
2274  public static final String SP_CONTENTTYPE = "contenttype";
2275 /**
2276   * <b>Fluent Client</b> search parameter constant for <b>contenttype</b>
2277   * <p>
2278   * Description: <b>Mime type of the content, with charset etc.</b><br>
2279   * Type: <b>token</b><br>
2280   * Path: <b>DocumentReference.content.attachment.contentType</b><br>
2281   * </p>
2282   */
2283  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTENTTYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTENTTYPE);
2284
2285 /**
2286   * Search parameter: <b>custodian</b>
2287   * <p>
2288   * Description: <b>Organization which maintains the document</b><br>
2289   * Type: <b>reference</b><br>
2290   * Path: <b>DocumentReference.custodian</b><br>
2291   * </p>
2292   */
2293  @SearchParamDefinition(name="custodian", path="DocumentReference.custodian", description="Organization which maintains the document", type="reference", target={Organization.class } )
2294  public static final String SP_CUSTODIAN = "custodian";
2295 /**
2296   * <b>Fluent Client</b> search parameter constant for <b>custodian</b>
2297   * <p>
2298   * Description: <b>Organization which maintains the document</b><br>
2299   * Type: <b>reference</b><br>
2300   * Path: <b>DocumentReference.custodian</b><br>
2301   * </p>
2302   */
2303  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam CUSTODIAN = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_CUSTODIAN);
2304
2305/**
2306   * Constant for fluent queries to be used to add include statements. Specifies
2307   * the path value of "<b>DocumentReference:custodian</b>".
2308   */
2309  public static final ca.uhn.fhir.model.api.Include INCLUDE_CUSTODIAN = new ca.uhn.fhir.model.api.Include("DocumentReference:custodian").toLocked();
2310
2311 /**
2312   * Search parameter: <b>date</b>
2313   * <p>
2314   * Description: <b>When this document reference was created</b><br>
2315   * Type: <b>date</b><br>
2316   * Path: <b>DocumentReference.date</b><br>
2317   * </p>
2318   */
2319  @SearchParamDefinition(name="date", path="DocumentReference.date", description="When this document reference was created", type="date" )
2320  public static final String SP_DATE = "date";
2321 /**
2322   * <b>Fluent Client</b> search parameter constant for <b>date</b>
2323   * <p>
2324   * Description: <b>When this document reference was created</b><br>
2325   * Type: <b>date</b><br>
2326   * Path: <b>DocumentReference.date</b><br>
2327   * </p>
2328   */
2329  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
2330
2331 /**
2332   * Search parameter: <b>description</b>
2333   * <p>
2334   * Description: <b>Human-readable description</b><br>
2335   * Type: <b>string</b><br>
2336   * Path: <b>DocumentReference.description</b><br>
2337   * </p>
2338   */
2339  @SearchParamDefinition(name="description", path="DocumentReference.description", description="Human-readable description", type="string" )
2340  public static final String SP_DESCRIPTION = "description";
2341 /**
2342   * <b>Fluent Client</b> search parameter constant for <b>description</b>
2343   * <p>
2344   * Description: <b>Human-readable description</b><br>
2345   * Type: <b>string</b><br>
2346   * Path: <b>DocumentReference.description</b><br>
2347   * </p>
2348   */
2349  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
2350
2351 /**
2352   * Search parameter: <b>event</b>
2353   * <p>
2354   * Description: <b>Main clinical acts documented</b><br>
2355   * Type: <b>token</b><br>
2356   * Path: <b>DocumentReference.context.event</b><br>
2357   * </p>
2358   */
2359  @SearchParamDefinition(name="event", path="DocumentReference.context.event", description="Main clinical acts documented", type="token" )
2360  public static final String SP_EVENT = "event";
2361 /**
2362   * <b>Fluent Client</b> search parameter constant for <b>event</b>
2363   * <p>
2364   * Description: <b>Main clinical acts documented</b><br>
2365   * Type: <b>token</b><br>
2366   * Path: <b>DocumentReference.context.event</b><br>
2367   * </p>
2368   */
2369  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EVENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EVENT);
2370
2371 /**
2372   * Search parameter: <b>facility</b>
2373   * <p>
2374   * Description: <b>Kind of facility where patient was seen</b><br>
2375   * Type: <b>token</b><br>
2376   * Path: <b>DocumentReference.context.facilityType</b><br>
2377   * </p>
2378   */
2379  @SearchParamDefinition(name="facility", path="DocumentReference.context.facilityType", description="Kind of facility where patient was seen", type="token" )
2380  public static final String SP_FACILITY = "facility";
2381 /**
2382   * <b>Fluent Client</b> search parameter constant for <b>facility</b>
2383   * <p>
2384   * Description: <b>Kind of facility where patient was seen</b><br>
2385   * Type: <b>token</b><br>
2386   * Path: <b>DocumentReference.context.facilityType</b><br>
2387   * </p>
2388   */
2389  public static final ca.uhn.fhir.rest.gclient.TokenClientParam FACILITY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_FACILITY);
2390
2391 /**
2392   * Search parameter: <b>format</b>
2393   * <p>
2394   * Description: <b>Format/content rules for the document</b><br>
2395   * Type: <b>token</b><br>
2396   * Path: <b>DocumentReference.content.format</b><br>
2397   * </p>
2398   */
2399  @SearchParamDefinition(name="format", path="DocumentReference.content.format", description="Format/content rules for the document", type="token" )
2400  public static final String SP_FORMAT = "format";
2401 /**
2402   * <b>Fluent Client</b> search parameter constant for <b>format</b>
2403   * <p>
2404   * Description: <b>Format/content rules for the document</b><br>
2405   * Type: <b>token</b><br>
2406   * Path: <b>DocumentReference.content.format</b><br>
2407   * </p>
2408   */
2409  public static final ca.uhn.fhir.rest.gclient.TokenClientParam FORMAT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_FORMAT);
2410
2411 /**
2412   * Search parameter: <b>language</b>
2413   * <p>
2414   * Description: <b>Human language of the content (BCP-47)</b><br>
2415   * Type: <b>token</b><br>
2416   * Path: <b>DocumentReference.content.attachment.language</b><br>
2417   * </p>
2418   */
2419  @SearchParamDefinition(name="language", path="DocumentReference.content.attachment.language", description="Human language of the content (BCP-47)", type="token" )
2420  public static final String SP_LANGUAGE = "language";
2421 /**
2422   * <b>Fluent Client</b> search parameter constant for <b>language</b>
2423   * <p>
2424   * Description: <b>Human language of the content (BCP-47)</b><br>
2425   * Type: <b>token</b><br>
2426   * Path: <b>DocumentReference.content.attachment.language</b><br>
2427   * </p>
2428   */
2429  public static final ca.uhn.fhir.rest.gclient.TokenClientParam LANGUAGE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_LANGUAGE);
2430
2431 /**
2432   * Search parameter: <b>location</b>
2433   * <p>
2434   * Description: <b>Uri where the data can be found</b><br>
2435   * Type: <b>uri</b><br>
2436   * Path: <b>DocumentReference.content.attachment.url</b><br>
2437   * </p>
2438   */
2439  @SearchParamDefinition(name="location", path="DocumentReference.content.attachment.url", description="Uri where the data can be found", type="uri" )
2440  public static final String SP_LOCATION = "location";
2441 /**
2442   * <b>Fluent Client</b> search parameter constant for <b>location</b>
2443   * <p>
2444   * Description: <b>Uri where the data can be found</b><br>
2445   * Type: <b>uri</b><br>
2446   * Path: <b>DocumentReference.content.attachment.url</b><br>
2447   * </p>
2448   */
2449  public static final ca.uhn.fhir.rest.gclient.UriClientParam LOCATION = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_LOCATION);
2450
2451 /**
2452   * Search parameter: <b>period</b>
2453   * <p>
2454   * Description: <b>Time of service that is being documented</b><br>
2455   * Type: <b>date</b><br>
2456   * Path: <b>DocumentReference.context.period</b><br>
2457   * </p>
2458   */
2459  @SearchParamDefinition(name="period", path="DocumentReference.context.period", description="Time of service that is being documented", type="date" )
2460  public static final String SP_PERIOD = "period";
2461 /**
2462   * <b>Fluent Client</b> search parameter constant for <b>period</b>
2463   * <p>
2464   * Description: <b>Time of service that is being documented</b><br>
2465   * Type: <b>date</b><br>
2466   * Path: <b>DocumentReference.context.period</b><br>
2467   * </p>
2468   */
2469  public static final ca.uhn.fhir.rest.gclient.DateClientParam PERIOD = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_PERIOD);
2470
2471 /**
2472   * Search parameter: <b>related</b>
2473   * <p>
2474   * Description: <b>Related identifiers or resources</b><br>
2475   * Type: <b>reference</b><br>
2476   * Path: <b>DocumentReference.context.related</b><br>
2477   * </p>
2478   */
2479  @SearchParamDefinition(name="related", path="DocumentReference.context.related", description="Related identifiers or resources", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, CatalogEntry.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, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceMetric.class, DeviceRequest.class, DeviceUseStatement.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Media.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchDefinition.class, ResearchElementDefinition.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, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2480  public static final String SP_RELATED = "related";
2481 /**
2482   * <b>Fluent Client</b> search parameter constant for <b>related</b>
2483   * <p>
2484   * Description: <b>Related identifiers or resources</b><br>
2485   * Type: <b>reference</b><br>
2486   * Path: <b>DocumentReference.context.related</b><br>
2487   * </p>
2488   */
2489  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam RELATED = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_RELATED);
2490
2491/**
2492   * Constant for fluent queries to be used to add include statements. Specifies
2493   * the path value of "<b>DocumentReference:related</b>".
2494   */
2495  public static final ca.uhn.fhir.model.api.Include INCLUDE_RELATED = new ca.uhn.fhir.model.api.Include("DocumentReference:related").toLocked();
2496
2497 /**
2498   * Search parameter: <b>relatesto</b>
2499   * <p>
2500   * Description: <b>Target of the relationship</b><br>
2501   * Type: <b>reference</b><br>
2502   * Path: <b>DocumentReference.relatesTo.target</b><br>
2503   * </p>
2504   */
2505  @SearchParamDefinition(name="relatesto", path="DocumentReference.relatesTo.target", description="Target of the relationship", type="reference", target={DocumentReference.class } )
2506  public static final String SP_RELATESTO = "relatesto";
2507 /**
2508   * <b>Fluent Client</b> search parameter constant for <b>relatesto</b>
2509   * <p>
2510   * Description: <b>Target of the relationship</b><br>
2511   * Type: <b>reference</b><br>
2512   * Path: <b>DocumentReference.relatesTo.target</b><br>
2513   * </p>
2514   */
2515  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam RELATESTO = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_RELATESTO);
2516
2517/**
2518   * Constant for fluent queries to be used to add include statements. Specifies
2519   * the path value of "<b>DocumentReference:relatesto</b>".
2520   */
2521  public static final ca.uhn.fhir.model.api.Include INCLUDE_RELATESTO = new ca.uhn.fhir.model.api.Include("DocumentReference:relatesto").toLocked();
2522
2523 /**
2524   * Search parameter: <b>relation</b>
2525   * <p>
2526   * Description: <b>replaces | transforms | signs | appends</b><br>
2527   * Type: <b>token</b><br>
2528   * Path: <b>DocumentReference.relatesTo.code</b><br>
2529   * </p>
2530   */
2531  @SearchParamDefinition(name="relation", path="DocumentReference.relatesTo.code", description="replaces | transforms | signs | appends", type="token" )
2532  public static final String SP_RELATION = "relation";
2533 /**
2534   * <b>Fluent Client</b> search parameter constant for <b>relation</b>
2535   * <p>
2536   * Description: <b>replaces | transforms | signs | appends</b><br>
2537   * Type: <b>token</b><br>
2538   * Path: <b>DocumentReference.relatesTo.code</b><br>
2539   * </p>
2540   */
2541  public static final ca.uhn.fhir.rest.gclient.TokenClientParam RELATION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_RELATION);
2542
2543 /**
2544   * Search parameter: <b>relationship</b>
2545   * <p>
2546   * Description: <b>Combination of relation and relatesTo</b><br>
2547   * Type: <b>composite</b><br>
2548   * Path: <b>DocumentReference.relatesTo</b><br>
2549   * </p>
2550   */
2551  @SearchParamDefinition(name="relationship", path="DocumentReference.relatesTo", description="Combination of relation and relatesTo", type="composite", compositeOf={"relatesto", "relation"} )
2552  public static final String SP_RELATIONSHIP = "relationship";
2553 /**
2554   * <b>Fluent Client</b> search parameter constant for <b>relationship</b>
2555   * <p>
2556   * Description: <b>Combination of relation and relatesTo</b><br>
2557   * Type: <b>composite</b><br>
2558   * Path: <b>DocumentReference.relatesTo</b><br>
2559   * </p>
2560   */
2561  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);
2562
2563 /**
2564   * Search parameter: <b>security-label</b>
2565   * <p>
2566   * Description: <b>Document security-tags</b><br>
2567   * Type: <b>token</b><br>
2568   * Path: <b>DocumentReference.securityLabel</b><br>
2569   * </p>
2570   */
2571  @SearchParamDefinition(name="security-label", path="DocumentReference.securityLabel", description="Document security-tags", type="token" )
2572  public static final String SP_SECURITY_LABEL = "security-label";
2573 /**
2574   * <b>Fluent Client</b> search parameter constant for <b>security-label</b>
2575   * <p>
2576   * Description: <b>Document security-tags</b><br>
2577   * Type: <b>token</b><br>
2578   * Path: <b>DocumentReference.securityLabel</b><br>
2579   * </p>
2580   */
2581  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SECURITY_LABEL = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SECURITY_LABEL);
2582
2583 /**
2584   * Search parameter: <b>setting</b>
2585   * <p>
2586   * Description: <b>Additional details about where the content was created (e.g. clinical specialty)</b><br>
2587   * Type: <b>token</b><br>
2588   * Path: <b>DocumentReference.context.practiceSetting</b><br>
2589   * </p>
2590   */
2591  @SearchParamDefinition(name="setting", path="DocumentReference.context.practiceSetting", description="Additional details about where the content was created (e.g. clinical specialty)", type="token" )
2592  public static final String SP_SETTING = "setting";
2593 /**
2594   * <b>Fluent Client</b> search parameter constant for <b>setting</b>
2595   * <p>
2596   * Description: <b>Additional details about where the content was created (e.g. clinical specialty)</b><br>
2597   * Type: <b>token</b><br>
2598   * Path: <b>DocumentReference.context.practiceSetting</b><br>
2599   * </p>
2600   */
2601  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SETTING = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SETTING);
2602
2603 /**
2604   * Search parameter: <b>status</b>
2605   * <p>
2606   * Description: <b>current | superseded | entered-in-error</b><br>
2607   * Type: <b>token</b><br>
2608   * Path: <b>DocumentReference.status</b><br>
2609   * </p>
2610   */
2611  @SearchParamDefinition(name="status", path="DocumentReference.status", description="current | superseded | entered-in-error", type="token" )
2612  public static final String SP_STATUS = "status";
2613 /**
2614   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2615   * <p>
2616   * Description: <b>current | superseded | entered-in-error</b><br>
2617   * Type: <b>token</b><br>
2618   * Path: <b>DocumentReference.status</b><br>
2619   * </p>
2620   */
2621  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2622
2623 /**
2624   * Search parameter: <b>subject</b>
2625   * <p>
2626   * Description: <b>Who/what is the subject of the document</b><br>
2627   * Type: <b>reference</b><br>
2628   * Path: <b>DocumentReference.subject</b><br>
2629   * </p>
2630   */
2631  @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={Device.class, Group.class, Patient.class, Practitioner.class } )
2632  public static final String SP_SUBJECT = "subject";
2633 /**
2634   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
2635   * <p>
2636   * Description: <b>Who/what is the subject of the document</b><br>
2637   * Type: <b>reference</b><br>
2638   * Path: <b>DocumentReference.subject</b><br>
2639   * </p>
2640   */
2641  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
2642
2643/**
2644   * Constant for fluent queries to be used to add include statements. Specifies
2645   * the path value of "<b>DocumentReference:subject</b>".
2646   */
2647  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("DocumentReference:subject").toLocked();
2648
2649 /**
2650   * Search parameter: <b>encounter</b>
2651   * <p>
2652   * Description: <b>Multiple Resources: 
2653
2654* [Composition](composition.html): Context of the Composition
2655* [DeviceRequest](devicerequest.html): Encounter during which request was created
2656* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
2657* [DocumentReference](documentreference.html): Context of the document  content
2658* [Flag](flag.html): Alert relevant during encounter
2659* [List](list.html): Context in which list created
2660* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
2661* [Observation](observation.html): Encounter related to the observation
2662* [Procedure](procedure.html): Encounter created as part of
2663* [RiskAssessment](riskassessment.html): Where was assessment performed?
2664* [ServiceRequest](servicerequest.html): An encounter in which this request is made
2665* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
2666</b><br>
2667   * Type: <b>reference</b><br>
2668   * Path: <b>Composition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | DocumentReference.context.encounter | Flag.encounter | List.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | RiskAssessment.encounter | ServiceRequest.encounter | VisionPrescription.encounter</b><br>
2669   * </p>
2670   */
2671  @SearchParamDefinition(name="encounter", path="Composition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | DocumentReference.context.encounter | Flag.encounter | List.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | RiskAssessment.encounter | ServiceRequest.encounter | VisionPrescription.encounter", description="Multiple Resources: \r\n\r\n* [Composition](composition.html): Context of the Composition\r\n* [DeviceRequest](devicerequest.html): Encounter during which request was created\r\n* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made\r\n* [DocumentReference](documentreference.html): Context of the document  content\r\n* [Flag](flag.html): Alert relevant during encounter\r\n* [List](list.html): Context in which list created\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier\r\n* [Observation](observation.html): Encounter related to the observation\r\n* [Procedure](procedure.html): Encounter created as part of\r\n* [RiskAssessment](riskassessment.html): Where was assessment performed?\r\n* [ServiceRequest](servicerequest.html): An encounter in which this request is made\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Encounter") }, target={Encounter.class, EpisodeOfCare.class } )
2672  public static final String SP_ENCOUNTER = "encounter";
2673 /**
2674   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
2675   * <p>
2676   * Description: <b>Multiple Resources: 
2677
2678* [Composition](composition.html): Context of the Composition
2679* [DeviceRequest](devicerequest.html): Encounter during which request was created
2680* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
2681* [DocumentReference](documentreference.html): Context of the document  content
2682* [Flag](flag.html): Alert relevant during encounter
2683* [List](list.html): Context in which list created
2684* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
2685* [Observation](observation.html): Encounter related to the observation
2686* [Procedure](procedure.html): Encounter created as part of
2687* [RiskAssessment](riskassessment.html): Where was assessment performed?
2688* [ServiceRequest](servicerequest.html): An encounter in which this request is made
2689* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
2690</b><br>
2691   * Type: <b>reference</b><br>
2692   * Path: <b>Composition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | DocumentReference.context.encounter | Flag.encounter | List.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | RiskAssessment.encounter | ServiceRequest.encounter | VisionPrescription.encounter</b><br>
2693   * </p>
2694   */
2695  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
2696
2697/**
2698   * Constant for fluent queries to be used to add include statements. Specifies
2699   * the path value of "<b>DocumentReference:encounter</b>".
2700   */
2701  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("DocumentReference:encounter").toLocked();
2702
2703 /**
2704   * Search parameter: <b>identifier</b>
2705   * <p>
2706   * Description: <b>Multiple Resources: 
2707
2708* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2709* [CarePlan](careplan.html): External Ids for this plan
2710* [CareTeam](careteam.html): External Ids for this team
2711* [Composition](composition.html): Version-independent identifier for the Composition
2712* [Condition](condition.html): A unique identifier of the condition record
2713* [Consent](consent.html): Identifier for this record (external references)
2714* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2715* [DeviceRequest](devicerequest.html): Business identifier for request/order
2716* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2717* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
2718* [DocumentReference](documentreference.html): Master Version Specific Identifier
2719* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2720* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2721* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2722* [Goal](goal.html): External Ids for this goal
2723* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID and Accession number
2724* [Immunization](immunization.html): Business identifier
2725* [List](list.html): Business identifier
2726* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2727* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2728* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2729* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
2730* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2731* [Observation](observation.html): The unique id for a particular observation
2732* [Procedure](procedure.html): A unique identifier for a procedure
2733* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2734* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2735* [SupplyDelivery](supplydelivery.html): External identifier
2736* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2737* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2738</b><br>
2739   * Type: <b>token</b><br>
2740   * Path: <b>AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.masterIdentifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier</b><br>
2741   * </p>
2742   */
2743  @SearchParamDefinition(name="identifier", path="AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.masterIdentifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): External ids for this item\r\n* [CarePlan](careplan.html): External Ids for this plan\r\n* [CareTeam](careteam.html): External Ids for this team\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* [DetectedIssue](detectedissue.html): Unique id for the detected issue\r\n* [DeviceRequest](devicerequest.html): Business identifier for request/order\r\n* [DiagnosticReport](diagnosticreport.html): An identifier for the report\r\n* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents\r\n* [DocumentReference](documentreference.html): Master Version Specific Identifier\r\n* [Encounter](encounter.html): Identifier(s) by which this encounter is known\r\n* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier\r\n* [Goal](goal.html): External Ids for this goal\r\n* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID and Accession number\r\n* [Immunization](immunization.html): Business identifier\r\n* [List](list.html): Business 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* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier\r\n* [Observation](observation.html): The unique id for a particular observation\r\n* [Procedure](procedure.html): A unique identifier for a procedure\r\n* [RiskAssessment](riskassessment.html): Unique identifier for the assessment\r\n* [ServiceRequest](servicerequest.html): Identifiers assigned to this order\r\n* [SupplyDelivery](supplydelivery.html): External identifier\r\n* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier\r\n", type="token" )
2744  public static final String SP_IDENTIFIER = "identifier";
2745 /**
2746   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2747   * <p>
2748   * Description: <b>Multiple Resources: 
2749
2750* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2751* [CarePlan](careplan.html): External Ids for this plan
2752* [CareTeam](careteam.html): External Ids for this team
2753* [Composition](composition.html): Version-independent identifier for the Composition
2754* [Condition](condition.html): A unique identifier of the condition record
2755* [Consent](consent.html): Identifier for this record (external references)
2756* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2757* [DeviceRequest](devicerequest.html): Business identifier for request/order
2758* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2759* [DocumentManifest](documentmanifest.html): Unique Identifier for the set of documents
2760* [DocumentReference](documentreference.html): Master Version Specific Identifier
2761* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2762* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2763* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2764* [Goal](goal.html): External Ids for this goal
2765* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID and Accession number
2766* [Immunization](immunization.html): Business identifier
2767* [List](list.html): Business identifier
2768* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2769* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2770* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2771* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
2772* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2773* [Observation](observation.html): The unique id for a particular observation
2774* [Procedure](procedure.html): A unique identifier for a procedure
2775* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2776* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2777* [SupplyDelivery](supplydelivery.html): External identifier
2778* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2779* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2780</b><br>
2781   * Type: <b>token</b><br>
2782   * Path: <b>AllergyIntolerance.identifier | CarePlan.identifier | CareTeam.identifier | Composition.identifier | Condition.identifier | Consent.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DiagnosticReport.identifier | DocumentManifest.masterIdentifier | DocumentManifest.identifier | DocumentReference.masterIdentifier | DocumentReference.identifier | Encounter.identifier | EpisodeOfCare.identifier | FamilyMemberHistory.identifier | Goal.identifier | ImagingStudy.identifier | Immunization.identifier | List.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | NutritionOrder.identifier | Observation.identifier | Procedure.identifier | RiskAssessment.identifier | ServiceRequest.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | VisionPrescription.identifier</b><br>
2783   * </p>
2784   */
2785  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2786
2787 /**
2788   * Search parameter: <b>patient</b>
2789   * <p>
2790   * Description: <b>Multiple Resources: 
2791
2792* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2793* [CarePlan](careplan.html): Who the care plan is for
2794* [CareTeam](careteam.html): Who care team is for
2795* [ClinicalImpression](clinicalimpression.html): Patient or group assessed
2796* [Composition](composition.html): Who and/or what the composition is about
2797* [Condition](condition.html): Who has the condition?
2798* [Consent](consent.html): Who the consent applies to
2799* [DetectedIssue](detectedissue.html): Associated patient
2800* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2801* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient
2802* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2803* [DocumentManifest](documentmanifest.html): The subject of the set of documents
2804* [DocumentReference](documentreference.html): Who/what is the subject of the document
2805* [Encounter](encounter.html): The patient or group present at the encounter
2806* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2807* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2808* [Flag](flag.html): The identity of a subject to list flags for
2809* [Goal](goal.html): Who this goal is intended for
2810* [ImagingStudy](imagingstudy.html): Who the study is about
2811* [Immunization](immunization.html): The patient for the vaccination record
2812* [List](list.html): If all resources have the same subject
2813* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2814* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2815* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2816* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2817* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
2818* [Observation](observation.html): The subject that the observation is about (if patient)
2819* [Procedure](procedure.html): Search by subject - a patient
2820* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2821* [ServiceRequest](servicerequest.html): Search by subject - a patient
2822* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2823* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2824</b><br>
2825   * Type: <b>reference</b><br>
2826   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
2827   * </p>
2828   */
2829  @SearchParamDefinition(name="patient", path="AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ClinicalImpression](clinicalimpression.html): Patient or group assessed\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentManifest](documentmanifest.html): The subject of the set of documents\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient or group present at the encounter\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [List](list.html): If all resources have the same subject\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", target={Account.class, ActivityDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, CatalogEntry.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, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceMetric.class, DeviceRequest.class, DeviceUseStatement.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Media.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestGroup.class, ResearchDefinition.class, ResearchElementDefinition.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, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
2830  public static final String SP_PATIENT = "patient";
2831 /**
2832   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
2833   * <p>
2834   * Description: <b>Multiple Resources: 
2835
2836* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2837* [CarePlan](careplan.html): Who the care plan is for
2838* [CareTeam](careteam.html): Who care team is for
2839* [ClinicalImpression](clinicalimpression.html): Patient or group assessed
2840* [Composition](composition.html): Who and/or what the composition is about
2841* [Condition](condition.html): Who has the condition?
2842* [Consent](consent.html): Who the consent applies to
2843* [DetectedIssue](detectedissue.html): Associated patient
2844* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2845* [DeviceUseStatement](deviceusestatement.html): Search by subject - a patient
2846* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2847* [DocumentManifest](documentmanifest.html): The subject of the set of documents
2848* [DocumentReference](documentreference.html): Who/what is the subject of the document
2849* [Encounter](encounter.html): The patient or group present at the encounter
2850* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2851* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2852* [Flag](flag.html): The identity of a subject to list flags for
2853* [Goal](goal.html): Who this goal is intended for
2854* [ImagingStudy](imagingstudy.html): Who the study is about
2855* [Immunization](immunization.html): The patient for the vaccination record
2856* [List](list.html): If all resources have the same subject
2857* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2858* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2859* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2860* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2861* [NutritionOrder](nutritionorder.html): The identity of the person who requires the diet, formula or nutritional supplement
2862* [Observation](observation.html): The subject that the observation is about (if patient)
2863* [Procedure](procedure.html): Search by subject - a patient
2864* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2865* [ServiceRequest](servicerequest.html): Search by subject - a patient
2866* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2867* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2868</b><br>
2869   * Type: <b>reference</b><br>
2870   * Path: <b>AllergyIntolerance.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ClinicalImpression.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.patient | DetectedIssue.patient | DeviceRequest.subject.where(resolve() is Patient) | DeviceUseStatement.subject.where(resolve() is Patient) | DiagnosticReport.subject.where(resolve() is Patient) | DocumentManifest.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EpisodeOfCare.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | List.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | NutritionOrder.patient | Observation.subject.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | SupplyDelivery.patient | VisionPrescription.patient</b><br>
2871   * </p>
2872   */
2873  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
2874
2875/**
2876   * Constant for fluent queries to be used to add include statements. Specifies
2877   * the path value of "<b>DocumentReference:patient</b>".
2878   */
2879  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("DocumentReference:patient").toLocked();
2880
2881 /**
2882   * Search parameter: <b>type</b>
2883   * <p>
2884   * Description: <b>Multiple Resources: 
2885
2886* [AllergyIntolerance](allergyintolerance.html): allergy | intolerance - Underlying mechanism (if known)
2887* [Composition](composition.html): Kind of composition (LOINC if possible)
2888* [DocumentManifest](documentmanifest.html): Kind of document set
2889* [DocumentReference](documentreference.html): Kind of document (LOINC if possible)
2890* [Encounter](encounter.html): Specific type of encounter
2891* [EpisodeOfCare](episodeofcare.html): Type/class  - e.g. specialist referral, disease management
2892</b><br>
2893   * Type: <b>token</b><br>
2894   * Path: <b>AllergyIntolerance.type | Composition.type | DocumentManifest.type | DocumentReference.type | Encounter.type | EpisodeOfCare.type</b><br>
2895   * </p>
2896   */
2897  @SearchParamDefinition(name="type", path="AllergyIntolerance.type | Composition.type | DocumentManifest.type | DocumentReference.type | Encounter.type | EpisodeOfCare.type", description="Multiple Resources: \r\n\r\n* [AllergyIntolerance](allergyintolerance.html): allergy | intolerance - Underlying mechanism (if known)\r\n* [Composition](composition.html): Kind of composition (LOINC if possible)\r\n* [DocumentManifest](documentmanifest.html): Kind of document set\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", type="token" )
2898  public static final String SP_TYPE = "type";
2899 /**
2900   * <b>Fluent Client</b> search parameter constant for <b>type</b>
2901   * <p>
2902   * Description: <b>Multiple Resources: 
2903
2904* [AllergyIntolerance](allergyintolerance.html): allergy | intolerance - Underlying mechanism (if known)
2905* [Composition](composition.html): Kind of composition (LOINC if possible)
2906* [DocumentManifest](documentmanifest.html): Kind of document set
2907* [DocumentReference](documentreference.html): Kind of document (LOINC if possible)
2908* [Encounter](encounter.html): Specific type of encounter
2909* [EpisodeOfCare](episodeofcare.html): Type/class  - e.g. specialist referral, disease management
2910</b><br>
2911   * Type: <b>token</b><br>
2912   * Path: <b>AllergyIntolerance.type | Composition.type | DocumentManifest.type | DocumentReference.type | Encounter.type | EpisodeOfCare.type</b><br>
2913   * </p>
2914   */
2915  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TYPE);
2916
2917
2918}
2919