001package org.hl7.fhir.dstu3.model;
002
003
004
005/*
006  Copyright (c) 2011+, HL7, Inc.
007  All rights reserved.
008  
009  Redistribution and use in source and binary forms, with or without modification, 
010  are permitted provided that the following conditions are met:
011  
012   * Redistributions of source code must retain the above copyright notice, this 
013     list of conditions and the following disclaimer.
014   * Redistributions in binary form must reproduce the above copyright notice, 
015     this list of conditions and the following disclaimer in the documentation 
016     and/or other materials provided with the distribution.
017   * Neither the name of HL7 nor the names of its contributors may be used to 
018     endorse or promote products derived from this software without specific 
019     prior written permission.
020  
021  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
022  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
023  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
024  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
025  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
026  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
027  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
028  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
029  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
030  POSSIBILITY OF SUCH DAMAGE.
031  
032*/
033
034// Generated on Fri, Mar 16, 2018 15:21+1100 for FHIR v3.0.x
035import java.util.ArrayList;
036import java.util.Date;
037import java.util.List;
038
039import org.hl7.fhir.dstu3.model.Enumerations.DocumentReferenceStatus;
040import org.hl7.fhir.dstu3.model.Enumerations.DocumentReferenceStatusEnumFactory;
041import org.hl7.fhir.exceptions.FHIRException;
042import org.hl7.fhir.exceptions.FHIRFormatError;
043import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
044import org.hl7.fhir.utilities.Utilities;
045
046import ca.uhn.fhir.model.api.annotation.Block;
047import ca.uhn.fhir.model.api.annotation.Child;
048import ca.uhn.fhir.model.api.annotation.Description;
049import ca.uhn.fhir.model.api.annotation.ResourceDef;
050import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
051/**
052 * A collection of documents compiled for a purpose together with metadata that applies to the collection.
053 */
054@ResourceDef(name="DocumentManifest", profile="http://hl7.org/fhir/Profile/DocumentManifest")
055public class DocumentManifest extends DomainResource {
056
057    @Block()
058    public static class DocumentManifestContentComponent extends BackboneElement implements IBaseBackboneElement {
059        /**
060         * The list of references to document content, or Attachment that consist of the parts of this document manifest. Usually, these would be document references, but direct references to Media or Attachments are also allowed.
061         */
062        @Child(name = "p", type = {Attachment.class, Reference.class}, order=1, min=1, max=1, modifier=false, summary=true)
063        @Description(shortDefinition="Contents of this set of documents", formalDefinition="The list of references to document content, or Attachment that consist of the parts of this document manifest. Usually, these would be document references, but direct references to Media or Attachments are also allowed." )
064        protected Type p;
065
066        private static final long serialVersionUID = -347538500L;
067
068    /**
069     * Constructor
070     */
071      public DocumentManifestContentComponent() {
072        super();
073      }
074
075    /**
076     * Constructor
077     */
078      public DocumentManifestContentComponent(Type p) {
079        super();
080        this.p = p;
081      }
082
083        /**
084         * @return {@link #p} (The list of references to document content, or Attachment that consist of the parts of this document manifest. Usually, these would be document references, but direct references to Media or Attachments are also allowed.)
085         */
086        public Type getP() { 
087          return this.p;
088        }
089
090        /**
091         * @return {@link #p} (The list of references to document content, or Attachment that consist of the parts of this document manifest. Usually, these would be document references, but direct references to Media or Attachments are also allowed.)
092         */
093        public Attachment getPAttachment() throws FHIRException { 
094          if (this.p == null)
095            return null;
096          if (!(this.p instanceof Attachment))
097            throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.p.getClass().getName()+" was encountered");
098          return (Attachment) this.p;
099        }
100
101        public boolean hasPAttachment() { 
102          return this != null && this.p instanceof Attachment;
103        }
104
105        /**
106         * @return {@link #p} (The list of references to document content, or Attachment that consist of the parts of this document manifest. Usually, these would be document references, but direct references to Media or Attachments are also allowed.)
107         */
108        public Reference getPReference() throws FHIRException { 
109          if (this.p == null)
110            return null;
111          if (!(this.p instanceof Reference))
112            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.p.getClass().getName()+" was encountered");
113          return (Reference) this.p;
114        }
115
116        public boolean hasPReference() { 
117          return this != null && this.p instanceof Reference;
118        }
119
120        public boolean hasP() { 
121          return this.p != null && !this.p.isEmpty();
122        }
123
124        /**
125         * @param value {@link #p} (The list of references to document content, or Attachment that consist of the parts of this document manifest. Usually, these would be document references, but direct references to Media or Attachments are also allowed.)
126         */
127        public DocumentManifestContentComponent setP(Type value) throws FHIRFormatError { 
128          if (value != null && !(value instanceof Attachment || value instanceof Reference))
129            throw new FHIRFormatError("Not the right type for DocumentManifest.content.p[x]: "+value.fhirType());
130          this.p = value;
131          return this;
132        }
133
134        protected void listChildren(List<Property> children) {
135          super.listChildren(children);
136          children.add(new Property("p[x]", "Attachment|Reference(Any)", "The list of references to document content, or Attachment that consist of the parts of this document manifest. Usually, these would be document references, but direct references to Media or Attachments are also allowed.", 0, 1, p));
137        }
138
139        @Override
140        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
141          switch (_hash) {
142          case 3427856: /*p[x]*/  return new Property("p[x]", "Attachment|Reference(Any)", "The list of references to document content, or Attachment that consist of the parts of this document manifest. Usually, these would be document references, but direct references to Media or Attachments are also allowed.", 0, 1, p);
143          case 112: /*p*/  return new Property("p[x]", "Attachment|Reference(Any)", "The list of references to document content, or Attachment that consist of the parts of this document manifest. Usually, these would be document references, but direct references to Media or Attachments are also allowed.", 0, 1, p);
144          case 634874291: /*pAttachment*/  return new Property("p[x]", "Attachment|Reference(Any)", "The list of references to document content, or Attachment that consist of the parts of this document manifest. Usually, these would be document references, but direct references to Media or Attachments are also allowed.", 0, 1, p);
145          case 544136379: /*pReference*/  return new Property("p[x]", "Attachment|Reference(Any)", "The list of references to document content, or Attachment that consist of the parts of this document manifest. Usually, these would be document references, but direct references to Media or Attachments are also allowed.", 0, 1, p);
146          default: return super.getNamedProperty(_hash, _name, _checkValid);
147          }
148
149        }
150
151      @Override
152      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
153        switch (hash) {
154        case 112: /*p*/ return this.p == null ? new Base[0] : new Base[] {this.p}; // Type
155        default: return super.getProperty(hash, name, checkValid);
156        }
157
158      }
159
160      @Override
161      public Base setProperty(int hash, String name, Base value) throws FHIRException {
162        switch (hash) {
163        case 112: // p
164          this.p = castToType(value); // Type
165          return value;
166        default: return super.setProperty(hash, name, value);
167        }
168
169      }
170
171      @Override
172      public Base setProperty(String name, Base value) throws FHIRException {
173        if (name.equals("p[x]")) {
174          this.p = castToType(value); // Type
175        } else
176          return super.setProperty(name, value);
177        return value;
178      }
179
180      @Override
181      public Base makeProperty(int hash, String name) throws FHIRException {
182        switch (hash) {
183        case 3427856:  return getP(); 
184        case 112:  return getP(); 
185        default: return super.makeProperty(hash, name);
186        }
187
188      }
189
190      @Override
191      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
192        switch (hash) {
193        case 112: /*p*/ return new String[] {"Attachment", "Reference"};
194        default: return super.getTypesForProperty(hash, name);
195        }
196
197      }
198
199      @Override
200      public Base addChild(String name) throws FHIRException {
201        if (name.equals("pAttachment")) {
202          this.p = new Attachment();
203          return this.p;
204        }
205        else if (name.equals("pReference")) {
206          this.p = new Reference();
207          return this.p;
208        }
209        else
210          return super.addChild(name);
211      }
212
213      public DocumentManifestContentComponent copy() {
214        DocumentManifestContentComponent dst = new DocumentManifestContentComponent();
215        copyValues(dst);
216        dst.p = p == null ? null : p.copy();
217        return dst;
218      }
219
220      @Override
221      public boolean equalsDeep(Base other_) {
222        if (!super.equalsDeep(other_))
223          return false;
224        if (!(other_ instanceof DocumentManifestContentComponent))
225          return false;
226        DocumentManifestContentComponent o = (DocumentManifestContentComponent) other_;
227        return compareDeep(p, o.p, true);
228      }
229
230      @Override
231      public boolean equalsShallow(Base other_) {
232        if (!super.equalsShallow(other_))
233          return false;
234        if (!(other_ instanceof DocumentManifestContentComponent))
235          return false;
236        DocumentManifestContentComponent o = (DocumentManifestContentComponent) other_;
237        return true;
238      }
239
240      public boolean isEmpty() {
241        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(p);
242      }
243
244  public String fhirType() {
245    return "DocumentManifest.content";
246
247  }
248
249  }
250
251    @Block()
252    public static class DocumentManifestRelatedComponent extends BackboneElement implements IBaseBackboneElement {
253        /**
254         * Related identifier to this DocumentManifest.  For example, Order numbers, accession numbers, XDW workflow numbers.
255         */
256        @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1, modifier=false, summary=true)
257        @Description(shortDefinition="Identifiers of things that are related", formalDefinition="Related identifier to this DocumentManifest.  For example, Order numbers, accession numbers, XDW workflow numbers." )
258        protected Identifier identifier;
259
260        /**
261         * Related Resource to this DocumentManifest. For example, Order, ProcedureRequest,  Procedure, EligibilityRequest, etc.
262         */
263        @Child(name = "ref", type = {Reference.class}, order=2, min=0, max=1, modifier=false, summary=true)
264        @Description(shortDefinition="Related Resource", formalDefinition="Related Resource to this DocumentManifest. For example, Order, ProcedureRequest,  Procedure, EligibilityRequest, etc." )
265        protected Reference ref;
266
267        /**
268         * The actual object that is the target of the reference (Related Resource to this DocumentManifest. For example, Order, ProcedureRequest,  Procedure, EligibilityRequest, etc.)
269         */
270        protected Resource refTarget;
271
272        private static final long serialVersionUID = -1670123330L;
273
274    /**
275     * Constructor
276     */
277      public DocumentManifestRelatedComponent() {
278        super();
279      }
280
281        /**
282         * @return {@link #identifier} (Related identifier to this DocumentManifest.  For example, Order numbers, accession numbers, XDW workflow numbers.)
283         */
284        public Identifier getIdentifier() { 
285          if (this.identifier == null)
286            if (Configuration.errorOnAutoCreate())
287              throw new Error("Attempt to auto-create DocumentManifestRelatedComponent.identifier");
288            else if (Configuration.doAutoCreate())
289              this.identifier = new Identifier(); // cc
290          return this.identifier;
291        }
292
293        public boolean hasIdentifier() { 
294          return this.identifier != null && !this.identifier.isEmpty();
295        }
296
297        /**
298         * @param value {@link #identifier} (Related identifier to this DocumentManifest.  For example, Order numbers, accession numbers, XDW workflow numbers.)
299         */
300        public DocumentManifestRelatedComponent setIdentifier(Identifier value)  { 
301          this.identifier = value;
302          return this;
303        }
304
305        /**
306         * @return {@link #ref} (Related Resource to this DocumentManifest. For example, Order, ProcedureRequest,  Procedure, EligibilityRequest, etc.)
307         */
308        public Reference getRef() { 
309          if (this.ref == null)
310            if (Configuration.errorOnAutoCreate())
311              throw new Error("Attempt to auto-create DocumentManifestRelatedComponent.ref");
312            else if (Configuration.doAutoCreate())
313              this.ref = new Reference(); // cc
314          return this.ref;
315        }
316
317        public boolean hasRef() { 
318          return this.ref != null && !this.ref.isEmpty();
319        }
320
321        /**
322         * @param value {@link #ref} (Related Resource to this DocumentManifest. For example, Order, ProcedureRequest,  Procedure, EligibilityRequest, etc.)
323         */
324        public DocumentManifestRelatedComponent setRef(Reference value)  { 
325          this.ref = value;
326          return this;
327        }
328
329        /**
330         * @return {@link #ref} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Related Resource to this DocumentManifest. For example, Order, ProcedureRequest,  Procedure, EligibilityRequest, etc.)
331         */
332        public Resource getRefTarget() { 
333          return this.refTarget;
334        }
335
336        /**
337         * @param value {@link #ref} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Related Resource to this DocumentManifest. For example, Order, ProcedureRequest,  Procedure, EligibilityRequest, etc.)
338         */
339        public DocumentManifestRelatedComponent setRefTarget(Resource value) { 
340          this.refTarget = value;
341          return this;
342        }
343
344        protected void listChildren(List<Property> children) {
345          super.listChildren(children);
346          children.add(new Property("identifier", "Identifier", "Related identifier to this DocumentManifest.  For example, Order numbers, accession numbers, XDW workflow numbers.", 0, 1, identifier));
347          children.add(new Property("ref", "Reference(Any)", "Related Resource to this DocumentManifest. For example, Order, ProcedureRequest,  Procedure, EligibilityRequest, etc.", 0, 1, ref));
348        }
349
350        @Override
351        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
352          switch (_hash) {
353          case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Related identifier to this DocumentManifest.  For example, Order numbers, accession numbers, XDW workflow numbers.", 0, 1, identifier);
354          case 112787: /*ref*/  return new Property("ref", "Reference(Any)", "Related Resource to this DocumentManifest. For example, Order, ProcedureRequest,  Procedure, EligibilityRequest, etc.", 0, 1, ref);
355          default: return super.getNamedProperty(_hash, _name, _checkValid);
356          }
357
358        }
359
360      @Override
361      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
362        switch (hash) {
363        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : new Base[] {this.identifier}; // Identifier
364        case 112787: /*ref*/ return this.ref == null ? new Base[0] : new Base[] {this.ref}; // Reference
365        default: return super.getProperty(hash, name, checkValid);
366        }
367
368      }
369
370      @Override
371      public Base setProperty(int hash, String name, Base value) throws FHIRException {
372        switch (hash) {
373        case -1618432855: // identifier
374          this.identifier = castToIdentifier(value); // Identifier
375          return value;
376        case 112787: // ref
377          this.ref = castToReference(value); // Reference
378          return value;
379        default: return super.setProperty(hash, name, value);
380        }
381
382      }
383
384      @Override
385      public Base setProperty(String name, Base value) throws FHIRException {
386        if (name.equals("identifier")) {
387          this.identifier = castToIdentifier(value); // Identifier
388        } else if (name.equals("ref")) {
389          this.ref = castToReference(value); // Reference
390        } else
391          return super.setProperty(name, value);
392        return value;
393      }
394
395      @Override
396      public Base makeProperty(int hash, String name) throws FHIRException {
397        switch (hash) {
398        case -1618432855:  return getIdentifier(); 
399        case 112787:  return getRef(); 
400        default: return super.makeProperty(hash, name);
401        }
402
403      }
404
405      @Override
406      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
407        switch (hash) {
408        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
409        case 112787: /*ref*/ return new String[] {"Reference"};
410        default: return super.getTypesForProperty(hash, name);
411        }
412
413      }
414
415      @Override
416      public Base addChild(String name) throws FHIRException {
417        if (name.equals("identifier")) {
418          this.identifier = new Identifier();
419          return this.identifier;
420        }
421        else if (name.equals("ref")) {
422          this.ref = new Reference();
423          return this.ref;
424        }
425        else
426          return super.addChild(name);
427      }
428
429      public DocumentManifestRelatedComponent copy() {
430        DocumentManifestRelatedComponent dst = new DocumentManifestRelatedComponent();
431        copyValues(dst);
432        dst.identifier = identifier == null ? null : identifier.copy();
433        dst.ref = ref == null ? null : ref.copy();
434        return dst;
435      }
436
437      @Override
438      public boolean equalsDeep(Base other_) {
439        if (!super.equalsDeep(other_))
440          return false;
441        if (!(other_ instanceof DocumentManifestRelatedComponent))
442          return false;
443        DocumentManifestRelatedComponent o = (DocumentManifestRelatedComponent) other_;
444        return compareDeep(identifier, o.identifier, true) && compareDeep(ref, o.ref, true);
445      }
446
447      @Override
448      public boolean equalsShallow(Base other_) {
449        if (!super.equalsShallow(other_))
450          return false;
451        if (!(other_ instanceof DocumentManifestRelatedComponent))
452          return false;
453        DocumentManifestRelatedComponent o = (DocumentManifestRelatedComponent) other_;
454        return true;
455      }
456
457      public boolean isEmpty() {
458        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, ref);
459      }
460
461  public String fhirType() {
462    return "DocumentManifest.related";
463
464  }
465
466  }
467
468    /**
469     * A single identifier that uniquely identifies this manifest. Principally used to refer to the manifest in non-FHIR contexts.
470     */
471    @Child(name = "masterIdentifier", type = {Identifier.class}, order=0, min=0, max=1, modifier=false, summary=true)
472    @Description(shortDefinition="Unique Identifier for the set of documents", formalDefinition="A single identifier that uniquely identifies this manifest. Principally used to refer to the manifest in non-FHIR contexts." )
473    protected Identifier masterIdentifier;
474
475    /**
476     * Other identifiers associated with the document manifest, including version independent  identifiers.
477     */
478    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
479    @Description(shortDefinition="Other identifiers for the manifest", formalDefinition="Other identifiers associated with the document manifest, including version independent  identifiers." )
480    protected List<Identifier> identifier;
481
482    /**
483     * The status of this document manifest.
484     */
485    @Child(name = "status", type = {CodeType.class}, order=2, min=1, max=1, modifier=true, summary=true)
486    @Description(shortDefinition="current | superseded | entered-in-error", formalDefinition="The status of this document manifest." )
487    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/document-reference-status")
488    protected Enumeration<DocumentReferenceStatus> status;
489
490    /**
491     * Specifies the kind of this set of documents (e.g. Patient Summary, Discharge Summary, Prescription, etc.). The type of a set of documents may be the same as one of the documents in it - especially if there is only one - but it may be wider.
492     */
493    @Child(name = "type", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=true)
494    @Description(shortDefinition="Kind of document set", formalDefinition="Specifies the kind of this set of documents (e.g. Patient Summary, Discharge Summary, Prescription, etc.). The type of a set of documents may be the same as one of the documents in it - especially if there is only one - but it may be wider." )
495    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/c80-doc-typecodes")
496    protected CodeableConcept type;
497
498    /**
499     * Who or what the set of documents is about. The documents can be about a person, (patient or healthcare practitioner), a device (i.e. 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). If the documents cross more than one subject, then more than one subject is allowed here (unusual use case).
500     */
501    @Child(name = "subject", type = {Patient.class, Practitioner.class, Group.class, Device.class}, order=4, min=0, max=1, modifier=false, summary=true)
502    @Description(shortDefinition="The subject of the set of documents", formalDefinition="Who or what the set of documents is about. The documents can be about a person, (patient or healthcare practitioner), a device (i.e. 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). If the documents cross more than one subject, then more than one subject is allowed here (unusual use case)." )
503    protected Reference subject;
504
505    /**
506     * The actual object that is the target of the reference (Who or what the set of documents is about. The documents can be about a person, (patient or healthcare practitioner), a device (i.e. 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). If the documents cross more than one subject, then more than one subject is allowed here (unusual use case).)
507     */
508    protected Resource subjectTarget;
509
510    /**
511     * When the document manifest was created for submission to the server (not necessarily the same thing as the actual resource last modified time, since it may be modified, replicated, etc.).
512     */
513    @Child(name = "created", type = {DateTimeType.class}, order=5, min=0, max=1, modifier=false, summary=true)
514    @Description(shortDefinition="When this document manifest created", formalDefinition="When the document manifest was created for submission to the server (not necessarily the same thing as the actual resource last modified time, since it may be modified, replicated, etc.)." )
515    protected DateTimeType created;
516
517    /**
518     * Identifies who is responsible for creating the manifest, and adding  documents to it.
519     */
520    @Child(name = "author", type = {Practitioner.class, Organization.class, Device.class, Patient.class, RelatedPerson.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
521    @Description(shortDefinition="Who and/or what authored the manifest", formalDefinition="Identifies who is responsible for creating the manifest, and adding  documents to it." )
522    protected List<Reference> author;
523    /**
524     * The actual objects that are the target of the reference (Identifies who is responsible for creating the manifest, and adding  documents to it.)
525     */
526    protected List<Resource> authorTarget;
527
528
529    /**
530     * A patient, practitioner, or organization for which this set of documents is intended.
531     */
532    @Child(name = "recipient", type = {Patient.class, Practitioner.class, RelatedPerson.class, Organization.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
533    @Description(shortDefinition="Intended to get notified about this set of documents", formalDefinition="A patient, practitioner, or organization for which this set of documents is intended." )
534    protected List<Reference> recipient;
535    /**
536     * The actual objects that are the target of the reference (A patient, practitioner, or organization for which this set of documents is intended.)
537     */
538    protected List<Resource> recipientTarget;
539
540
541    /**
542     * Identifies the source system, application, or software that produced the document manifest.
543     */
544    @Child(name = "source", type = {UriType.class}, order=8, min=0, max=1, modifier=false, summary=true)
545    @Description(shortDefinition="The source system/application/software", formalDefinition="Identifies the source system, application, or software that produced the document manifest." )
546    protected UriType source;
547
548    /**
549     * Human-readable description of the source document. This is sometimes known as the "title".
550     */
551    @Child(name = "description", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=true)
552    @Description(shortDefinition="Human-readable description (title)", formalDefinition="Human-readable description of the source document. This is sometimes known as the \"title\"." )
553    protected StringType description;
554
555    /**
556     * The list of Documents included in the manifest.
557     */
558    @Child(name = "content", type = {}, order=10, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
559    @Description(shortDefinition="The items included", formalDefinition="The list of Documents included in the manifest." )
560    protected List<DocumentManifestContentComponent> content;
561
562    /**
563     * Related identifiers or resources associated with the DocumentManifest.
564     */
565    @Child(name = "related", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
566    @Description(shortDefinition="Related things", formalDefinition="Related identifiers or resources associated with the DocumentManifest." )
567    protected List<DocumentManifestRelatedComponent> related;
568
569    private static final long serialVersionUID = -2081196115L;
570
571  /**
572   * Constructor
573   */
574    public DocumentManifest() {
575      super();
576    }
577
578  /**
579   * Constructor
580   */
581    public DocumentManifest(Enumeration<DocumentReferenceStatus> status) {
582      super();
583      this.status = status;
584    }
585
586    /**
587     * @return {@link #masterIdentifier} (A single identifier that uniquely identifies this manifest. Principally used to refer to the manifest in non-FHIR contexts.)
588     */
589    public Identifier getMasterIdentifier() { 
590      if (this.masterIdentifier == null)
591        if (Configuration.errorOnAutoCreate())
592          throw new Error("Attempt to auto-create DocumentManifest.masterIdentifier");
593        else if (Configuration.doAutoCreate())
594          this.masterIdentifier = new Identifier(); // cc
595      return this.masterIdentifier;
596    }
597
598    public boolean hasMasterIdentifier() { 
599      return this.masterIdentifier != null && !this.masterIdentifier.isEmpty();
600    }
601
602    /**
603     * @param value {@link #masterIdentifier} (A single identifier that uniquely identifies this manifest. Principally used to refer to the manifest in non-FHIR contexts.)
604     */
605    public DocumentManifest setMasterIdentifier(Identifier value)  { 
606      this.masterIdentifier = value;
607      return this;
608    }
609
610    /**
611     * @return {@link #identifier} (Other identifiers associated with the document manifest, including version independent  identifiers.)
612     */
613    public List<Identifier> getIdentifier() { 
614      if (this.identifier == null)
615        this.identifier = new ArrayList<Identifier>();
616      return this.identifier;
617    }
618
619    /**
620     * @return Returns a reference to <code>this</code> for easy method chaining
621     */
622    public DocumentManifest setIdentifier(List<Identifier> theIdentifier) { 
623      this.identifier = theIdentifier;
624      return this;
625    }
626
627    public boolean hasIdentifier() { 
628      if (this.identifier == null)
629        return false;
630      for (Identifier item : this.identifier)
631        if (!item.isEmpty())
632          return true;
633      return false;
634    }
635
636    public Identifier addIdentifier() { //3
637      Identifier t = new Identifier();
638      if (this.identifier == null)
639        this.identifier = new ArrayList<Identifier>();
640      this.identifier.add(t);
641      return t;
642    }
643
644    public DocumentManifest addIdentifier(Identifier t) { //3
645      if (t == null)
646        return this;
647      if (this.identifier == null)
648        this.identifier = new ArrayList<Identifier>();
649      this.identifier.add(t);
650      return this;
651    }
652
653    /**
654     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist
655     */
656    public Identifier getIdentifierFirstRep() { 
657      if (getIdentifier().isEmpty()) {
658        addIdentifier();
659      }
660      return getIdentifier().get(0);
661    }
662
663    /**
664     * @return {@link #status} (The status of this document manifest.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
665     */
666    public Enumeration<DocumentReferenceStatus> getStatusElement() { 
667      if (this.status == null)
668        if (Configuration.errorOnAutoCreate())
669          throw new Error("Attempt to auto-create DocumentManifest.status");
670        else if (Configuration.doAutoCreate())
671          this.status = new Enumeration<DocumentReferenceStatus>(new DocumentReferenceStatusEnumFactory()); // bb
672      return this.status;
673    }
674
675    public boolean hasStatusElement() { 
676      return this.status != null && !this.status.isEmpty();
677    }
678
679    public boolean hasStatus() { 
680      return this.status != null && !this.status.isEmpty();
681    }
682
683    /**
684     * @param value {@link #status} (The status of this document manifest.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
685     */
686    public DocumentManifest setStatusElement(Enumeration<DocumentReferenceStatus> value) { 
687      this.status = value;
688      return this;
689    }
690
691    /**
692     * @return The status of this document manifest.
693     */
694    public DocumentReferenceStatus getStatus() { 
695      return this.status == null ? null : this.status.getValue();
696    }
697
698    /**
699     * @param value The status of this document manifest.
700     */
701    public DocumentManifest setStatus(DocumentReferenceStatus value) { 
702        if (this.status == null)
703          this.status = new Enumeration<DocumentReferenceStatus>(new DocumentReferenceStatusEnumFactory());
704        this.status.setValue(value);
705      return this;
706    }
707
708    /**
709     * @return {@link #type} (Specifies the kind of this set of documents (e.g. Patient Summary, Discharge Summary, Prescription, etc.). The type of a set of documents may be the same as one of the documents in it - especially if there is only one - but it may be wider.)
710     */
711    public CodeableConcept getType() { 
712      if (this.type == null)
713        if (Configuration.errorOnAutoCreate())
714          throw new Error("Attempt to auto-create DocumentManifest.type");
715        else if (Configuration.doAutoCreate())
716          this.type = new CodeableConcept(); // cc
717      return this.type;
718    }
719
720    public boolean hasType() { 
721      return this.type != null && !this.type.isEmpty();
722    }
723
724    /**
725     * @param value {@link #type} (Specifies the kind of this set of documents (e.g. Patient Summary, Discharge Summary, Prescription, etc.). The type of a set of documents may be the same as one of the documents in it - especially if there is only one - but it may be wider.)
726     */
727    public DocumentManifest setType(CodeableConcept value)  { 
728      this.type = value;
729      return this;
730    }
731
732    /**
733     * @return {@link #subject} (Who or what the set of documents is about. The documents can be about a person, (patient or healthcare practitioner), a device (i.e. 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). If the documents cross more than one subject, then more than one subject is allowed here (unusual use case).)
734     */
735    public Reference getSubject() { 
736      if (this.subject == null)
737        if (Configuration.errorOnAutoCreate())
738          throw new Error("Attempt to auto-create DocumentManifest.subject");
739        else if (Configuration.doAutoCreate())
740          this.subject = new Reference(); // cc
741      return this.subject;
742    }
743
744    public boolean hasSubject() { 
745      return this.subject != null && !this.subject.isEmpty();
746    }
747
748    /**
749     * @param value {@link #subject} (Who or what the set of documents is about. The documents can be about a person, (patient or healthcare practitioner), a device (i.e. 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). If the documents cross more than one subject, then more than one subject is allowed here (unusual use case).)
750     */
751    public DocumentManifest setSubject(Reference value)  { 
752      this.subject = value;
753      return this;
754    }
755
756    /**
757     * @return {@link #subject} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Who or what the set of documents is about. The documents can be about a person, (patient or healthcare practitioner), a device (i.e. 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). If the documents cross more than one subject, then more than one subject is allowed here (unusual use case).)
758     */
759    public Resource getSubjectTarget() { 
760      return this.subjectTarget;
761    }
762
763    /**
764     * @param value {@link #subject} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Who or what the set of documents is about. The documents can be about a person, (patient or healthcare practitioner), a device (i.e. 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). If the documents cross more than one subject, then more than one subject is allowed here (unusual use case).)
765     */
766    public DocumentManifest setSubjectTarget(Resource value) { 
767      this.subjectTarget = value;
768      return this;
769    }
770
771    /**
772     * @return {@link #created} (When the document manifest was created for submission to the server (not necessarily the same thing as the actual resource last modified time, since it may be modified, replicated, etc.).). This is the underlying object with id, value and extensions. The accessor "getCreated" gives direct access to the value
773     */
774    public DateTimeType getCreatedElement() { 
775      if (this.created == null)
776        if (Configuration.errorOnAutoCreate())
777          throw new Error("Attempt to auto-create DocumentManifest.created");
778        else if (Configuration.doAutoCreate())
779          this.created = new DateTimeType(); // bb
780      return this.created;
781    }
782
783    public boolean hasCreatedElement() { 
784      return this.created != null && !this.created.isEmpty();
785    }
786
787    public boolean hasCreated() { 
788      return this.created != null && !this.created.isEmpty();
789    }
790
791    /**
792     * @param value {@link #created} (When the document manifest was created for submission to the server (not necessarily the same thing as the actual resource last modified time, since it may be modified, replicated, etc.).). This is the underlying object with id, value and extensions. The accessor "getCreated" gives direct access to the value
793     */
794    public DocumentManifest setCreatedElement(DateTimeType value) { 
795      this.created = value;
796      return this;
797    }
798
799    /**
800     * @return When the document manifest was created for submission to the server (not necessarily the same thing as the actual resource last modified time, since it may be modified, replicated, etc.).
801     */
802    public Date getCreated() { 
803      return this.created == null ? null : this.created.getValue();
804    }
805
806    /**
807     * @param value When the document manifest was created for submission to the server (not necessarily the same thing as the actual resource last modified time, since it may be modified, replicated, etc.).
808     */
809    public DocumentManifest setCreated(Date value) { 
810      if (value == null)
811        this.created = null;
812      else {
813        if (this.created == null)
814          this.created = new DateTimeType();
815        this.created.setValue(value);
816      }
817      return this;
818    }
819
820    /**
821     * @return {@link #author} (Identifies who is responsible for creating the manifest, and adding  documents to it.)
822     */
823    public List<Reference> getAuthor() { 
824      if (this.author == null)
825        this.author = new ArrayList<Reference>();
826      return this.author;
827    }
828
829    /**
830     * @return Returns a reference to <code>this</code> for easy method chaining
831     */
832    public DocumentManifest setAuthor(List<Reference> theAuthor) { 
833      this.author = theAuthor;
834      return this;
835    }
836
837    public boolean hasAuthor() { 
838      if (this.author == null)
839        return false;
840      for (Reference item : this.author)
841        if (!item.isEmpty())
842          return true;
843      return false;
844    }
845
846    public Reference addAuthor() { //3
847      Reference t = new Reference();
848      if (this.author == null)
849        this.author = new ArrayList<Reference>();
850      this.author.add(t);
851      return t;
852    }
853
854    public DocumentManifest addAuthor(Reference t) { //3
855      if (t == null)
856        return this;
857      if (this.author == null)
858        this.author = new ArrayList<Reference>();
859      this.author.add(t);
860      return this;
861    }
862
863    /**
864     * @return The first repetition of repeating field {@link #author}, creating it if it does not already exist
865     */
866    public Reference getAuthorFirstRep() { 
867      if (getAuthor().isEmpty()) {
868        addAuthor();
869      }
870      return getAuthor().get(0);
871    }
872
873    /**
874     * @deprecated Use Reference#setResource(IBaseResource) instead
875     */
876    @Deprecated
877    public List<Resource> getAuthorTarget() { 
878      if (this.authorTarget == null)
879        this.authorTarget = new ArrayList<Resource>();
880      return this.authorTarget;
881    }
882
883    /**
884     * @return {@link #recipient} (A patient, practitioner, or organization for which this set of documents is intended.)
885     */
886    public List<Reference> getRecipient() { 
887      if (this.recipient == null)
888        this.recipient = new ArrayList<Reference>();
889      return this.recipient;
890    }
891
892    /**
893     * @return Returns a reference to <code>this</code> for easy method chaining
894     */
895    public DocumentManifest setRecipient(List<Reference> theRecipient) { 
896      this.recipient = theRecipient;
897      return this;
898    }
899
900    public boolean hasRecipient() { 
901      if (this.recipient == null)
902        return false;
903      for (Reference item : this.recipient)
904        if (!item.isEmpty())
905          return true;
906      return false;
907    }
908
909    public Reference addRecipient() { //3
910      Reference t = new Reference();
911      if (this.recipient == null)
912        this.recipient = new ArrayList<Reference>();
913      this.recipient.add(t);
914      return t;
915    }
916
917    public DocumentManifest addRecipient(Reference t) { //3
918      if (t == null)
919        return this;
920      if (this.recipient == null)
921        this.recipient = new ArrayList<Reference>();
922      this.recipient.add(t);
923      return this;
924    }
925
926    /**
927     * @return The first repetition of repeating field {@link #recipient}, creating it if it does not already exist
928     */
929    public Reference getRecipientFirstRep() { 
930      if (getRecipient().isEmpty()) {
931        addRecipient();
932      }
933      return getRecipient().get(0);
934    }
935
936    /**
937     * @deprecated Use Reference#setResource(IBaseResource) instead
938     */
939    @Deprecated
940    public List<Resource> getRecipientTarget() { 
941      if (this.recipientTarget == null)
942        this.recipientTarget = new ArrayList<Resource>();
943      return this.recipientTarget;
944    }
945
946    /**
947     * @return {@link #source} (Identifies the source system, application, or software that produced the document manifest.). This is the underlying object with id, value and extensions. The accessor "getSource" gives direct access to the value
948     */
949    public UriType getSourceElement() { 
950      if (this.source == null)
951        if (Configuration.errorOnAutoCreate())
952          throw new Error("Attempt to auto-create DocumentManifest.source");
953        else if (Configuration.doAutoCreate())
954          this.source = new UriType(); // bb
955      return this.source;
956    }
957
958    public boolean hasSourceElement() { 
959      return this.source != null && !this.source.isEmpty();
960    }
961
962    public boolean hasSource() { 
963      return this.source != null && !this.source.isEmpty();
964    }
965
966    /**
967     * @param value {@link #source} (Identifies the source system, application, or software that produced the document manifest.). This is the underlying object with id, value and extensions. The accessor "getSource" gives direct access to the value
968     */
969    public DocumentManifest setSourceElement(UriType value) { 
970      this.source = value;
971      return this;
972    }
973
974    /**
975     * @return Identifies the source system, application, or software that produced the document manifest.
976     */
977    public String getSource() { 
978      return this.source == null ? null : this.source.getValue();
979    }
980
981    /**
982     * @param value Identifies the source system, application, or software that produced the document manifest.
983     */
984    public DocumentManifest setSource(String value) { 
985      if (Utilities.noString(value))
986        this.source = null;
987      else {
988        if (this.source == null)
989          this.source = new UriType();
990        this.source.setValue(value);
991      }
992      return this;
993    }
994
995    /**
996     * @return {@link #description} (Human-readable description of the source document. This is sometimes known as the "title".). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
997     */
998    public StringType getDescriptionElement() { 
999      if (this.description == null)
1000        if (Configuration.errorOnAutoCreate())
1001          throw new Error("Attempt to auto-create DocumentManifest.description");
1002        else if (Configuration.doAutoCreate())
1003          this.description = new StringType(); // bb
1004      return this.description;
1005    }
1006
1007    public boolean hasDescriptionElement() { 
1008      return this.description != null && !this.description.isEmpty();
1009    }
1010
1011    public boolean hasDescription() { 
1012      return this.description != null && !this.description.isEmpty();
1013    }
1014
1015    /**
1016     * @param value {@link #description} (Human-readable description of the source document. This is sometimes known as the "title".). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1017     */
1018    public DocumentManifest setDescriptionElement(StringType value) { 
1019      this.description = value;
1020      return this;
1021    }
1022
1023    /**
1024     * @return Human-readable description of the source document. This is sometimes known as the "title".
1025     */
1026    public String getDescription() { 
1027      return this.description == null ? null : this.description.getValue();
1028    }
1029
1030    /**
1031     * @param value Human-readable description of the source document. This is sometimes known as the "title".
1032     */
1033    public DocumentManifest setDescription(String value) { 
1034      if (Utilities.noString(value))
1035        this.description = null;
1036      else {
1037        if (this.description == null)
1038          this.description = new StringType();
1039        this.description.setValue(value);
1040      }
1041      return this;
1042    }
1043
1044    /**
1045     * @return {@link #content} (The list of Documents included in the manifest.)
1046     */
1047    public List<DocumentManifestContentComponent> getContent() { 
1048      if (this.content == null)
1049        this.content = new ArrayList<DocumentManifestContentComponent>();
1050      return this.content;
1051    }
1052
1053    /**
1054     * @return Returns a reference to <code>this</code> for easy method chaining
1055     */
1056    public DocumentManifest setContent(List<DocumentManifestContentComponent> theContent) { 
1057      this.content = theContent;
1058      return this;
1059    }
1060
1061    public boolean hasContent() { 
1062      if (this.content == null)
1063        return false;
1064      for (DocumentManifestContentComponent item : this.content)
1065        if (!item.isEmpty())
1066          return true;
1067      return false;
1068    }
1069
1070    public DocumentManifestContentComponent addContent() { //3
1071      DocumentManifestContentComponent t = new DocumentManifestContentComponent();
1072      if (this.content == null)
1073        this.content = new ArrayList<DocumentManifestContentComponent>();
1074      this.content.add(t);
1075      return t;
1076    }
1077
1078    public DocumentManifest addContent(DocumentManifestContentComponent t) { //3
1079      if (t == null)
1080        return this;
1081      if (this.content == null)
1082        this.content = new ArrayList<DocumentManifestContentComponent>();
1083      this.content.add(t);
1084      return this;
1085    }
1086
1087    /**
1088     * @return The first repetition of repeating field {@link #content}, creating it if it does not already exist
1089     */
1090    public DocumentManifestContentComponent getContentFirstRep() { 
1091      if (getContent().isEmpty()) {
1092        addContent();
1093      }
1094      return getContent().get(0);
1095    }
1096
1097    /**
1098     * @return {@link #related} (Related identifiers or resources associated with the DocumentManifest.)
1099     */
1100    public List<DocumentManifestRelatedComponent> getRelated() { 
1101      if (this.related == null)
1102        this.related = new ArrayList<DocumentManifestRelatedComponent>();
1103      return this.related;
1104    }
1105
1106    /**
1107     * @return Returns a reference to <code>this</code> for easy method chaining
1108     */
1109    public DocumentManifest setRelated(List<DocumentManifestRelatedComponent> theRelated) { 
1110      this.related = theRelated;
1111      return this;
1112    }
1113
1114    public boolean hasRelated() { 
1115      if (this.related == null)
1116        return false;
1117      for (DocumentManifestRelatedComponent item : this.related)
1118        if (!item.isEmpty())
1119          return true;
1120      return false;
1121    }
1122
1123    public DocumentManifestRelatedComponent addRelated() { //3
1124      DocumentManifestRelatedComponent t = new DocumentManifestRelatedComponent();
1125      if (this.related == null)
1126        this.related = new ArrayList<DocumentManifestRelatedComponent>();
1127      this.related.add(t);
1128      return t;
1129    }
1130
1131    public DocumentManifest addRelated(DocumentManifestRelatedComponent t) { //3
1132      if (t == null)
1133        return this;
1134      if (this.related == null)
1135        this.related = new ArrayList<DocumentManifestRelatedComponent>();
1136      this.related.add(t);
1137      return this;
1138    }
1139
1140    /**
1141     * @return The first repetition of repeating field {@link #related}, creating it if it does not already exist
1142     */
1143    public DocumentManifestRelatedComponent getRelatedFirstRep() { 
1144      if (getRelated().isEmpty()) {
1145        addRelated();
1146      }
1147      return getRelated().get(0);
1148    }
1149
1150      protected void listChildren(List<Property> children) {
1151        super.listChildren(children);
1152        children.add(new Property("masterIdentifier", "Identifier", "A single identifier that uniquely identifies this manifest. Principally used to refer to the manifest in non-FHIR contexts.", 0, 1, masterIdentifier));
1153        children.add(new Property("identifier", "Identifier", "Other identifiers associated with the document manifest, including version independent  identifiers.", 0, java.lang.Integer.MAX_VALUE, identifier));
1154        children.add(new Property("status", "code", "The status of this document manifest.", 0, 1, status));
1155        children.add(new Property("type", "CodeableConcept", "Specifies the kind of this set of documents (e.g. Patient Summary, Discharge Summary, Prescription, etc.). The type of a set of documents may be the same as one of the documents in it - especially if there is only one - but it may be wider.", 0, 1, type));
1156        children.add(new Property("subject", "Reference(Patient|Practitioner|Group|Device)", "Who or what the set of documents is about. The documents can be about a person, (patient or healthcare practitioner), a device (i.e. 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). If the documents cross more than one subject, then more than one subject is allowed here (unusual use case).", 0, 1, subject));
1157        children.add(new Property("created", "dateTime", "When the document manifest was created for submission to the server (not necessarily the same thing as the actual resource last modified time, since it may be modified, replicated, etc.).", 0, 1, created));
1158        children.add(new Property("author", "Reference(Practitioner|Organization|Device|Patient|RelatedPerson)", "Identifies who is responsible for creating the manifest, and adding  documents to it.", 0, java.lang.Integer.MAX_VALUE, author));
1159        children.add(new Property("recipient", "Reference(Patient|Practitioner|RelatedPerson|Organization)", "A patient, practitioner, or organization for which this set of documents is intended.", 0, java.lang.Integer.MAX_VALUE, recipient));
1160        children.add(new Property("source", "uri", "Identifies the source system, application, or software that produced the document manifest.", 0, 1, source));
1161        children.add(new Property("description", "string", "Human-readable description of the source document. This is sometimes known as the \"title\".", 0, 1, description));
1162        children.add(new Property("content", "", "The list of Documents included in the manifest.", 0, java.lang.Integer.MAX_VALUE, content));
1163        children.add(new Property("related", "", "Related identifiers or resources associated with the DocumentManifest.", 0, java.lang.Integer.MAX_VALUE, related));
1164      }
1165
1166      @Override
1167      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1168        switch (_hash) {
1169        case 243769515: /*masterIdentifier*/  return new Property("masterIdentifier", "Identifier", "A single identifier that uniquely identifies this manifest. Principally used to refer to the manifest in non-FHIR contexts.", 0, 1, masterIdentifier);
1170        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Other identifiers associated with the document manifest, including version independent  identifiers.", 0, java.lang.Integer.MAX_VALUE, identifier);
1171        case -892481550: /*status*/  return new Property("status", "code", "The status of this document manifest.", 0, 1, status);
1172        case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Specifies the kind of this set of documents (e.g. Patient Summary, Discharge Summary, Prescription, etc.). The type of a set of documents may be the same as one of the documents in it - especially if there is only one - but it may be wider.", 0, 1, type);
1173        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Practitioner|Group|Device)", "Who or what the set of documents is about. The documents can be about a person, (patient or healthcare practitioner), a device (i.e. 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). If the documents cross more than one subject, then more than one subject is allowed here (unusual use case).", 0, 1, subject);
1174        case 1028554472: /*created*/  return new Property("created", "dateTime", "When the document manifest was created for submission to the server (not necessarily the same thing as the actual resource last modified time, since it may be modified, replicated, etc.).", 0, 1, created);
1175        case -1406328437: /*author*/  return new Property("author", "Reference(Practitioner|Organization|Device|Patient|RelatedPerson)", "Identifies who is responsible for creating the manifest, and adding  documents to it.", 0, java.lang.Integer.MAX_VALUE, author);
1176        case 820081177: /*recipient*/  return new Property("recipient", "Reference(Patient|Practitioner|RelatedPerson|Organization)", "A patient, practitioner, or organization for which this set of documents is intended.", 0, java.lang.Integer.MAX_VALUE, recipient);
1177        case -896505829: /*source*/  return new Property("source", "uri", "Identifies the source system, application, or software that produced the document manifest.", 0, 1, source);
1178        case -1724546052: /*description*/  return new Property("description", "string", "Human-readable description of the source document. This is sometimes known as the \"title\".", 0, 1, description);
1179        case 951530617: /*content*/  return new Property("content", "", "The list of Documents included in the manifest.", 0, java.lang.Integer.MAX_VALUE, content);
1180        case 1090493483: /*related*/  return new Property("related", "", "Related identifiers or resources associated with the DocumentManifest.", 0, java.lang.Integer.MAX_VALUE, related);
1181        default: return super.getNamedProperty(_hash, _name, _checkValid);
1182        }
1183
1184      }
1185
1186      @Override
1187      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1188        switch (hash) {
1189        case 243769515: /*masterIdentifier*/ return this.masterIdentifier == null ? new Base[0] : new Base[] {this.masterIdentifier}; // Identifier
1190        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1191        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<DocumentReferenceStatus>
1192        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
1193        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1194        case 1028554472: /*created*/ return this.created == null ? new Base[0] : new Base[] {this.created}; // DateTimeType
1195        case -1406328437: /*author*/ return this.author == null ? new Base[0] : this.author.toArray(new Base[this.author.size()]); // Reference
1196        case 820081177: /*recipient*/ return this.recipient == null ? new Base[0] : this.recipient.toArray(new Base[this.recipient.size()]); // Reference
1197        case -896505829: /*source*/ return this.source == null ? new Base[0] : new Base[] {this.source}; // UriType
1198        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1199        case 951530617: /*content*/ return this.content == null ? new Base[0] : this.content.toArray(new Base[this.content.size()]); // DocumentManifestContentComponent
1200        case 1090493483: /*related*/ return this.related == null ? new Base[0] : this.related.toArray(new Base[this.related.size()]); // DocumentManifestRelatedComponent
1201        default: return super.getProperty(hash, name, checkValid);
1202        }
1203
1204      }
1205
1206      @Override
1207      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1208        switch (hash) {
1209        case 243769515: // masterIdentifier
1210          this.masterIdentifier = castToIdentifier(value); // Identifier
1211          return value;
1212        case -1618432855: // identifier
1213          this.getIdentifier().add(castToIdentifier(value)); // Identifier
1214          return value;
1215        case -892481550: // status
1216          value = new DocumentReferenceStatusEnumFactory().fromType(castToCode(value));
1217          this.status = (Enumeration) value; // Enumeration<DocumentReferenceStatus>
1218          return value;
1219        case 3575610: // type
1220          this.type = castToCodeableConcept(value); // CodeableConcept
1221          return value;
1222        case -1867885268: // subject
1223          this.subject = castToReference(value); // Reference
1224          return value;
1225        case 1028554472: // created
1226          this.created = castToDateTime(value); // DateTimeType
1227          return value;
1228        case -1406328437: // author
1229          this.getAuthor().add(castToReference(value)); // Reference
1230          return value;
1231        case 820081177: // recipient
1232          this.getRecipient().add(castToReference(value)); // Reference
1233          return value;
1234        case -896505829: // source
1235          this.source = castToUri(value); // UriType
1236          return value;
1237        case -1724546052: // description
1238          this.description = castToString(value); // StringType
1239          return value;
1240        case 951530617: // content
1241          this.getContent().add((DocumentManifestContentComponent) value); // DocumentManifestContentComponent
1242          return value;
1243        case 1090493483: // related
1244          this.getRelated().add((DocumentManifestRelatedComponent) value); // DocumentManifestRelatedComponent
1245          return value;
1246        default: return super.setProperty(hash, name, value);
1247        }
1248
1249      }
1250
1251      @Override
1252      public Base setProperty(String name, Base value) throws FHIRException {
1253        if (name.equals("masterIdentifier")) {
1254          this.masterIdentifier = castToIdentifier(value); // Identifier
1255        } else if (name.equals("identifier")) {
1256          this.getIdentifier().add(castToIdentifier(value));
1257        } else if (name.equals("status")) {
1258          value = new DocumentReferenceStatusEnumFactory().fromType(castToCode(value));
1259          this.status = (Enumeration) value; // Enumeration<DocumentReferenceStatus>
1260        } else if (name.equals("type")) {
1261          this.type = castToCodeableConcept(value); // CodeableConcept
1262        } else if (name.equals("subject")) {
1263          this.subject = castToReference(value); // Reference
1264        } else if (name.equals("created")) {
1265          this.created = castToDateTime(value); // DateTimeType
1266        } else if (name.equals("author")) {
1267          this.getAuthor().add(castToReference(value));
1268        } else if (name.equals("recipient")) {
1269          this.getRecipient().add(castToReference(value));
1270        } else if (name.equals("source")) {
1271          this.source = castToUri(value); // UriType
1272        } else if (name.equals("description")) {
1273          this.description = castToString(value); // StringType
1274        } else if (name.equals("content")) {
1275          this.getContent().add((DocumentManifestContentComponent) value);
1276        } else if (name.equals("related")) {
1277          this.getRelated().add((DocumentManifestRelatedComponent) value);
1278        } else
1279          return super.setProperty(name, value);
1280        return value;
1281      }
1282
1283      @Override
1284      public Base makeProperty(int hash, String name) throws FHIRException {
1285        switch (hash) {
1286        case 243769515:  return getMasterIdentifier(); 
1287        case -1618432855:  return addIdentifier(); 
1288        case -892481550:  return getStatusElement();
1289        case 3575610:  return getType(); 
1290        case -1867885268:  return getSubject(); 
1291        case 1028554472:  return getCreatedElement();
1292        case -1406328437:  return addAuthor(); 
1293        case 820081177:  return addRecipient(); 
1294        case -896505829:  return getSourceElement();
1295        case -1724546052:  return getDescriptionElement();
1296        case 951530617:  return addContent(); 
1297        case 1090493483:  return addRelated(); 
1298        default: return super.makeProperty(hash, name);
1299        }
1300
1301      }
1302
1303      @Override
1304      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1305        switch (hash) {
1306        case 243769515: /*masterIdentifier*/ return new String[] {"Identifier"};
1307        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1308        case -892481550: /*status*/ return new String[] {"code"};
1309        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
1310        case -1867885268: /*subject*/ return new String[] {"Reference"};
1311        case 1028554472: /*created*/ return new String[] {"dateTime"};
1312        case -1406328437: /*author*/ return new String[] {"Reference"};
1313        case 820081177: /*recipient*/ return new String[] {"Reference"};
1314        case -896505829: /*source*/ return new String[] {"uri"};
1315        case -1724546052: /*description*/ return new String[] {"string"};
1316        case 951530617: /*content*/ return new String[] {};
1317        case 1090493483: /*related*/ return new String[] {};
1318        default: return super.getTypesForProperty(hash, name);
1319        }
1320
1321      }
1322
1323      @Override
1324      public Base addChild(String name) throws FHIRException {
1325        if (name.equals("masterIdentifier")) {
1326          this.masterIdentifier = new Identifier();
1327          return this.masterIdentifier;
1328        }
1329        else if (name.equals("identifier")) {
1330          return addIdentifier();
1331        }
1332        else if (name.equals("status")) {
1333          throw new FHIRException("Cannot call addChild on a primitive type DocumentManifest.status");
1334        }
1335        else if (name.equals("type")) {
1336          this.type = new CodeableConcept();
1337          return this.type;
1338        }
1339        else if (name.equals("subject")) {
1340          this.subject = new Reference();
1341          return this.subject;
1342        }
1343        else if (name.equals("created")) {
1344          throw new FHIRException("Cannot call addChild on a primitive type DocumentManifest.created");
1345        }
1346        else if (name.equals("author")) {
1347          return addAuthor();
1348        }
1349        else if (name.equals("recipient")) {
1350          return addRecipient();
1351        }
1352        else if (name.equals("source")) {
1353          throw new FHIRException("Cannot call addChild on a primitive type DocumentManifest.source");
1354        }
1355        else if (name.equals("description")) {
1356          throw new FHIRException("Cannot call addChild on a primitive type DocumentManifest.description");
1357        }
1358        else if (name.equals("content")) {
1359          return addContent();
1360        }
1361        else if (name.equals("related")) {
1362          return addRelated();
1363        }
1364        else
1365          return super.addChild(name);
1366      }
1367
1368  public String fhirType() {
1369    return "DocumentManifest";
1370
1371  }
1372
1373      public DocumentManifest copy() {
1374        DocumentManifest dst = new DocumentManifest();
1375        copyValues(dst);
1376        dst.masterIdentifier = masterIdentifier == null ? null : masterIdentifier.copy();
1377        if (identifier != null) {
1378          dst.identifier = new ArrayList<Identifier>();
1379          for (Identifier i : identifier)
1380            dst.identifier.add(i.copy());
1381        };
1382        dst.status = status == null ? null : status.copy();
1383        dst.type = type == null ? null : type.copy();
1384        dst.subject = subject == null ? null : subject.copy();
1385        dst.created = created == null ? null : created.copy();
1386        if (author != null) {
1387          dst.author = new ArrayList<Reference>();
1388          for (Reference i : author)
1389            dst.author.add(i.copy());
1390        };
1391        if (recipient != null) {
1392          dst.recipient = new ArrayList<Reference>();
1393          for (Reference i : recipient)
1394            dst.recipient.add(i.copy());
1395        };
1396        dst.source = source == null ? null : source.copy();
1397        dst.description = description == null ? null : description.copy();
1398        if (content != null) {
1399          dst.content = new ArrayList<DocumentManifestContentComponent>();
1400          for (DocumentManifestContentComponent i : content)
1401            dst.content.add(i.copy());
1402        };
1403        if (related != null) {
1404          dst.related = new ArrayList<DocumentManifestRelatedComponent>();
1405          for (DocumentManifestRelatedComponent i : related)
1406            dst.related.add(i.copy());
1407        };
1408        return dst;
1409      }
1410
1411      protected DocumentManifest typedCopy() {
1412        return copy();
1413      }
1414
1415      @Override
1416      public boolean equalsDeep(Base other_) {
1417        if (!super.equalsDeep(other_))
1418          return false;
1419        if (!(other_ instanceof DocumentManifest))
1420          return false;
1421        DocumentManifest o = (DocumentManifest) other_;
1422        return compareDeep(masterIdentifier, o.masterIdentifier, true) && compareDeep(identifier, o.identifier, true)
1423           && compareDeep(status, o.status, true) && compareDeep(type, o.type, true) && compareDeep(subject, o.subject, true)
1424           && compareDeep(created, o.created, true) && compareDeep(author, o.author, true) && compareDeep(recipient, o.recipient, true)
1425           && compareDeep(source, o.source, true) && compareDeep(description, o.description, true) && compareDeep(content, o.content, true)
1426           && compareDeep(related, o.related, true);
1427      }
1428
1429      @Override
1430      public boolean equalsShallow(Base other_) {
1431        if (!super.equalsShallow(other_))
1432          return false;
1433        if (!(other_ instanceof DocumentManifest))
1434          return false;
1435        DocumentManifest o = (DocumentManifest) other_;
1436        return compareValues(status, o.status, true) && compareValues(created, o.created, true) && compareValues(source, o.source, true)
1437           && compareValues(description, o.description, true);
1438      }
1439
1440      public boolean isEmpty() {
1441        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(masterIdentifier, identifier
1442          , status, type, subject, created, author, recipient, source, description, content
1443          , related);
1444      }
1445
1446  @Override
1447  public ResourceType getResourceType() {
1448    return ResourceType.DocumentManifest;
1449   }
1450
1451 /**
1452   * Search parameter: <b>identifier</b>
1453   * <p>
1454   * Description: <b>Unique Identifier for the set of documents</b><br>
1455   * Type: <b>token</b><br>
1456   * Path: <b>DocumentManifest.masterIdentifier, DocumentManifest.identifier</b><br>
1457   * </p>
1458   */
1459  @SearchParamDefinition(name="identifier", path="DocumentManifest.masterIdentifier | DocumentManifest.identifier", description="Unique Identifier for the set of documents", type="token" )
1460  public static final String SP_IDENTIFIER = "identifier";
1461 /**
1462   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1463   * <p>
1464   * Description: <b>Unique Identifier for the set of documents</b><br>
1465   * Type: <b>token</b><br>
1466   * Path: <b>DocumentManifest.masterIdentifier, DocumentManifest.identifier</b><br>
1467   * </p>
1468   */
1469  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1470
1471 /**
1472   * Search parameter: <b>related-id</b>
1473   * <p>
1474   * Description: <b>Identifiers of things that are related</b><br>
1475   * Type: <b>token</b><br>
1476   * Path: <b>DocumentManifest.related.identifier</b><br>
1477   * </p>
1478   */
1479  @SearchParamDefinition(name="related-id", path="DocumentManifest.related.identifier", description="Identifiers of things that are related", type="token" )
1480  public static final String SP_RELATED_ID = "related-id";
1481 /**
1482   * <b>Fluent Client</b> search parameter constant for <b>related-id</b>
1483   * <p>
1484   * Description: <b>Identifiers of things that are related</b><br>
1485   * Type: <b>token</b><br>
1486   * Path: <b>DocumentManifest.related.identifier</b><br>
1487   * </p>
1488   */
1489  public static final ca.uhn.fhir.rest.gclient.TokenClientParam RELATED_ID = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_RELATED_ID);
1490
1491 /**
1492   * Search parameter: <b>content-ref</b>
1493   * <p>
1494   * Description: <b>Contents of this set of documents</b><br>
1495   * Type: <b>reference</b><br>
1496   * Path: <b>DocumentManifest.content.pReference</b><br>
1497   * </p>
1498   */
1499  @SearchParamDefinition(name="content-ref", path="DocumentManifest.content.p.as(Reference)", description="Contents of this set of documents", type="reference" )
1500  public static final String SP_CONTENT_REF = "content-ref";
1501 /**
1502   * <b>Fluent Client</b> search parameter constant for <b>content-ref</b>
1503   * <p>
1504   * Description: <b>Contents of this set of documents</b><br>
1505   * Type: <b>reference</b><br>
1506   * Path: <b>DocumentManifest.content.pReference</b><br>
1507   * </p>
1508   */
1509  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam CONTENT_REF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_CONTENT_REF);
1510
1511/**
1512   * Constant for fluent queries to be used to add include statements. Specifies
1513   * the path value of "<b>DocumentManifest:content-ref</b>".
1514   */
1515  public static final ca.uhn.fhir.model.api.Include INCLUDE_CONTENT_REF = new ca.uhn.fhir.model.api.Include("DocumentManifest:content-ref").toLocked();
1516
1517 /**
1518   * Search parameter: <b>subject</b>
1519   * <p>
1520   * Description: <b>The subject of the set of documents</b><br>
1521   * Type: <b>reference</b><br>
1522   * Path: <b>DocumentManifest.subject</b><br>
1523   * </p>
1524   */
1525  @SearchParamDefinition(name="subject", path="DocumentManifest.subject", description="The subject of the set of documents", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Patient"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Practitioner") }, target={Device.class, Group.class, Patient.class, Practitioner.class } )
1526  public static final String SP_SUBJECT = "subject";
1527 /**
1528   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
1529   * <p>
1530   * Description: <b>The subject of the set of documents</b><br>
1531   * Type: <b>reference</b><br>
1532   * Path: <b>DocumentManifest.subject</b><br>
1533   * </p>
1534   */
1535  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
1536
1537/**
1538   * Constant for fluent queries to be used to add include statements. Specifies
1539   * the path value of "<b>DocumentManifest:subject</b>".
1540   */
1541  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("DocumentManifest:subject").toLocked();
1542
1543 /**
1544   * Search parameter: <b>author</b>
1545   * <p>
1546   * Description: <b>Who and/or what authored the manifest</b><br>
1547   * Type: <b>reference</b><br>
1548   * Path: <b>DocumentManifest.author</b><br>
1549   * </p>
1550   */
1551  @SearchParamDefinition(name="author", path="DocumentManifest.author", description="Who and/or what authored the manifest", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Device"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Patient"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Practitioner"), @ca.uhn.fhir.model.api.annotation.Compartment(name="RelatedPerson") }, target={Device.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class } )
1552  public static final String SP_AUTHOR = "author";
1553 /**
1554   * <b>Fluent Client</b> search parameter constant for <b>author</b>
1555   * <p>
1556   * Description: <b>Who and/or what authored the manifest</b><br>
1557   * Type: <b>reference</b><br>
1558   * Path: <b>DocumentManifest.author</b><br>
1559   * </p>
1560   */
1561  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam AUTHOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_AUTHOR);
1562
1563/**
1564   * Constant for fluent queries to be used to add include statements. Specifies
1565   * the path value of "<b>DocumentManifest:author</b>".
1566   */
1567  public static final ca.uhn.fhir.model.api.Include INCLUDE_AUTHOR = new ca.uhn.fhir.model.api.Include("DocumentManifest:author").toLocked();
1568
1569 /**
1570   * Search parameter: <b>created</b>
1571   * <p>
1572   * Description: <b>When this document manifest created</b><br>
1573   * Type: <b>date</b><br>
1574   * Path: <b>DocumentManifest.created</b><br>
1575   * </p>
1576   */
1577  @SearchParamDefinition(name="created", path="DocumentManifest.created", description="When this document manifest created", type="date" )
1578  public static final String SP_CREATED = "created";
1579 /**
1580   * <b>Fluent Client</b> search parameter constant for <b>created</b>
1581   * <p>
1582   * Description: <b>When this document manifest created</b><br>
1583   * Type: <b>date</b><br>
1584   * Path: <b>DocumentManifest.created</b><br>
1585   * </p>
1586   */
1587  public static final ca.uhn.fhir.rest.gclient.DateClientParam CREATED = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_CREATED);
1588
1589 /**
1590   * Search parameter: <b>description</b>
1591   * <p>
1592   * Description: <b>Human-readable description (title)</b><br>
1593   * Type: <b>string</b><br>
1594   * Path: <b>DocumentManifest.description</b><br>
1595   * </p>
1596   */
1597  @SearchParamDefinition(name="description", path="DocumentManifest.description", description="Human-readable description (title)", type="string" )
1598  public static final String SP_DESCRIPTION = "description";
1599 /**
1600   * <b>Fluent Client</b> search parameter constant for <b>description</b>
1601   * <p>
1602   * Description: <b>Human-readable description (title)</b><br>
1603   * Type: <b>string</b><br>
1604   * Path: <b>DocumentManifest.description</b><br>
1605   * </p>
1606   */
1607  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
1608
1609 /**
1610   * Search parameter: <b>source</b>
1611   * <p>
1612   * Description: <b>The source system/application/software</b><br>
1613   * Type: <b>uri</b><br>
1614   * Path: <b>DocumentManifest.source</b><br>
1615   * </p>
1616   */
1617  @SearchParamDefinition(name="source", path="DocumentManifest.source", description="The source system/application/software", type="uri" )
1618  public static final String SP_SOURCE = "source";
1619 /**
1620   * <b>Fluent Client</b> search parameter constant for <b>source</b>
1621   * <p>
1622   * Description: <b>The source system/application/software</b><br>
1623   * Type: <b>uri</b><br>
1624   * Path: <b>DocumentManifest.source</b><br>
1625   * </p>
1626   */
1627  public static final ca.uhn.fhir.rest.gclient.UriClientParam SOURCE = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_SOURCE);
1628
1629 /**
1630   * Search parameter: <b>type</b>
1631   * <p>
1632   * Description: <b>Kind of document set</b><br>
1633   * Type: <b>token</b><br>
1634   * Path: <b>DocumentManifest.type</b><br>
1635   * </p>
1636   */
1637  @SearchParamDefinition(name="type", path="DocumentManifest.type", description="Kind of document set", type="token" )
1638  public static final String SP_TYPE = "type";
1639 /**
1640   * <b>Fluent Client</b> search parameter constant for <b>type</b>
1641   * <p>
1642   * Description: <b>Kind of document set</b><br>
1643   * Type: <b>token</b><br>
1644   * Path: <b>DocumentManifest.type</b><br>
1645   * </p>
1646   */
1647  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TYPE);
1648
1649 /**
1650   * Search parameter: <b>related-ref</b>
1651   * <p>
1652   * Description: <b>Related Resource</b><br>
1653   * Type: <b>reference</b><br>
1654   * Path: <b>DocumentManifest.related.ref</b><br>
1655   * </p>
1656   */
1657  @SearchParamDefinition(name="related-ref", path="DocumentManifest.related.ref", description="Related Resource", type="reference" )
1658  public static final String SP_RELATED_REF = "related-ref";
1659 /**
1660   * <b>Fluent Client</b> search parameter constant for <b>related-ref</b>
1661   * <p>
1662   * Description: <b>Related Resource</b><br>
1663   * Type: <b>reference</b><br>
1664   * Path: <b>DocumentManifest.related.ref</b><br>
1665   * </p>
1666   */
1667  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam RELATED_REF = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_RELATED_REF);
1668
1669/**
1670   * Constant for fluent queries to be used to add include statements. Specifies
1671   * the path value of "<b>DocumentManifest:related-ref</b>".
1672   */
1673  public static final ca.uhn.fhir.model.api.Include INCLUDE_RELATED_REF = new ca.uhn.fhir.model.api.Include("DocumentManifest:related-ref").toLocked();
1674
1675 /**
1676   * Search parameter: <b>patient</b>
1677   * <p>
1678   * Description: <b>The subject of the set of documents</b><br>
1679   * Type: <b>reference</b><br>
1680   * Path: <b>DocumentManifest.subject</b><br>
1681   * </p>
1682   */
1683  @SearchParamDefinition(name="patient", path="DocumentManifest.subject", description="The subject of the set of documents", type="reference", target={Patient.class } )
1684  public static final String SP_PATIENT = "patient";
1685 /**
1686   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1687   * <p>
1688   * Description: <b>The subject of the set of documents</b><br>
1689   * Type: <b>reference</b><br>
1690   * Path: <b>DocumentManifest.subject</b><br>
1691   * </p>
1692   */
1693  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1694
1695/**
1696   * Constant for fluent queries to be used to add include statements. Specifies
1697   * the path value of "<b>DocumentManifest:patient</b>".
1698   */
1699  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("DocumentManifest:patient").toLocked();
1700
1701 /**
1702   * Search parameter: <b>recipient</b>
1703   * <p>
1704   * Description: <b>Intended to get notified about this set of documents</b><br>
1705   * Type: <b>reference</b><br>
1706   * Path: <b>DocumentManifest.recipient</b><br>
1707   * </p>
1708   */
1709  @SearchParamDefinition(name="recipient", path="DocumentManifest.recipient", description="Intended to get notified about this set of documents", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Patient"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Practitioner") }, target={Organization.class, Patient.class, Practitioner.class, RelatedPerson.class } )
1710  public static final String SP_RECIPIENT = "recipient";
1711 /**
1712   * <b>Fluent Client</b> search parameter constant for <b>recipient</b>
1713   * <p>
1714   * Description: <b>Intended to get notified about this set of documents</b><br>
1715   * Type: <b>reference</b><br>
1716   * Path: <b>DocumentManifest.recipient</b><br>
1717   * </p>
1718   */
1719  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam RECIPIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_RECIPIENT);
1720
1721/**
1722   * Constant for fluent queries to be used to add include statements. Specifies
1723   * the path value of "<b>DocumentManifest:recipient</b>".
1724   */
1725  public static final ca.uhn.fhir.model.api.Include INCLUDE_RECIPIENT = new ca.uhn.fhir.model.api.Include("DocumentManifest:recipient").toLocked();
1726
1727 /**
1728   * Search parameter: <b>status</b>
1729   * <p>
1730   * Description: <b>current | superseded | entered-in-error</b><br>
1731   * Type: <b>token</b><br>
1732   * Path: <b>DocumentManifest.status</b><br>
1733   * </p>
1734   */
1735  @SearchParamDefinition(name="status", path="DocumentManifest.status", description="current | superseded | entered-in-error", type="token" )
1736  public static final String SP_STATUS = "status";
1737 /**
1738   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1739   * <p>
1740   * Description: <b>current | superseded | entered-in-error</b><br>
1741   * Type: <b>token</b><br>
1742   * Path: <b>DocumentManifest.status</b><br>
1743   * </p>
1744   */
1745  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1746
1747
1748}