001package org.hl7.fhir.dstu2.model;
002
003
004
005
006/*
007  Copyright (c) 2011+, HL7, Inc.
008  All rights reserved.
009  
010  Redistribution and use in source and binary forms, with or without modification, 
011  are permitted provided that the following conditions are met:
012  
013   * Redistributions of source code must retain the above copyright notice, this 
014     list of conditions and the following disclaimer.
015   * Redistributions in binary form must reproduce the above copyright notice, 
016     this list of conditions and the following disclaimer in the documentation 
017     and/or other materials provided with the distribution.
018   * Neither the name of HL7 nor the names of its contributors may be used to 
019     endorse or promote products derived from this software without specific 
020     prior written permission.
021  
022  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
023  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
024  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
025  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
026  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
027  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
028  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
029  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
030  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
031  POSSIBILITY OF SUCH DAMAGE.
032  
033*/
034
035// Generated on Wed, Jul 13, 2016 05:32+1000 for FHIR v1.0.2
036import java.util.ArrayList;
037import java.util.Date;
038import java.util.List;
039
040import org.hl7.fhir.dstu2.model.Enumerations.DocumentReferenceStatus;
041import org.hl7.fhir.dstu2.model.Enumerations.DocumentReferenceStatusEnumFactory;
042import ca.uhn.fhir.model.api.annotation.Block;
043import ca.uhn.fhir.model.api.annotation.Child;
044import ca.uhn.fhir.model.api.annotation.Description;
045import ca.uhn.fhir.model.api.annotation.ResourceDef;
046import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
047import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
048import org.hl7.fhir.exceptions.FHIRException;
049import org.hl7.fhir.utilities.Utilities;
050/**
051 * A manifest that defines a set of documents.
052 */
053@ResourceDef(name="DocumentManifest", profile="http://hl7.org/fhir/Profile/DocumentManifest")
054public class DocumentManifest extends DomainResource {
055
056    @Block()
057    public static class DocumentManifestContentComponent extends BackboneElement implements IBaseBackboneElement {
058        /**
059         * 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.
060         */
061        @Child(name = "p", type = {Attachment.class}, order=1, min=1, max=1, modifier=false, summary=true)
062        @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." )
063        protected Type p;
064
065        private static final long serialVersionUID = -347538500L;
066
067    /*
068     * Constructor
069     */
070      public DocumentManifestContentComponent() {
071        super();
072      }
073
074    /*
075     * Constructor
076     */
077      public DocumentManifestContentComponent(Type p) {
078        super();
079        this.p = p;
080      }
081
082        /**
083         * @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.)
084         */
085        public Type getP() { 
086          return this.p;
087        }
088
089        /**
090         * @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.)
091         */
092        public Attachment getPAttachment() throws FHIRException { 
093          if (!(this.p instanceof Attachment))
094            throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.p.getClass().getName()+" was encountered");
095          return (Attachment) this.p;
096        }
097
098        public boolean hasPAttachment() { 
099          return this.p instanceof Attachment;
100        }
101
102        /**
103         * @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.)
104         */
105        public Reference getPReference() throws FHIRException { 
106          if (!(this.p instanceof Reference))
107            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.p.getClass().getName()+" was encountered");
108          return (Reference) this.p;
109        }
110
111        public boolean hasPReference() { 
112          return this.p instanceof Reference;
113        }
114
115        public boolean hasP() { 
116          return this.p != null && !this.p.isEmpty();
117        }
118
119        /**
120         * @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.)
121         */
122        public DocumentManifestContentComponent setP(Type value) { 
123          this.p = value;
124          return this;
125        }
126
127        protected void listChildren(List<Property> childrenList) {
128          super.listChildren(childrenList);
129          childrenList.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, java.lang.Integer.MAX_VALUE, p));
130        }
131
132      @Override
133      public void setProperty(String name, Base value) throws FHIRException {
134        if (name.equals("p[x]"))
135          this.p = (Type) value; // Type
136        else
137          super.setProperty(name, value);
138      }
139
140      @Override
141      public Base addChild(String name) throws FHIRException {
142        if (name.equals("pAttachment")) {
143          this.p = new Attachment();
144          return this.p;
145        }
146        else if (name.equals("pReference")) {
147          this.p = new Reference();
148          return this.p;
149        }
150        else
151          return super.addChild(name);
152      }
153
154      public DocumentManifestContentComponent copy() {
155        DocumentManifestContentComponent dst = new DocumentManifestContentComponent();
156        copyValues(dst);
157        dst.p = p == null ? null : p.copy();
158        return dst;
159      }
160
161      @Override
162      public boolean equalsDeep(Base other) {
163        if (!super.equalsDeep(other))
164          return false;
165        if (!(other instanceof DocumentManifestContentComponent))
166          return false;
167        DocumentManifestContentComponent o = (DocumentManifestContentComponent) other;
168        return compareDeep(p, o.p, true);
169      }
170
171      @Override
172      public boolean equalsShallow(Base other) {
173        if (!super.equalsShallow(other))
174          return false;
175        if (!(other instanceof DocumentManifestContentComponent))
176          return false;
177        DocumentManifestContentComponent o = (DocumentManifestContentComponent) other;
178        return true;
179      }
180
181      public boolean isEmpty() {
182        return super.isEmpty() && (p == null || p.isEmpty());
183      }
184
185  public String fhirType() {
186    return "DocumentManifest.content";
187
188  }
189
190  }
191
192    @Block()
193    public static class DocumentManifestRelatedComponent extends BackboneElement implements IBaseBackboneElement {
194        /**
195         * Related identifier to this DocumentManifest.  For example, Order numbers, accession numbers, XDW workflow numbers.
196         */
197        @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1, modifier=false, summary=true)
198        @Description(shortDefinition="Identifiers of things that are related", formalDefinition="Related identifier to this DocumentManifest.  For example, Order numbers, accession numbers, XDW workflow numbers." )
199        protected Identifier identifier;
200
201        /**
202         * Related Resource to this DocumentManifest. For example, Order, DiagnosticOrder,  Procedure, EligibilityRequest, etc.
203         */
204        @Child(name = "ref", type = {}, order=2, min=0, max=1, modifier=false, summary=true)
205        @Description(shortDefinition="Related Resource", formalDefinition="Related Resource to this DocumentManifest. For example, Order, DiagnosticOrder,  Procedure, EligibilityRequest, etc." )
206        protected Reference ref;
207
208        /**
209         * The actual object that is the target of the reference (Related Resource to this DocumentManifest. For example, Order, DiagnosticOrder,  Procedure, EligibilityRequest, etc.)
210         */
211        protected Resource refTarget;
212
213        private static final long serialVersionUID = -1670123330L;
214
215    /*
216     * Constructor
217     */
218      public DocumentManifestRelatedComponent() {
219        super();
220      }
221
222        /**
223         * @return {@link #identifier} (Related identifier to this DocumentManifest.  For example, Order numbers, accession numbers, XDW workflow numbers.)
224         */
225        public Identifier getIdentifier() { 
226          if (this.identifier == null)
227            if (Configuration.errorOnAutoCreate())
228              throw new Error("Attempt to auto-create DocumentManifestRelatedComponent.identifier");
229            else if (Configuration.doAutoCreate())
230              this.identifier = new Identifier(); // cc
231          return this.identifier;
232        }
233
234        public boolean hasIdentifier() { 
235          return this.identifier != null && !this.identifier.isEmpty();
236        }
237
238        /**
239         * @param value {@link #identifier} (Related identifier to this DocumentManifest.  For example, Order numbers, accession numbers, XDW workflow numbers.)
240         */
241        public DocumentManifestRelatedComponent setIdentifier(Identifier value) { 
242          this.identifier = value;
243          return this;
244        }
245
246        /**
247         * @return {@link #ref} (Related Resource to this DocumentManifest. For example, Order, DiagnosticOrder,  Procedure, EligibilityRequest, etc.)
248         */
249        public Reference getRef() { 
250          if (this.ref == null)
251            if (Configuration.errorOnAutoCreate())
252              throw new Error("Attempt to auto-create DocumentManifestRelatedComponent.ref");
253            else if (Configuration.doAutoCreate())
254              this.ref = new Reference(); // cc
255          return this.ref;
256        }
257
258        public boolean hasRef() { 
259          return this.ref != null && !this.ref.isEmpty();
260        }
261
262        /**
263         * @param value {@link #ref} (Related Resource to this DocumentManifest. For example, Order, DiagnosticOrder,  Procedure, EligibilityRequest, etc.)
264         */
265        public DocumentManifestRelatedComponent setRef(Reference value) { 
266          this.ref = value;
267          return this;
268        }
269
270        /**
271         * @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, DiagnosticOrder,  Procedure, EligibilityRequest, etc.)
272         */
273        public Resource getRefTarget() { 
274          return this.refTarget;
275        }
276
277        /**
278         * @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, DiagnosticOrder,  Procedure, EligibilityRequest, etc.)
279         */
280        public DocumentManifestRelatedComponent setRefTarget(Resource value) { 
281          this.refTarget = value;
282          return this;
283        }
284
285        protected void listChildren(List<Property> childrenList) {
286          super.listChildren(childrenList);
287          childrenList.add(new Property("identifier", "Identifier", "Related identifier to this DocumentManifest.  For example, Order numbers, accession numbers, XDW workflow numbers.", 0, java.lang.Integer.MAX_VALUE, identifier));
288          childrenList.add(new Property("ref", "Reference(Any)", "Related Resource to this DocumentManifest. For example, Order, DiagnosticOrder,  Procedure, EligibilityRequest, etc.", 0, java.lang.Integer.MAX_VALUE, ref));
289        }
290
291      @Override
292      public void setProperty(String name, Base value) throws FHIRException {
293        if (name.equals("identifier"))
294          this.identifier = castToIdentifier(value); // Identifier
295        else if (name.equals("ref"))
296          this.ref = castToReference(value); // Reference
297        else
298          super.setProperty(name, value);
299      }
300
301      @Override
302      public Base addChild(String name) throws FHIRException {
303        if (name.equals("identifier")) {
304          this.identifier = new Identifier();
305          return this.identifier;
306        }
307        else if (name.equals("ref")) {
308          this.ref = new Reference();
309          return this.ref;
310        }
311        else
312          return super.addChild(name);
313      }
314
315      public DocumentManifestRelatedComponent copy() {
316        DocumentManifestRelatedComponent dst = new DocumentManifestRelatedComponent();
317        copyValues(dst);
318        dst.identifier = identifier == null ? null : identifier.copy();
319        dst.ref = ref == null ? null : ref.copy();
320        return dst;
321      }
322
323      @Override
324      public boolean equalsDeep(Base other) {
325        if (!super.equalsDeep(other))
326          return false;
327        if (!(other instanceof DocumentManifestRelatedComponent))
328          return false;
329        DocumentManifestRelatedComponent o = (DocumentManifestRelatedComponent) other;
330        return compareDeep(identifier, o.identifier, true) && compareDeep(ref, o.ref, true);
331      }
332
333      @Override
334      public boolean equalsShallow(Base other) {
335        if (!super.equalsShallow(other))
336          return false;
337        if (!(other instanceof DocumentManifestRelatedComponent))
338          return false;
339        DocumentManifestRelatedComponent o = (DocumentManifestRelatedComponent) other;
340        return true;
341      }
342
343      public boolean isEmpty() {
344        return super.isEmpty() && (identifier == null || identifier.isEmpty()) && (ref == null || ref.isEmpty())
345          ;
346      }
347
348  public String fhirType() {
349    return "DocumentManifest.related";
350
351  }
352
353  }
354
355    /**
356     * A single identifier that uniquely identifies this manifest. Principally used to refer to the manifest in non-FHIR contexts.
357     */
358    @Child(name = "masterIdentifier", type = {Identifier.class}, order=0, min=0, max=1, modifier=false, summary=true)
359    @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." )
360    protected Identifier masterIdentifier;
361
362    /**
363     * Other identifiers associated with the document manifest, including version independent  identifiers.
364     */
365    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
366    @Description(shortDefinition="Other identifiers for the manifest", formalDefinition="Other identifiers associated with the document manifest, including version independent  identifiers." )
367    protected List<Identifier> identifier;
368
369    /**
370     * 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).
371     */
372    @Child(name = "subject", type = {Patient.class, Practitioner.class, Group.class, Device.class}, order=2, min=0, max=1, modifier=false, summary=true)
373    @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)." )
374    protected Reference subject;
375
376    /**
377     * 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).)
378     */
379    protected Resource subjectTarget;
380
381    /**
382     * A patient, practitioner, or organization for which this set of documents is intended.
383     */
384    @Child(name = "recipient", type = {Patient.class, Practitioner.class, RelatedPerson.class, Organization.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
385    @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." )
386    protected List<Reference> recipient;
387    /**
388     * The actual objects that are the target of the reference (A patient, practitioner, or organization for which this set of documents is intended.)
389     */
390    protected List<Resource> recipientTarget;
391
392
393    /**
394     * 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.
395     */
396    @Child(name = "type", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=true)
397    @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." )
398    protected CodeableConcept type;
399
400    /**
401     * Identifies who is responsible for creating the manifest, and adding  documents to it.
402     */
403    @Child(name = "author", type = {Practitioner.class, Organization.class, Device.class, Patient.class, RelatedPerson.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
404    @Description(shortDefinition="Who and/or what authored the manifest", formalDefinition="Identifies who is responsible for creating the manifest, and adding  documents to it." )
405    protected List<Reference> author;
406    /**
407     * The actual objects that are the target of the reference (Identifies who is responsible for creating the manifest, and adding  documents to it.)
408     */
409    protected List<Resource> authorTarget;
410
411
412    /**
413     * 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.).
414     */
415    @Child(name = "created", type = {DateTimeType.class}, order=6, min=0, max=1, modifier=false, summary=true)
416    @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.)." )
417    protected DateTimeType created;
418
419    /**
420     * Identifies the source system, application, or software that produced the document manifest.
421     */
422    @Child(name = "source", type = {UriType.class}, order=7, min=0, max=1, modifier=false, summary=true)
423    @Description(shortDefinition="The source system/application/software", formalDefinition="Identifies the source system, application, or software that produced the document manifest." )
424    protected UriType source;
425
426    /**
427     * The status of this document manifest.
428     */
429    @Child(name = "status", type = {CodeType.class}, order=8, min=1, max=1, modifier=true, summary=true)
430    @Description(shortDefinition="current | superseded | entered-in-error", formalDefinition="The status of this document manifest." )
431    protected Enumeration<DocumentReferenceStatus> status;
432
433    /**
434     * Human-readable description of the source document. This is sometimes known as the "title".
435     */
436    @Child(name = "description", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=true)
437    @Description(shortDefinition="Human-readable description (title)", formalDefinition="Human-readable description of the source document. This is sometimes known as the \"title\"." )
438    protected StringType description;
439
440    /**
441     * The list of Documents included in the manifest.
442     */
443    @Child(name = "content", type = {}, order=10, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
444    @Description(shortDefinition="The items included", formalDefinition="The list of Documents included in the manifest." )
445    protected List<DocumentManifestContentComponent> content;
446
447    /**
448     * Related identifiers or resources associated with the DocumentManifest.
449     */
450    @Child(name = "related", type = {}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
451    @Description(shortDefinition="Related things", formalDefinition="Related identifiers or resources associated with the DocumentManifest." )
452    protected List<DocumentManifestRelatedComponent> related;
453
454    private static final long serialVersionUID = -2056683927L;
455
456  /*
457   * Constructor
458   */
459    public DocumentManifest() {
460      super();
461    }
462
463  /*
464   * Constructor
465   */
466    public DocumentManifest(Enumeration<DocumentReferenceStatus> status) {
467      super();
468      this.status = status;
469    }
470
471    /**
472     * @return {@link #masterIdentifier} (A single identifier that uniquely identifies this manifest. Principally used to refer to the manifest in non-FHIR contexts.)
473     */
474    public Identifier getMasterIdentifier() { 
475      if (this.masterIdentifier == null)
476        if (Configuration.errorOnAutoCreate())
477          throw new Error("Attempt to auto-create DocumentManifest.masterIdentifier");
478        else if (Configuration.doAutoCreate())
479          this.masterIdentifier = new Identifier(); // cc
480      return this.masterIdentifier;
481    }
482
483    public boolean hasMasterIdentifier() { 
484      return this.masterIdentifier != null && !this.masterIdentifier.isEmpty();
485    }
486
487    /**
488     * @param value {@link #masterIdentifier} (A single identifier that uniquely identifies this manifest. Principally used to refer to the manifest in non-FHIR contexts.)
489     */
490    public DocumentManifest setMasterIdentifier(Identifier value) { 
491      this.masterIdentifier = value;
492      return this;
493    }
494
495    /**
496     * @return {@link #identifier} (Other identifiers associated with the document manifest, including version independent  identifiers.)
497     */
498    public List<Identifier> getIdentifier() { 
499      if (this.identifier == null)
500        this.identifier = new ArrayList<Identifier>();
501      return this.identifier;
502    }
503
504    public boolean hasIdentifier() { 
505      if (this.identifier == null)
506        return false;
507      for (Identifier item : this.identifier)
508        if (!item.isEmpty())
509          return true;
510      return false;
511    }
512
513    /**
514     * @return {@link #identifier} (Other identifiers associated with the document manifest, including version independent  identifiers.)
515     */
516    // syntactic sugar
517    public Identifier addIdentifier() { //3
518      Identifier t = new Identifier();
519      if (this.identifier == null)
520        this.identifier = new ArrayList<Identifier>();
521      this.identifier.add(t);
522      return t;
523    }
524
525    // syntactic sugar
526    public DocumentManifest addIdentifier(Identifier t) { //3
527      if (t == null)
528        return this;
529      if (this.identifier == null)
530        this.identifier = new ArrayList<Identifier>();
531      this.identifier.add(t);
532      return this;
533    }
534
535    /**
536     * @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).)
537     */
538    public Reference getSubject() { 
539      if (this.subject == null)
540        if (Configuration.errorOnAutoCreate())
541          throw new Error("Attempt to auto-create DocumentManifest.subject");
542        else if (Configuration.doAutoCreate())
543          this.subject = new Reference(); // cc
544      return this.subject;
545    }
546
547    public boolean hasSubject() { 
548      return this.subject != null && !this.subject.isEmpty();
549    }
550
551    /**
552     * @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).)
553     */
554    public DocumentManifest setSubject(Reference value) { 
555      this.subject = value;
556      return this;
557    }
558
559    /**
560     * @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).)
561     */
562    public Resource getSubjectTarget() { 
563      return this.subjectTarget;
564    }
565
566    /**
567     * @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).)
568     */
569    public DocumentManifest setSubjectTarget(Resource value) { 
570      this.subjectTarget = value;
571      return this;
572    }
573
574    /**
575     * @return {@link #recipient} (A patient, practitioner, or organization for which this set of documents is intended.)
576     */
577    public List<Reference> getRecipient() { 
578      if (this.recipient == null)
579        this.recipient = new ArrayList<Reference>();
580      return this.recipient;
581    }
582
583    public boolean hasRecipient() { 
584      if (this.recipient == null)
585        return false;
586      for (Reference item : this.recipient)
587        if (!item.isEmpty())
588          return true;
589      return false;
590    }
591
592    /**
593     * @return {@link #recipient} (A patient, practitioner, or organization for which this set of documents is intended.)
594     */
595    // syntactic sugar
596    public Reference addRecipient() { //3
597      Reference t = new Reference();
598      if (this.recipient == null)
599        this.recipient = new ArrayList<Reference>();
600      this.recipient.add(t);
601      return t;
602    }
603
604    // syntactic sugar
605    public DocumentManifest addRecipient(Reference t) { //3
606      if (t == null)
607        return this;
608      if (this.recipient == null)
609        this.recipient = new ArrayList<Reference>();
610      this.recipient.add(t);
611      return this;
612    }
613
614    /**
615     * @return {@link #recipient} (The actual objects that are the target of the reference. The reference library doesn't populate this, but you can use this to hold the resources if you resolvethemt. A patient, practitioner, or organization for which this set of documents is intended.)
616     */
617    public List<Resource> getRecipientTarget() { 
618      if (this.recipientTarget == null)
619        this.recipientTarget = new ArrayList<Resource>();
620      return this.recipientTarget;
621    }
622
623    /**
624     * @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.)
625     */
626    public CodeableConcept getType() { 
627      if (this.type == null)
628        if (Configuration.errorOnAutoCreate())
629          throw new Error("Attempt to auto-create DocumentManifest.type");
630        else if (Configuration.doAutoCreate())
631          this.type = new CodeableConcept(); // cc
632      return this.type;
633    }
634
635    public boolean hasType() { 
636      return this.type != null && !this.type.isEmpty();
637    }
638
639    /**
640     * @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.)
641     */
642    public DocumentManifest setType(CodeableConcept value) { 
643      this.type = value;
644      return this;
645    }
646
647    /**
648     * @return {@link #author} (Identifies who is responsible for creating the manifest, and adding  documents to it.)
649     */
650    public List<Reference> getAuthor() { 
651      if (this.author == null)
652        this.author = new ArrayList<Reference>();
653      return this.author;
654    }
655
656    public boolean hasAuthor() { 
657      if (this.author == null)
658        return false;
659      for (Reference item : this.author)
660        if (!item.isEmpty())
661          return true;
662      return false;
663    }
664
665    /**
666     * @return {@link #author} (Identifies who is responsible for creating the manifest, and adding  documents to it.)
667     */
668    // syntactic sugar
669    public Reference addAuthor() { //3
670      Reference t = new Reference();
671      if (this.author == null)
672        this.author = new ArrayList<Reference>();
673      this.author.add(t);
674      return t;
675    }
676
677    // syntactic sugar
678    public DocumentManifest addAuthor(Reference t) { //3
679      if (t == null)
680        return this;
681      if (this.author == null)
682        this.author = new ArrayList<Reference>();
683      this.author.add(t);
684      return this;
685    }
686
687    /**
688     * @return {@link #author} (The actual objects that are the target of the reference. The reference library doesn't populate this, but you can use this to hold the resources if you resolvethemt. Identifies who is responsible for creating the manifest, and adding  documents to it.)
689     */
690    public List<Resource> getAuthorTarget() { 
691      if (this.authorTarget == null)
692        this.authorTarget = new ArrayList<Resource>();
693      return this.authorTarget;
694    }
695
696    /**
697     * @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
698     */
699    public DateTimeType getCreatedElement() { 
700      if (this.created == null)
701        if (Configuration.errorOnAutoCreate())
702          throw new Error("Attempt to auto-create DocumentManifest.created");
703        else if (Configuration.doAutoCreate())
704          this.created = new DateTimeType(); // bb
705      return this.created;
706    }
707
708    public boolean hasCreatedElement() { 
709      return this.created != null && !this.created.isEmpty();
710    }
711
712    public boolean hasCreated() { 
713      return this.created != null && !this.created.isEmpty();
714    }
715
716    /**
717     * @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
718     */
719    public DocumentManifest setCreatedElement(DateTimeType value) { 
720      this.created = value;
721      return this;
722    }
723
724    /**
725     * @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.).
726     */
727    public Date getCreated() { 
728      return this.created == null ? null : this.created.getValue();
729    }
730
731    /**
732     * @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.).
733     */
734    public DocumentManifest setCreated(Date value) { 
735      if (value == null)
736        this.created = null;
737      else {
738        if (this.created == null)
739          this.created = new DateTimeType();
740        this.created.setValue(value);
741      }
742      return this;
743    }
744
745    /**
746     * @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
747     */
748    public UriType getSourceElement() { 
749      if (this.source == null)
750        if (Configuration.errorOnAutoCreate())
751          throw new Error("Attempt to auto-create DocumentManifest.source");
752        else if (Configuration.doAutoCreate())
753          this.source = new UriType(); // bb
754      return this.source;
755    }
756
757    public boolean hasSourceElement() { 
758      return this.source != null && !this.source.isEmpty();
759    }
760
761    public boolean hasSource() { 
762      return this.source != null && !this.source.isEmpty();
763    }
764
765    /**
766     * @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
767     */
768    public DocumentManifest setSourceElement(UriType value) { 
769      this.source = value;
770      return this;
771    }
772
773    /**
774     * @return Identifies the source system, application, or software that produced the document manifest.
775     */
776    public String getSource() { 
777      return this.source == null ? null : this.source.getValue();
778    }
779
780    /**
781     * @param value Identifies the source system, application, or software that produced the document manifest.
782     */
783    public DocumentManifest setSource(String value) { 
784      if (Utilities.noString(value))
785        this.source = null;
786      else {
787        if (this.source == null)
788          this.source = new UriType();
789        this.source.setValue(value);
790      }
791      return this;
792    }
793
794    /**
795     * @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
796     */
797    public Enumeration<DocumentReferenceStatus> getStatusElement() { 
798      if (this.status == null)
799        if (Configuration.errorOnAutoCreate())
800          throw new Error("Attempt to auto-create DocumentManifest.status");
801        else if (Configuration.doAutoCreate())
802          this.status = new Enumeration<DocumentReferenceStatus>(new DocumentReferenceStatusEnumFactory()); // bb
803      return this.status;
804    }
805
806    public boolean hasStatusElement() { 
807      return this.status != null && !this.status.isEmpty();
808    }
809
810    public boolean hasStatus() { 
811      return this.status != null && !this.status.isEmpty();
812    }
813
814    /**
815     * @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
816     */
817    public DocumentManifest setStatusElement(Enumeration<DocumentReferenceStatus> value) { 
818      this.status = value;
819      return this;
820    }
821
822    /**
823     * @return The status of this document manifest.
824     */
825    public DocumentReferenceStatus getStatus() { 
826      return this.status == null ? null : this.status.getValue();
827    }
828
829    /**
830     * @param value The status of this document manifest.
831     */
832    public DocumentManifest setStatus(DocumentReferenceStatus value) { 
833        if (this.status == null)
834          this.status = new Enumeration<DocumentReferenceStatus>(new DocumentReferenceStatusEnumFactory());
835        this.status.setValue(value);
836      return this;
837    }
838
839    /**
840     * @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
841     */
842    public StringType getDescriptionElement() { 
843      if (this.description == null)
844        if (Configuration.errorOnAutoCreate())
845          throw new Error("Attempt to auto-create DocumentManifest.description");
846        else if (Configuration.doAutoCreate())
847          this.description = new StringType(); // bb
848      return this.description;
849    }
850
851    public boolean hasDescriptionElement() { 
852      return this.description != null && !this.description.isEmpty();
853    }
854
855    public boolean hasDescription() { 
856      return this.description != null && !this.description.isEmpty();
857    }
858
859    /**
860     * @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
861     */
862    public DocumentManifest setDescriptionElement(StringType value) { 
863      this.description = value;
864      return this;
865    }
866
867    /**
868     * @return Human-readable description of the source document. This is sometimes known as the "title".
869     */
870    public String getDescription() { 
871      return this.description == null ? null : this.description.getValue();
872    }
873
874    /**
875     * @param value Human-readable description of the source document. This is sometimes known as the "title".
876     */
877    public DocumentManifest setDescription(String value) { 
878      if (Utilities.noString(value))
879        this.description = null;
880      else {
881        if (this.description == null)
882          this.description = new StringType();
883        this.description.setValue(value);
884      }
885      return this;
886    }
887
888    /**
889     * @return {@link #content} (The list of Documents included in the manifest.)
890     */
891    public List<DocumentManifestContentComponent> getContent() { 
892      if (this.content == null)
893        this.content = new ArrayList<DocumentManifestContentComponent>();
894      return this.content;
895    }
896
897    public boolean hasContent() { 
898      if (this.content == null)
899        return false;
900      for (DocumentManifestContentComponent item : this.content)
901        if (!item.isEmpty())
902          return true;
903      return false;
904    }
905
906    /**
907     * @return {@link #content} (The list of Documents included in the manifest.)
908     */
909    // syntactic sugar
910    public DocumentManifestContentComponent addContent() { //3
911      DocumentManifestContentComponent t = new DocumentManifestContentComponent();
912      if (this.content == null)
913        this.content = new ArrayList<DocumentManifestContentComponent>();
914      this.content.add(t);
915      return t;
916    }
917
918    // syntactic sugar
919    public DocumentManifest addContent(DocumentManifestContentComponent t) { //3
920      if (t == null)
921        return this;
922      if (this.content == null)
923        this.content = new ArrayList<DocumentManifestContentComponent>();
924      this.content.add(t);
925      return this;
926    }
927
928    /**
929     * @return {@link #related} (Related identifiers or resources associated with the DocumentManifest.)
930     */
931    public List<DocumentManifestRelatedComponent> getRelated() { 
932      if (this.related == null)
933        this.related = new ArrayList<DocumentManifestRelatedComponent>();
934      return this.related;
935    }
936
937    public boolean hasRelated() { 
938      if (this.related == null)
939        return false;
940      for (DocumentManifestRelatedComponent item : this.related)
941        if (!item.isEmpty())
942          return true;
943      return false;
944    }
945
946    /**
947     * @return {@link #related} (Related identifiers or resources associated with the DocumentManifest.)
948     */
949    // syntactic sugar
950    public DocumentManifestRelatedComponent addRelated() { //3
951      DocumentManifestRelatedComponent t = new DocumentManifestRelatedComponent();
952      if (this.related == null)
953        this.related = new ArrayList<DocumentManifestRelatedComponent>();
954      this.related.add(t);
955      return t;
956    }
957
958    // syntactic sugar
959    public DocumentManifest addRelated(DocumentManifestRelatedComponent t) { //3
960      if (t == null)
961        return this;
962      if (this.related == null)
963        this.related = new ArrayList<DocumentManifestRelatedComponent>();
964      this.related.add(t);
965      return this;
966    }
967
968      protected void listChildren(List<Property> childrenList) {
969        super.listChildren(childrenList);
970        childrenList.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, java.lang.Integer.MAX_VALUE, masterIdentifier));
971        childrenList.add(new Property("identifier", "Identifier", "Other identifiers associated with the document manifest, including version independent  identifiers.", 0, java.lang.Integer.MAX_VALUE, identifier));
972        childrenList.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, java.lang.Integer.MAX_VALUE, subject));
973        childrenList.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));
974        childrenList.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, java.lang.Integer.MAX_VALUE, type));
975        childrenList.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));
976        childrenList.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, java.lang.Integer.MAX_VALUE, created));
977        childrenList.add(new Property("source", "uri", "Identifies the source system, application, or software that produced the document manifest.", 0, java.lang.Integer.MAX_VALUE, source));
978        childrenList.add(new Property("status", "code", "The status of this document manifest.", 0, java.lang.Integer.MAX_VALUE, status));
979        childrenList.add(new Property("description", "string", "Human-readable description of the source document. This is sometimes known as the \"title\".", 0, java.lang.Integer.MAX_VALUE, description));
980        childrenList.add(new Property("content", "", "The list of Documents included in the manifest.", 0, java.lang.Integer.MAX_VALUE, content));
981        childrenList.add(new Property("related", "", "Related identifiers or resources associated with the DocumentManifest.", 0, java.lang.Integer.MAX_VALUE, related));
982      }
983
984      @Override
985      public void setProperty(String name, Base value) throws FHIRException {
986        if (name.equals("masterIdentifier"))
987          this.masterIdentifier = castToIdentifier(value); // Identifier
988        else if (name.equals("identifier"))
989          this.getIdentifier().add(castToIdentifier(value));
990        else if (name.equals("subject"))
991          this.subject = castToReference(value); // Reference
992        else if (name.equals("recipient"))
993          this.getRecipient().add(castToReference(value));
994        else if (name.equals("type"))
995          this.type = castToCodeableConcept(value); // CodeableConcept
996        else if (name.equals("author"))
997          this.getAuthor().add(castToReference(value));
998        else if (name.equals("created"))
999          this.created = castToDateTime(value); // DateTimeType
1000        else if (name.equals("source"))
1001          this.source = castToUri(value); // UriType
1002        else if (name.equals("status"))
1003          this.status = new DocumentReferenceStatusEnumFactory().fromType(value); // Enumeration<DocumentReferenceStatus>
1004        else if (name.equals("description"))
1005          this.description = castToString(value); // StringType
1006        else if (name.equals("content"))
1007          this.getContent().add((DocumentManifestContentComponent) value);
1008        else if (name.equals("related"))
1009          this.getRelated().add((DocumentManifestRelatedComponent) value);
1010        else
1011          super.setProperty(name, value);
1012      }
1013
1014      @Override
1015      public Base addChild(String name) throws FHIRException {
1016        if (name.equals("masterIdentifier")) {
1017          this.masterIdentifier = new Identifier();
1018          return this.masterIdentifier;
1019        }
1020        else if (name.equals("identifier")) {
1021          return addIdentifier();
1022        }
1023        else if (name.equals("subject")) {
1024          this.subject = new Reference();
1025          return this.subject;
1026        }
1027        else if (name.equals("recipient")) {
1028          return addRecipient();
1029        }
1030        else if (name.equals("type")) {
1031          this.type = new CodeableConcept();
1032          return this.type;
1033        }
1034        else if (name.equals("author")) {
1035          return addAuthor();
1036        }
1037        else if (name.equals("created")) {
1038          throw new FHIRException("Cannot call addChild on a primitive type DocumentManifest.created");
1039        }
1040        else if (name.equals("source")) {
1041          throw new FHIRException("Cannot call addChild on a primitive type DocumentManifest.source");
1042        }
1043        else if (name.equals("status")) {
1044          throw new FHIRException("Cannot call addChild on a primitive type DocumentManifest.status");
1045        }
1046        else if (name.equals("description")) {
1047          throw new FHIRException("Cannot call addChild on a primitive type DocumentManifest.description");
1048        }
1049        else if (name.equals("content")) {
1050          return addContent();
1051        }
1052        else if (name.equals("related")) {
1053          return addRelated();
1054        }
1055        else
1056          return super.addChild(name);
1057      }
1058
1059  public String fhirType() {
1060    return "DocumentManifest";
1061
1062  }
1063
1064      public DocumentManifest copy() {
1065        DocumentManifest dst = new DocumentManifest();
1066        copyValues(dst);
1067        dst.masterIdentifier = masterIdentifier == null ? null : masterIdentifier.copy();
1068        if (identifier != null) {
1069          dst.identifier = new ArrayList<Identifier>();
1070          for (Identifier i : identifier)
1071            dst.identifier.add(i.copy());
1072        };
1073        dst.subject = subject == null ? null : subject.copy();
1074        if (recipient != null) {
1075          dst.recipient = new ArrayList<Reference>();
1076          for (Reference i : recipient)
1077            dst.recipient.add(i.copy());
1078        };
1079        dst.type = type == null ? null : type.copy();
1080        if (author != null) {
1081          dst.author = new ArrayList<Reference>();
1082          for (Reference i : author)
1083            dst.author.add(i.copy());
1084        };
1085        dst.created = created == null ? null : created.copy();
1086        dst.source = source == null ? null : source.copy();
1087        dst.status = status == null ? null : status.copy();
1088        dst.description = description == null ? null : description.copy();
1089        if (content != null) {
1090          dst.content = new ArrayList<DocumentManifestContentComponent>();
1091          for (DocumentManifestContentComponent i : content)
1092            dst.content.add(i.copy());
1093        };
1094        if (related != null) {
1095          dst.related = new ArrayList<DocumentManifestRelatedComponent>();
1096          for (DocumentManifestRelatedComponent i : related)
1097            dst.related.add(i.copy());
1098        };
1099        return dst;
1100      }
1101
1102      protected DocumentManifest typedCopy() {
1103        return copy();
1104      }
1105
1106      @Override
1107      public boolean equalsDeep(Base other) {
1108        if (!super.equalsDeep(other))
1109          return false;
1110        if (!(other instanceof DocumentManifest))
1111          return false;
1112        DocumentManifest o = (DocumentManifest) other;
1113        return compareDeep(masterIdentifier, o.masterIdentifier, true) && compareDeep(identifier, o.identifier, true)
1114           && compareDeep(subject, o.subject, true) && compareDeep(recipient, o.recipient, true) && compareDeep(type, o.type, true)
1115           && compareDeep(author, o.author, true) && compareDeep(created, o.created, true) && compareDeep(source, o.source, true)
1116           && compareDeep(status, o.status, true) && compareDeep(description, o.description, true) && compareDeep(content, o.content, true)
1117           && compareDeep(related, o.related, true);
1118      }
1119
1120      @Override
1121      public boolean equalsShallow(Base other) {
1122        if (!super.equalsShallow(other))
1123          return false;
1124        if (!(other instanceof DocumentManifest))
1125          return false;
1126        DocumentManifest o = (DocumentManifest) other;
1127        return compareValues(created, o.created, true) && compareValues(source, o.source, true) && compareValues(status, o.status, true)
1128           && compareValues(description, o.description, true);
1129      }
1130
1131      public boolean isEmpty() {
1132        return super.isEmpty() && (masterIdentifier == null || masterIdentifier.isEmpty()) && (identifier == null || identifier.isEmpty())
1133           && (subject == null || subject.isEmpty()) && (recipient == null || recipient.isEmpty()) && (type == null || type.isEmpty())
1134           && (author == null || author.isEmpty()) && (created == null || created.isEmpty()) && (source == null || source.isEmpty())
1135           && (status == null || status.isEmpty()) && (description == null || description.isEmpty())
1136           && (content == null || content.isEmpty()) && (related == null || related.isEmpty());
1137      }
1138
1139  @Override
1140  public ResourceType getResourceType() {
1141    return ResourceType.DocumentManifest;
1142   }
1143
1144  @SearchParamDefinition(name="identifier", path="DocumentManifest.masterIdentifier | DocumentManifest.identifier", description="Unique Identifier for the set of documents", type="token" )
1145  public static final String SP_IDENTIFIER = "identifier";
1146  @SearchParamDefinition(name="related-id", path="DocumentManifest.related.identifier", description="Identifiers of things that are related", type="token" )
1147  public static final String SP_RELATEDID = "related-id";
1148  @SearchParamDefinition(name="content-ref", path="DocumentManifest.content.pReference", description="Contents of this set of documents", type="reference" )
1149  public static final String SP_CONTENTREF = "content-ref";
1150  @SearchParamDefinition(name="subject", path="DocumentManifest.subject", description="The subject of the set of documents", type="reference" )
1151  public static final String SP_SUBJECT = "subject";
1152  @SearchParamDefinition(name="author", path="DocumentManifest.author", description="Who and/or what authored the manifest", type="reference" )
1153  public static final String SP_AUTHOR = "author";
1154  @SearchParamDefinition(name="created", path="DocumentManifest.created", description="When this document manifest created", type="date" )
1155  public static final String SP_CREATED = "created";
1156  @SearchParamDefinition(name="description", path="DocumentManifest.description", description="Human-readable description (title)", type="string" )
1157  public static final String SP_DESCRIPTION = "description";
1158  @SearchParamDefinition(name="source", path="DocumentManifest.source", description="The source system/application/software", type="uri" )
1159  public static final String SP_SOURCE = "source";
1160  @SearchParamDefinition(name="type", path="DocumentManifest.type", description="Kind of document set", type="token" )
1161  public static final String SP_TYPE = "type";
1162  @SearchParamDefinition(name="related-ref", path="DocumentManifest.related.ref", description="Related Resource", type="reference" )
1163  public static final String SP_RELATEDREF = "related-ref";
1164  @SearchParamDefinition(name="patient", path="DocumentManifest.subject", description="The subject of the set of documents", type="reference" )
1165  public static final String SP_PATIENT = "patient";
1166  @SearchParamDefinition(name="recipient", path="DocumentManifest.recipient", description="Intended to get notified about this set of documents", type="reference" )
1167  public static final String SP_RECIPIENT = "recipient";
1168  @SearchParamDefinition(name="status", path="DocumentManifest.status", description="current | superseded | entered-in-error", type="token" )
1169  public static final String SP_STATUS = "status";
1170
1171}