001package org.hl7.fhir.dstu2016may.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 Sun, May 8, 2016 03:05+1000 for FHIR v1.4.0
036import java.util.ArrayList;
037import java.util.Date;
038import java.util.List;
039
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
042
043import ca.uhn.fhir.model.api.annotation.Block;
044import ca.uhn.fhir.model.api.annotation.Child;
045import ca.uhn.fhir.model.api.annotation.Description;
046import ca.uhn.fhir.model.api.annotation.ResourceDef;
047import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
048/**
049 * A request to convey information; e.g. the CDS system proposes that an alert be sent to a responsible provider, the CDS system proposes that the public health agency be notified about a reportable condition.
050 */
051@ResourceDef(name="CommunicationRequest", profile="http://hl7.org/fhir/Profile/CommunicationRequest")
052public class CommunicationRequest extends DomainResource {
053
054    public enum CommunicationRequestStatus {
055        /**
056         * The request has been proposed.
057         */
058        PROPOSED, 
059        /**
060         * The request has been planned.
061         */
062        PLANNED, 
063        /**
064         * The request has been placed.
065         */
066        REQUESTED, 
067        /**
068         * The receiving system has received the request but not yet decided whether it will be performed.
069         */
070        RECEIVED, 
071        /**
072         * The receiving system has accepted the order, but work has not yet commenced.
073         */
074        ACCEPTED, 
075        /**
076         * The work to fulfill the order is happening.
077         */
078        INPROGRESS, 
079        /**
080         * The work has been complete, the report(s) released, and no further work is planned.
081         */
082        COMPLETED, 
083        /**
084         * The request has been held by originating system/user request.
085         */
086        SUSPENDED, 
087        /**
088         * The receiving system has declined to fulfill the request
089         */
090        REJECTED, 
091        /**
092         * The communication was attempted, but due to some procedural error, it could not be completed.
093         */
094        FAILED, 
095        /**
096         * added to help the parsers
097         */
098        NULL;
099        public static CommunicationRequestStatus fromCode(String codeString) throws FHIRException {
100            if (codeString == null || "".equals(codeString))
101                return null;
102        if ("proposed".equals(codeString))
103          return PROPOSED;
104        if ("planned".equals(codeString))
105          return PLANNED;
106        if ("requested".equals(codeString))
107          return REQUESTED;
108        if ("received".equals(codeString))
109          return RECEIVED;
110        if ("accepted".equals(codeString))
111          return ACCEPTED;
112        if ("in-progress".equals(codeString))
113          return INPROGRESS;
114        if ("completed".equals(codeString))
115          return COMPLETED;
116        if ("suspended".equals(codeString))
117          return SUSPENDED;
118        if ("rejected".equals(codeString))
119          return REJECTED;
120        if ("failed".equals(codeString))
121          return FAILED;
122        throw new FHIRException("Unknown CommunicationRequestStatus code '"+codeString+"'");
123        }
124        public String toCode() {
125          switch (this) {
126            case PROPOSED: return "proposed";
127            case PLANNED: return "planned";
128            case REQUESTED: return "requested";
129            case RECEIVED: return "received";
130            case ACCEPTED: return "accepted";
131            case INPROGRESS: return "in-progress";
132            case COMPLETED: return "completed";
133            case SUSPENDED: return "suspended";
134            case REJECTED: return "rejected";
135            case FAILED: return "failed";
136            case NULL: return null;
137            default: return "?";
138          }
139        }
140        public String getSystem() {
141          switch (this) {
142            case PROPOSED: return "http://hl7.org/fhir/communication-request-status";
143            case PLANNED: return "http://hl7.org/fhir/communication-request-status";
144            case REQUESTED: return "http://hl7.org/fhir/communication-request-status";
145            case RECEIVED: return "http://hl7.org/fhir/communication-request-status";
146            case ACCEPTED: return "http://hl7.org/fhir/communication-request-status";
147            case INPROGRESS: return "http://hl7.org/fhir/communication-request-status";
148            case COMPLETED: return "http://hl7.org/fhir/communication-request-status";
149            case SUSPENDED: return "http://hl7.org/fhir/communication-request-status";
150            case REJECTED: return "http://hl7.org/fhir/communication-request-status";
151            case FAILED: return "http://hl7.org/fhir/communication-request-status";
152            case NULL: return null;
153            default: return "?";
154          }
155        }
156        public String getDefinition() {
157          switch (this) {
158            case PROPOSED: return "The request has been proposed.";
159            case PLANNED: return "The request has been planned.";
160            case REQUESTED: return "The request has been placed.";
161            case RECEIVED: return "The receiving system has received the request but not yet decided whether it will be performed.";
162            case ACCEPTED: return "The receiving system has accepted the order, but work has not yet commenced.";
163            case INPROGRESS: return "The work to fulfill the order is happening.";
164            case COMPLETED: return "The work has been complete, the report(s) released, and no further work is planned.";
165            case SUSPENDED: return "The request has been held by originating system/user request.";
166            case REJECTED: return "The receiving system has declined to fulfill the request";
167            case FAILED: return "The communication was attempted, but due to some procedural error, it could not be completed.";
168            case NULL: return null;
169            default: return "?";
170          }
171        }
172        public String getDisplay() {
173          switch (this) {
174            case PROPOSED: return "Proposed";
175            case PLANNED: return "Planned";
176            case REQUESTED: return "Requested";
177            case RECEIVED: return "Received";
178            case ACCEPTED: return "Accepted";
179            case INPROGRESS: return "In Progress";
180            case COMPLETED: return "Completed";
181            case SUSPENDED: return "Suspended";
182            case REJECTED: return "Rejected";
183            case FAILED: return "Failed";
184            case NULL: return null;
185            default: return "?";
186          }
187        }
188    }
189
190  public static class CommunicationRequestStatusEnumFactory implements EnumFactory<CommunicationRequestStatus> {
191    public CommunicationRequestStatus fromCode(String codeString) throws IllegalArgumentException {
192      if (codeString == null || "".equals(codeString))
193            if (codeString == null || "".equals(codeString))
194                return null;
195        if ("proposed".equals(codeString))
196          return CommunicationRequestStatus.PROPOSED;
197        if ("planned".equals(codeString))
198          return CommunicationRequestStatus.PLANNED;
199        if ("requested".equals(codeString))
200          return CommunicationRequestStatus.REQUESTED;
201        if ("received".equals(codeString))
202          return CommunicationRequestStatus.RECEIVED;
203        if ("accepted".equals(codeString))
204          return CommunicationRequestStatus.ACCEPTED;
205        if ("in-progress".equals(codeString))
206          return CommunicationRequestStatus.INPROGRESS;
207        if ("completed".equals(codeString))
208          return CommunicationRequestStatus.COMPLETED;
209        if ("suspended".equals(codeString))
210          return CommunicationRequestStatus.SUSPENDED;
211        if ("rejected".equals(codeString))
212          return CommunicationRequestStatus.REJECTED;
213        if ("failed".equals(codeString))
214          return CommunicationRequestStatus.FAILED;
215        throw new IllegalArgumentException("Unknown CommunicationRequestStatus code '"+codeString+"'");
216        }
217        public Enumeration<CommunicationRequestStatus> fromType(Base code) throws FHIRException {
218          if (code == null || code.isEmpty())
219            return null;
220          String codeString = ((PrimitiveType) code).asStringValue();
221          if (codeString == null || "".equals(codeString))
222            return null;
223        if ("proposed".equals(codeString))
224          return new Enumeration<CommunicationRequestStatus>(this, CommunicationRequestStatus.PROPOSED);
225        if ("planned".equals(codeString))
226          return new Enumeration<CommunicationRequestStatus>(this, CommunicationRequestStatus.PLANNED);
227        if ("requested".equals(codeString))
228          return new Enumeration<CommunicationRequestStatus>(this, CommunicationRequestStatus.REQUESTED);
229        if ("received".equals(codeString))
230          return new Enumeration<CommunicationRequestStatus>(this, CommunicationRequestStatus.RECEIVED);
231        if ("accepted".equals(codeString))
232          return new Enumeration<CommunicationRequestStatus>(this, CommunicationRequestStatus.ACCEPTED);
233        if ("in-progress".equals(codeString))
234          return new Enumeration<CommunicationRequestStatus>(this, CommunicationRequestStatus.INPROGRESS);
235        if ("completed".equals(codeString))
236          return new Enumeration<CommunicationRequestStatus>(this, CommunicationRequestStatus.COMPLETED);
237        if ("suspended".equals(codeString))
238          return new Enumeration<CommunicationRequestStatus>(this, CommunicationRequestStatus.SUSPENDED);
239        if ("rejected".equals(codeString))
240          return new Enumeration<CommunicationRequestStatus>(this, CommunicationRequestStatus.REJECTED);
241        if ("failed".equals(codeString))
242          return new Enumeration<CommunicationRequestStatus>(this, CommunicationRequestStatus.FAILED);
243        throw new FHIRException("Unknown CommunicationRequestStatus code '"+codeString+"'");
244        }
245    public String toCode(CommunicationRequestStatus code) {
246      if (code == CommunicationRequestStatus.PROPOSED)
247        return "proposed";
248      if (code == CommunicationRequestStatus.PLANNED)
249        return "planned";
250      if (code == CommunicationRequestStatus.REQUESTED)
251        return "requested";
252      if (code == CommunicationRequestStatus.RECEIVED)
253        return "received";
254      if (code == CommunicationRequestStatus.ACCEPTED)
255        return "accepted";
256      if (code == CommunicationRequestStatus.INPROGRESS)
257        return "in-progress";
258      if (code == CommunicationRequestStatus.COMPLETED)
259        return "completed";
260      if (code == CommunicationRequestStatus.SUSPENDED)
261        return "suspended";
262      if (code == CommunicationRequestStatus.REJECTED)
263        return "rejected";
264      if (code == CommunicationRequestStatus.FAILED)
265        return "failed";
266      return "?";
267      }
268    public String toSystem(CommunicationRequestStatus code) {
269      return code.getSystem();
270      }
271    }
272
273    @Block()
274    public static class CommunicationRequestPayloadComponent extends BackboneElement implements IBaseBackboneElement {
275        /**
276         * The communicated content (or for multi-part communications, one portion of the communication).
277         */
278        @Child(name = "content", type = {StringType.class, Attachment.class}, order=1, min=1, max=1, modifier=false, summary=true)
279        @Description(shortDefinition="Message part content", formalDefinition="The communicated content (or for multi-part communications, one portion of the communication)." )
280        protected Type content;
281
282        private static final long serialVersionUID = -1763459053L;
283
284    /**
285     * Constructor
286     */
287      public CommunicationRequestPayloadComponent() {
288        super();
289      }
290
291    /**
292     * Constructor
293     */
294      public CommunicationRequestPayloadComponent(Type content) {
295        super();
296        this.content = content;
297      }
298
299        /**
300         * @return {@link #content} (The communicated content (or for multi-part communications, one portion of the communication).)
301         */
302        public Type getContent() { 
303          return this.content;
304        }
305
306        /**
307         * @return {@link #content} (The communicated content (or for multi-part communications, one portion of the communication).)
308         */
309        public StringType getContentStringType() throws FHIRException { 
310          if (!(this.content instanceof StringType))
311            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.content.getClass().getName()+" was encountered");
312          return (StringType) this.content;
313        }
314
315        public boolean hasContentStringType() { 
316          return this.content instanceof StringType;
317        }
318
319        /**
320         * @return {@link #content} (The communicated content (or for multi-part communications, one portion of the communication).)
321         */
322        public Attachment getContentAttachment() throws FHIRException { 
323          if (!(this.content instanceof Attachment))
324            throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.content.getClass().getName()+" was encountered");
325          return (Attachment) this.content;
326        }
327
328        public boolean hasContentAttachment() { 
329          return this.content instanceof Attachment;
330        }
331
332        /**
333         * @return {@link #content} (The communicated content (or for multi-part communications, one portion of the communication).)
334         */
335        public Reference getContentReference() throws FHIRException { 
336          if (!(this.content instanceof Reference))
337            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.content.getClass().getName()+" was encountered");
338          return (Reference) this.content;
339        }
340
341        public boolean hasContentReference() { 
342          return this.content instanceof Reference;
343        }
344
345        public boolean hasContent() { 
346          return this.content != null && !this.content.isEmpty();
347        }
348
349        /**
350         * @param value {@link #content} (The communicated content (or for multi-part communications, one portion of the communication).)
351         */
352        public CommunicationRequestPayloadComponent setContent(Type value) { 
353          this.content = value;
354          return this;
355        }
356
357        protected void listChildren(List<Property> childrenList) {
358          super.listChildren(childrenList);
359          childrenList.add(new Property("content[x]", "string|Attachment|Reference(Any)", "The communicated content (or for multi-part communications, one portion of the communication).", 0, java.lang.Integer.MAX_VALUE, content));
360        }
361
362      @Override
363      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
364        switch (hash) {
365        case 951530617: /*content*/ return this.content == null ? new Base[0] : new Base[] {this.content}; // Type
366        default: return super.getProperty(hash, name, checkValid);
367        }
368
369      }
370
371      @Override
372      public void setProperty(int hash, String name, Base value) throws FHIRException {
373        switch (hash) {
374        case 951530617: // content
375          this.content = (Type) value; // Type
376          break;
377        default: super.setProperty(hash, name, value);
378        }
379
380      }
381
382      @Override
383      public void setProperty(String name, Base value) throws FHIRException {
384        if (name.equals("content[x]"))
385          this.content = (Type) value; // Type
386        else
387          super.setProperty(name, value);
388      }
389
390      @Override
391      public Base makeProperty(int hash, String name) throws FHIRException {
392        switch (hash) {
393        case 264548711:  return getContent(); // Type
394        default: return super.makeProperty(hash, name);
395        }
396
397      }
398
399      @Override
400      public Base addChild(String name) throws FHIRException {
401        if (name.equals("contentString")) {
402          this.content = new StringType();
403          return this.content;
404        }
405        else if (name.equals("contentAttachment")) {
406          this.content = new Attachment();
407          return this.content;
408        }
409        else if (name.equals("contentReference")) {
410          this.content = new Reference();
411          return this.content;
412        }
413        else
414          return super.addChild(name);
415      }
416
417      public CommunicationRequestPayloadComponent copy() {
418        CommunicationRequestPayloadComponent dst = new CommunicationRequestPayloadComponent();
419        copyValues(dst);
420        dst.content = content == null ? null : content.copy();
421        return dst;
422      }
423
424      @Override
425      public boolean equalsDeep(Base other) {
426        if (!super.equalsDeep(other))
427          return false;
428        if (!(other instanceof CommunicationRequestPayloadComponent))
429          return false;
430        CommunicationRequestPayloadComponent o = (CommunicationRequestPayloadComponent) other;
431        return compareDeep(content, o.content, true);
432      }
433
434      @Override
435      public boolean equalsShallow(Base other) {
436        if (!super.equalsShallow(other))
437          return false;
438        if (!(other instanceof CommunicationRequestPayloadComponent))
439          return false;
440        CommunicationRequestPayloadComponent o = (CommunicationRequestPayloadComponent) other;
441        return true;
442      }
443
444      public boolean isEmpty() {
445        return super.isEmpty() && (content == null || content.isEmpty());
446      }
447
448  public String fhirType() {
449    return "CommunicationRequest.payload";
450
451  }
452
453  }
454
455    /**
456     * A unique ID of this request for reference purposes. It must be provided if user wants it returned as part of any output, otherwise it will be autogenerated, if needed, by CDS system. Does not need to be the actual ID of the source system.
457     */
458    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
459    @Description(shortDefinition="Unique identifier", formalDefinition="A unique ID of this request for reference purposes. It must be provided if user wants it returned as part of any output, otherwise it will be autogenerated, if needed, by CDS system. Does not need to be the actual ID of the source system." )
460    protected List<Identifier> identifier;
461
462    /**
463     * The type of message to be sent such as alert, notification, reminder, instruction, etc.
464     */
465    @Child(name = "category", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
466    @Description(shortDefinition="Message category", formalDefinition="The type of message to be sent such as alert, notification, reminder, instruction, etc." )
467    protected CodeableConcept category;
468
469    /**
470     * The entity (e.g. person, organization, clinical information system, or device) which is to be the source of the communication.
471     */
472    @Child(name = "sender", type = {Device.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class}, order=2, min=0, max=1, modifier=false, summary=true)
473    @Description(shortDefinition="Message sender", formalDefinition="The entity (e.g. person, organization, clinical information system, or device) which is to be the source of the communication." )
474    protected Reference sender;
475
476    /**
477     * The actual object that is the target of the reference (The entity (e.g. person, organization, clinical information system, or device) which is to be the source of the communication.)
478     */
479    protected Resource senderTarget;
480
481    /**
482     * The entity (e.g. person, organization, clinical information system, or device) which is the intended target of the communication.
483     */
484    @Child(name = "recipient", type = {Device.class, Organization.class, Patient.class, Practitioner.class, RelatedPerson.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
485    @Description(shortDefinition="Message recipient", formalDefinition="The entity (e.g. person, organization, clinical information system, or device) which is the intended target of the communication." )
486    protected List<Reference> recipient;
487    /**
488     * The actual objects that are the target of the reference (The entity (e.g. person, organization, clinical information system, or device) which is the intended target of the communication.)
489     */
490    protected List<Resource> recipientTarget;
491
492
493    /**
494     * Text, attachment(s), or resource(s) to be communicated to the recipient.
495     */
496    @Child(name = "payload", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
497    @Description(shortDefinition="Message payload", formalDefinition="Text, attachment(s), or resource(s) to be communicated to the recipient." )
498    protected List<CommunicationRequestPayloadComponent> payload;
499
500    /**
501     * A channel that was used for this communication (e.g. email, fax).
502     */
503    @Child(name = "medium", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
504    @Description(shortDefinition="A channel of communication", formalDefinition="A channel that was used for this communication (e.g. email, fax)." )
505    protected List<CodeableConcept> medium;
506
507    /**
508     * The responsible person who authorizes this order, e.g. physician. This may be different than the author of the order statement, e.g. clerk, who may have entered the statement into the order entry application.
509     */
510    @Child(name = "requester", type = {Practitioner.class, Patient.class, RelatedPerson.class}, order=6, min=0, max=1, modifier=false, summary=true)
511    @Description(shortDefinition="An individual who requested a communication", formalDefinition="The responsible person who authorizes this order, e.g. physician. This may be different than the author of the order statement, e.g. clerk, who may have entered the statement into the order entry application." )
512    protected Reference requester;
513
514    /**
515     * The actual object that is the target of the reference (The responsible person who authorizes this order, e.g. physician. This may be different than the author of the order statement, e.g. clerk, who may have entered the statement into the order entry application.)
516     */
517    protected Resource requesterTarget;
518
519    /**
520     * The status of the proposal or order.
521     */
522    @Child(name = "status", type = {CodeType.class}, order=7, min=0, max=1, modifier=true, summary=true)
523    @Description(shortDefinition="proposed | planned | requested | received | accepted | in-progress | completed | suspended | rejected | failed", formalDefinition="The status of the proposal or order." )
524    protected Enumeration<CommunicationRequestStatus> status;
525
526    /**
527     * The encounter within which the communication request was created.
528     */
529    @Child(name = "encounter", type = {Encounter.class}, order=8, min=0, max=1, modifier=false, summary=true)
530    @Description(shortDefinition="Encounter leading to message", formalDefinition="The encounter within which the communication request was created." )
531    protected Reference encounter;
532
533    /**
534     * The actual object that is the target of the reference (The encounter within which the communication request was created.)
535     */
536    protected Encounter encounterTarget;
537
538    /**
539     * The time when this communication is to occur.
540     */
541    @Child(name = "scheduled", type = {DateTimeType.class, Period.class}, order=9, min=0, max=1, modifier=false, summary=true)
542    @Description(shortDefinition="When scheduled", formalDefinition="The time when this communication is to occur." )
543    protected Type scheduled;
544
545    /**
546     * The reason or justification for the communication request.
547     */
548    @Child(name = "reason", type = {CodeableConcept.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
549    @Description(shortDefinition="Indication for message", formalDefinition="The reason or justification for the communication request." )
550    protected List<CodeableConcept> reason;
551
552    /**
553     * The time when the request was made.
554     */
555    @Child(name = "requestedOn", type = {DateTimeType.class}, order=11, min=0, max=1, modifier=false, summary=true)
556    @Description(shortDefinition="When ordered or proposed", formalDefinition="The time when the request was made." )
557    protected DateTimeType requestedOn;
558
559    /**
560     * The patient who is the focus of this communication request.
561     */
562    @Child(name = "subject", type = {Patient.class}, order=12, min=0, max=1, modifier=false, summary=true)
563    @Description(shortDefinition="Focus of message", formalDefinition="The patient who is the focus of this communication request." )
564    protected Reference subject;
565
566    /**
567     * The actual object that is the target of the reference (The patient who is the focus of this communication request.)
568     */
569    protected Patient subjectTarget;
570
571    /**
572     * Characterizes how quickly the proposed act must be initiated. Includes concepts such as stat, urgent, routine.
573     */
574    @Child(name = "priority", type = {CodeableConcept.class}, order=13, min=0, max=1, modifier=false, summary=true)
575    @Description(shortDefinition="Message urgency", formalDefinition="Characterizes how quickly the proposed act must be initiated. Includes concepts such as stat, urgent, routine." )
576    protected CodeableConcept priority;
577
578    private static final long serialVersionUID = 146906020L;
579
580  /**
581   * Constructor
582   */
583    public CommunicationRequest() {
584      super();
585    }
586
587    /**
588     * @return {@link #identifier} (A unique ID of this request for reference purposes. It must be provided if user wants it returned as part of any output, otherwise it will be autogenerated, if needed, by CDS system. Does not need to be the actual ID of the source system.)
589     */
590    public List<Identifier> getIdentifier() { 
591      if (this.identifier == null)
592        this.identifier = new ArrayList<Identifier>();
593      return this.identifier;
594    }
595
596    public boolean hasIdentifier() { 
597      if (this.identifier == null)
598        return false;
599      for (Identifier item : this.identifier)
600        if (!item.isEmpty())
601          return true;
602      return false;
603    }
604
605    /**
606     * @return {@link #identifier} (A unique ID of this request for reference purposes. It must be provided if user wants it returned as part of any output, otherwise it will be autogenerated, if needed, by CDS system. Does not need to be the actual ID of the source system.)
607     */
608    // syntactic sugar
609    public Identifier addIdentifier() { //3
610      Identifier t = new Identifier();
611      if (this.identifier == null)
612        this.identifier = new ArrayList<Identifier>();
613      this.identifier.add(t);
614      return t;
615    }
616
617    // syntactic sugar
618    public CommunicationRequest addIdentifier(Identifier t) { //3
619      if (t == null)
620        return this;
621      if (this.identifier == null)
622        this.identifier = new ArrayList<Identifier>();
623      this.identifier.add(t);
624      return this;
625    }
626
627    /**
628     * @return {@link #category} (The type of message to be sent such as alert, notification, reminder, instruction, etc.)
629     */
630    public CodeableConcept getCategory() { 
631      if (this.category == null)
632        if (Configuration.errorOnAutoCreate())
633          throw new Error("Attempt to auto-create CommunicationRequest.category");
634        else if (Configuration.doAutoCreate())
635          this.category = new CodeableConcept(); // cc
636      return this.category;
637    }
638
639    public boolean hasCategory() { 
640      return this.category != null && !this.category.isEmpty();
641    }
642
643    /**
644     * @param value {@link #category} (The type of message to be sent such as alert, notification, reminder, instruction, etc.)
645     */
646    public CommunicationRequest setCategory(CodeableConcept value) { 
647      this.category = value;
648      return this;
649    }
650
651    /**
652     * @return {@link #sender} (The entity (e.g. person, organization, clinical information system, or device) which is to be the source of the communication.)
653     */
654    public Reference getSender() { 
655      if (this.sender == null)
656        if (Configuration.errorOnAutoCreate())
657          throw new Error("Attempt to auto-create CommunicationRequest.sender");
658        else if (Configuration.doAutoCreate())
659          this.sender = new Reference(); // cc
660      return this.sender;
661    }
662
663    public boolean hasSender() { 
664      return this.sender != null && !this.sender.isEmpty();
665    }
666
667    /**
668     * @param value {@link #sender} (The entity (e.g. person, organization, clinical information system, or device) which is to be the source of the communication.)
669     */
670    public CommunicationRequest setSender(Reference value) { 
671      this.sender = value;
672      return this;
673    }
674
675    /**
676     * @return {@link #sender} 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. (The entity (e.g. person, organization, clinical information system, or device) which is to be the source of the communication.)
677     */
678    public Resource getSenderTarget() { 
679      return this.senderTarget;
680    }
681
682    /**
683     * @param value {@link #sender} 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. (The entity (e.g. person, organization, clinical information system, or device) which is to be the source of the communication.)
684     */
685    public CommunicationRequest setSenderTarget(Resource value) { 
686      this.senderTarget = value;
687      return this;
688    }
689
690    /**
691     * @return {@link #recipient} (The entity (e.g. person, organization, clinical information system, or device) which is the intended target of the communication.)
692     */
693    public List<Reference> getRecipient() { 
694      if (this.recipient == null)
695        this.recipient = new ArrayList<Reference>();
696      return this.recipient;
697    }
698
699    public boolean hasRecipient() { 
700      if (this.recipient == null)
701        return false;
702      for (Reference item : this.recipient)
703        if (!item.isEmpty())
704          return true;
705      return false;
706    }
707
708    /**
709     * @return {@link #recipient} (The entity (e.g. person, organization, clinical information system, or device) which is the intended target of the communication.)
710     */
711    // syntactic sugar
712    public Reference addRecipient() { //3
713      Reference t = new Reference();
714      if (this.recipient == null)
715        this.recipient = new ArrayList<Reference>();
716      this.recipient.add(t);
717      return t;
718    }
719
720    // syntactic sugar
721    public CommunicationRequest addRecipient(Reference t) { //3
722      if (t == null)
723        return this;
724      if (this.recipient == null)
725        this.recipient = new ArrayList<Reference>();
726      this.recipient.add(t);
727      return this;
728    }
729
730    /**
731     * @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. The entity (e.g. person, organization, clinical information system, or device) which is the intended target of the communication.)
732     */
733    public List<Resource> getRecipientTarget() { 
734      if (this.recipientTarget == null)
735        this.recipientTarget = new ArrayList<Resource>();
736      return this.recipientTarget;
737    }
738
739    /**
740     * @return {@link #payload} (Text, attachment(s), or resource(s) to be communicated to the recipient.)
741     */
742    public List<CommunicationRequestPayloadComponent> getPayload() { 
743      if (this.payload == null)
744        this.payload = new ArrayList<CommunicationRequestPayloadComponent>();
745      return this.payload;
746    }
747
748    public boolean hasPayload() { 
749      if (this.payload == null)
750        return false;
751      for (CommunicationRequestPayloadComponent item : this.payload)
752        if (!item.isEmpty())
753          return true;
754      return false;
755    }
756
757    /**
758     * @return {@link #payload} (Text, attachment(s), or resource(s) to be communicated to the recipient.)
759     */
760    // syntactic sugar
761    public CommunicationRequestPayloadComponent addPayload() { //3
762      CommunicationRequestPayloadComponent t = new CommunicationRequestPayloadComponent();
763      if (this.payload == null)
764        this.payload = new ArrayList<CommunicationRequestPayloadComponent>();
765      this.payload.add(t);
766      return t;
767    }
768
769    // syntactic sugar
770    public CommunicationRequest addPayload(CommunicationRequestPayloadComponent t) { //3
771      if (t == null)
772        return this;
773      if (this.payload == null)
774        this.payload = new ArrayList<CommunicationRequestPayloadComponent>();
775      this.payload.add(t);
776      return this;
777    }
778
779    /**
780     * @return {@link #medium} (A channel that was used for this communication (e.g. email, fax).)
781     */
782    public List<CodeableConcept> getMedium() { 
783      if (this.medium == null)
784        this.medium = new ArrayList<CodeableConcept>();
785      return this.medium;
786    }
787
788    public boolean hasMedium() { 
789      if (this.medium == null)
790        return false;
791      for (CodeableConcept item : this.medium)
792        if (!item.isEmpty())
793          return true;
794      return false;
795    }
796
797    /**
798     * @return {@link #medium} (A channel that was used for this communication (e.g. email, fax).)
799     */
800    // syntactic sugar
801    public CodeableConcept addMedium() { //3
802      CodeableConcept t = new CodeableConcept();
803      if (this.medium == null)
804        this.medium = new ArrayList<CodeableConcept>();
805      this.medium.add(t);
806      return t;
807    }
808
809    // syntactic sugar
810    public CommunicationRequest addMedium(CodeableConcept t) { //3
811      if (t == null)
812        return this;
813      if (this.medium == null)
814        this.medium = new ArrayList<CodeableConcept>();
815      this.medium.add(t);
816      return this;
817    }
818
819    /**
820     * @return {@link #requester} (The responsible person who authorizes this order, e.g. physician. This may be different than the author of the order statement, e.g. clerk, who may have entered the statement into the order entry application.)
821     */
822    public Reference getRequester() { 
823      if (this.requester == null)
824        if (Configuration.errorOnAutoCreate())
825          throw new Error("Attempt to auto-create CommunicationRequest.requester");
826        else if (Configuration.doAutoCreate())
827          this.requester = new Reference(); // cc
828      return this.requester;
829    }
830
831    public boolean hasRequester() { 
832      return this.requester != null && !this.requester.isEmpty();
833    }
834
835    /**
836     * @param value {@link #requester} (The responsible person who authorizes this order, e.g. physician. This may be different than the author of the order statement, e.g. clerk, who may have entered the statement into the order entry application.)
837     */
838    public CommunicationRequest setRequester(Reference value) { 
839      this.requester = value;
840      return this;
841    }
842
843    /**
844     * @return {@link #requester} 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. (The responsible person who authorizes this order, e.g. physician. This may be different than the author of the order statement, e.g. clerk, who may have entered the statement into the order entry application.)
845     */
846    public Resource getRequesterTarget() { 
847      return this.requesterTarget;
848    }
849
850    /**
851     * @param value {@link #requester} 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. (The responsible person who authorizes this order, e.g. physician. This may be different than the author of the order statement, e.g. clerk, who may have entered the statement into the order entry application.)
852     */
853    public CommunicationRequest setRequesterTarget(Resource value) { 
854      this.requesterTarget = value;
855      return this;
856    }
857
858    /**
859     * @return {@link #status} (The status of the proposal or order.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
860     */
861    public Enumeration<CommunicationRequestStatus> getStatusElement() { 
862      if (this.status == null)
863        if (Configuration.errorOnAutoCreate())
864          throw new Error("Attempt to auto-create CommunicationRequest.status");
865        else if (Configuration.doAutoCreate())
866          this.status = new Enumeration<CommunicationRequestStatus>(new CommunicationRequestStatusEnumFactory()); // bb
867      return this.status;
868    }
869
870    public boolean hasStatusElement() { 
871      return this.status != null && !this.status.isEmpty();
872    }
873
874    public boolean hasStatus() { 
875      return this.status != null && !this.status.isEmpty();
876    }
877
878    /**
879     * @param value {@link #status} (The status of the proposal or order.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
880     */
881    public CommunicationRequest setStatusElement(Enumeration<CommunicationRequestStatus> value) { 
882      this.status = value;
883      return this;
884    }
885
886    /**
887     * @return The status of the proposal or order.
888     */
889    public CommunicationRequestStatus getStatus() { 
890      return this.status == null ? null : this.status.getValue();
891    }
892
893    /**
894     * @param value The status of the proposal or order.
895     */
896    public CommunicationRequest setStatus(CommunicationRequestStatus value) { 
897      if (value == null)
898        this.status = null;
899      else {
900        if (this.status == null)
901          this.status = new Enumeration<CommunicationRequestStatus>(new CommunicationRequestStatusEnumFactory());
902        this.status.setValue(value);
903      }
904      return this;
905    }
906
907    /**
908     * @return {@link #encounter} (The encounter within which the communication request was created.)
909     */
910    public Reference getEncounter() { 
911      if (this.encounter == null)
912        if (Configuration.errorOnAutoCreate())
913          throw new Error("Attempt to auto-create CommunicationRequest.encounter");
914        else if (Configuration.doAutoCreate())
915          this.encounter = new Reference(); // cc
916      return this.encounter;
917    }
918
919    public boolean hasEncounter() { 
920      return this.encounter != null && !this.encounter.isEmpty();
921    }
922
923    /**
924     * @param value {@link #encounter} (The encounter within which the communication request was created.)
925     */
926    public CommunicationRequest setEncounter(Reference value) { 
927      this.encounter = value;
928      return this;
929    }
930
931    /**
932     * @return {@link #encounter} 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. (The encounter within which the communication request was created.)
933     */
934    public Encounter getEncounterTarget() { 
935      if (this.encounterTarget == null)
936        if (Configuration.errorOnAutoCreate())
937          throw new Error("Attempt to auto-create CommunicationRequest.encounter");
938        else if (Configuration.doAutoCreate())
939          this.encounterTarget = new Encounter(); // aa
940      return this.encounterTarget;
941    }
942
943    /**
944     * @param value {@link #encounter} 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. (The encounter within which the communication request was created.)
945     */
946    public CommunicationRequest setEncounterTarget(Encounter value) { 
947      this.encounterTarget = value;
948      return this;
949    }
950
951    /**
952     * @return {@link #scheduled} (The time when this communication is to occur.)
953     */
954    public Type getScheduled() { 
955      return this.scheduled;
956    }
957
958    /**
959     * @return {@link #scheduled} (The time when this communication is to occur.)
960     */
961    public DateTimeType getScheduledDateTimeType() throws FHIRException { 
962      if (!(this.scheduled instanceof DateTimeType))
963        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.scheduled.getClass().getName()+" was encountered");
964      return (DateTimeType) this.scheduled;
965    }
966
967    public boolean hasScheduledDateTimeType() { 
968      return this.scheduled instanceof DateTimeType;
969    }
970
971    /**
972     * @return {@link #scheduled} (The time when this communication is to occur.)
973     */
974    public Period getScheduledPeriod() throws FHIRException { 
975      if (!(this.scheduled instanceof Period))
976        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.scheduled.getClass().getName()+" was encountered");
977      return (Period) this.scheduled;
978    }
979
980    public boolean hasScheduledPeriod() { 
981      return this.scheduled instanceof Period;
982    }
983
984    public boolean hasScheduled() { 
985      return this.scheduled != null && !this.scheduled.isEmpty();
986    }
987
988    /**
989     * @param value {@link #scheduled} (The time when this communication is to occur.)
990     */
991    public CommunicationRequest setScheduled(Type value) { 
992      this.scheduled = value;
993      return this;
994    }
995
996    /**
997     * @return {@link #reason} (The reason or justification for the communication request.)
998     */
999    public List<CodeableConcept> getReason() { 
1000      if (this.reason == null)
1001        this.reason = new ArrayList<CodeableConcept>();
1002      return this.reason;
1003    }
1004
1005    public boolean hasReason() { 
1006      if (this.reason == null)
1007        return false;
1008      for (CodeableConcept item : this.reason)
1009        if (!item.isEmpty())
1010          return true;
1011      return false;
1012    }
1013
1014    /**
1015     * @return {@link #reason} (The reason or justification for the communication request.)
1016     */
1017    // syntactic sugar
1018    public CodeableConcept addReason() { //3
1019      CodeableConcept t = new CodeableConcept();
1020      if (this.reason == null)
1021        this.reason = new ArrayList<CodeableConcept>();
1022      this.reason.add(t);
1023      return t;
1024    }
1025
1026    // syntactic sugar
1027    public CommunicationRequest addReason(CodeableConcept t) { //3
1028      if (t == null)
1029        return this;
1030      if (this.reason == null)
1031        this.reason = new ArrayList<CodeableConcept>();
1032      this.reason.add(t);
1033      return this;
1034    }
1035
1036    /**
1037     * @return {@link #requestedOn} (The time when the request was made.). This is the underlying object with id, value and extensions. The accessor "getRequestedOn" gives direct access to the value
1038     */
1039    public DateTimeType getRequestedOnElement() { 
1040      if (this.requestedOn == null)
1041        if (Configuration.errorOnAutoCreate())
1042          throw new Error("Attempt to auto-create CommunicationRequest.requestedOn");
1043        else if (Configuration.doAutoCreate())
1044          this.requestedOn = new DateTimeType(); // bb
1045      return this.requestedOn;
1046    }
1047
1048    public boolean hasRequestedOnElement() { 
1049      return this.requestedOn != null && !this.requestedOn.isEmpty();
1050    }
1051
1052    public boolean hasRequestedOn() { 
1053      return this.requestedOn != null && !this.requestedOn.isEmpty();
1054    }
1055
1056    /**
1057     * @param value {@link #requestedOn} (The time when the request was made.). This is the underlying object with id, value and extensions. The accessor "getRequestedOn" gives direct access to the value
1058     */
1059    public CommunicationRequest setRequestedOnElement(DateTimeType value) { 
1060      this.requestedOn = value;
1061      return this;
1062    }
1063
1064    /**
1065     * @return The time when the request was made.
1066     */
1067    public Date getRequestedOn() { 
1068      return this.requestedOn == null ? null : this.requestedOn.getValue();
1069    }
1070
1071    /**
1072     * @param value The time when the request was made.
1073     */
1074    public CommunicationRequest setRequestedOn(Date value) { 
1075      if (value == null)
1076        this.requestedOn = null;
1077      else {
1078        if (this.requestedOn == null)
1079          this.requestedOn = new DateTimeType();
1080        this.requestedOn.setValue(value);
1081      }
1082      return this;
1083    }
1084
1085    /**
1086     * @return {@link #subject} (The patient who is the focus of this communication request.)
1087     */
1088    public Reference getSubject() { 
1089      if (this.subject == null)
1090        if (Configuration.errorOnAutoCreate())
1091          throw new Error("Attempt to auto-create CommunicationRequest.subject");
1092        else if (Configuration.doAutoCreate())
1093          this.subject = new Reference(); // cc
1094      return this.subject;
1095    }
1096
1097    public boolean hasSubject() { 
1098      return this.subject != null && !this.subject.isEmpty();
1099    }
1100
1101    /**
1102     * @param value {@link #subject} (The patient who is the focus of this communication request.)
1103     */
1104    public CommunicationRequest setSubject(Reference value) { 
1105      this.subject = value;
1106      return this;
1107    }
1108
1109    /**
1110     * @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. (The patient who is the focus of this communication request.)
1111     */
1112    public Patient getSubjectTarget() { 
1113      if (this.subjectTarget == null)
1114        if (Configuration.errorOnAutoCreate())
1115          throw new Error("Attempt to auto-create CommunicationRequest.subject");
1116        else if (Configuration.doAutoCreate())
1117          this.subjectTarget = new Patient(); // aa
1118      return this.subjectTarget;
1119    }
1120
1121    /**
1122     * @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. (The patient who is the focus of this communication request.)
1123     */
1124    public CommunicationRequest setSubjectTarget(Patient value) { 
1125      this.subjectTarget = value;
1126      return this;
1127    }
1128
1129    /**
1130     * @return {@link #priority} (Characterizes how quickly the proposed act must be initiated. Includes concepts such as stat, urgent, routine.)
1131     */
1132    public CodeableConcept getPriority() { 
1133      if (this.priority == null)
1134        if (Configuration.errorOnAutoCreate())
1135          throw new Error("Attempt to auto-create CommunicationRequest.priority");
1136        else if (Configuration.doAutoCreate())
1137          this.priority = new CodeableConcept(); // cc
1138      return this.priority;
1139    }
1140
1141    public boolean hasPriority() { 
1142      return this.priority != null && !this.priority.isEmpty();
1143    }
1144
1145    /**
1146     * @param value {@link #priority} (Characterizes how quickly the proposed act must be initiated. Includes concepts such as stat, urgent, routine.)
1147     */
1148    public CommunicationRequest setPriority(CodeableConcept value) { 
1149      this.priority = value;
1150      return this;
1151    }
1152
1153      protected void listChildren(List<Property> childrenList) {
1154        super.listChildren(childrenList);
1155        childrenList.add(new Property("identifier", "Identifier", "A unique ID of this request for reference purposes. It must be provided if user wants it returned as part of any output, otherwise it will be autogenerated, if needed, by CDS system. Does not need to be the actual ID of the source system.", 0, java.lang.Integer.MAX_VALUE, identifier));
1156        childrenList.add(new Property("category", "CodeableConcept", "The type of message to be sent such as alert, notification, reminder, instruction, etc.", 0, java.lang.Integer.MAX_VALUE, category));
1157        childrenList.add(new Property("sender", "Reference(Device|Organization|Patient|Practitioner|RelatedPerson)", "The entity (e.g. person, organization, clinical information system, or device) which is to be the source of the communication.", 0, java.lang.Integer.MAX_VALUE, sender));
1158        childrenList.add(new Property("recipient", "Reference(Device|Organization|Patient|Practitioner|RelatedPerson)", "The entity (e.g. person, organization, clinical information system, or device) which is the intended target of the communication.", 0, java.lang.Integer.MAX_VALUE, recipient));
1159        childrenList.add(new Property("payload", "", "Text, attachment(s), or resource(s) to be communicated to the recipient.", 0, java.lang.Integer.MAX_VALUE, payload));
1160        childrenList.add(new Property("medium", "CodeableConcept", "A channel that was used for this communication (e.g. email, fax).", 0, java.lang.Integer.MAX_VALUE, medium));
1161        childrenList.add(new Property("requester", "Reference(Practitioner|Patient|RelatedPerson)", "The responsible person who authorizes this order, e.g. physician. This may be different than the author of the order statement, e.g. clerk, who may have entered the statement into the order entry application.", 0, java.lang.Integer.MAX_VALUE, requester));
1162        childrenList.add(new Property("status", "code", "The status of the proposal or order.", 0, java.lang.Integer.MAX_VALUE, status));
1163        childrenList.add(new Property("encounter", "Reference(Encounter)", "The encounter within which the communication request was created.", 0, java.lang.Integer.MAX_VALUE, encounter));
1164        childrenList.add(new Property("scheduled[x]", "dateTime|Period", "The time when this communication is to occur.", 0, java.lang.Integer.MAX_VALUE, scheduled));
1165        childrenList.add(new Property("reason", "CodeableConcept", "The reason or justification for the communication request.", 0, java.lang.Integer.MAX_VALUE, reason));
1166        childrenList.add(new Property("requestedOn", "dateTime", "The time when the request was made.", 0, java.lang.Integer.MAX_VALUE, requestedOn));
1167        childrenList.add(new Property("subject", "Reference(Patient)", "The patient who is the focus of this communication request.", 0, java.lang.Integer.MAX_VALUE, subject));
1168        childrenList.add(new Property("priority", "CodeableConcept", "Characterizes how quickly the proposed act must be initiated. Includes concepts such as stat, urgent, routine.", 0, java.lang.Integer.MAX_VALUE, priority));
1169      }
1170
1171      @Override
1172      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1173        switch (hash) {
1174        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1175        case 50511102: /*category*/ return this.category == null ? new Base[0] : new Base[] {this.category}; // CodeableConcept
1176        case -905962955: /*sender*/ return this.sender == null ? new Base[0] : new Base[] {this.sender}; // Reference
1177        case 820081177: /*recipient*/ return this.recipient == null ? new Base[0] : this.recipient.toArray(new Base[this.recipient.size()]); // Reference
1178        case -786701938: /*payload*/ return this.payload == null ? new Base[0] : this.payload.toArray(new Base[this.payload.size()]); // CommunicationRequestPayloadComponent
1179        case -1078030475: /*medium*/ return this.medium == null ? new Base[0] : this.medium.toArray(new Base[this.medium.size()]); // CodeableConcept
1180        case 693933948: /*requester*/ return this.requester == null ? new Base[0] : new Base[] {this.requester}; // Reference
1181        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<CommunicationRequestStatus>
1182        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
1183        case -160710483: /*scheduled*/ return this.scheduled == null ? new Base[0] : new Base[] {this.scheduled}; // Type
1184        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableConcept
1185        case 1150582253: /*requestedOn*/ return this.requestedOn == null ? new Base[0] : new Base[] {this.requestedOn}; // DateTimeType
1186        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1187        case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // CodeableConcept
1188        default: return super.getProperty(hash, name, checkValid);
1189        }
1190
1191      }
1192
1193      @Override
1194      public void setProperty(int hash, String name, Base value) throws FHIRException {
1195        switch (hash) {
1196        case -1618432855: // identifier
1197          this.getIdentifier().add(castToIdentifier(value)); // Identifier
1198          break;
1199        case 50511102: // category
1200          this.category = castToCodeableConcept(value); // CodeableConcept
1201          break;
1202        case -905962955: // sender
1203          this.sender = castToReference(value); // Reference
1204          break;
1205        case 820081177: // recipient
1206          this.getRecipient().add(castToReference(value)); // Reference
1207          break;
1208        case -786701938: // payload
1209          this.getPayload().add((CommunicationRequestPayloadComponent) value); // CommunicationRequestPayloadComponent
1210          break;
1211        case -1078030475: // medium
1212          this.getMedium().add(castToCodeableConcept(value)); // CodeableConcept
1213          break;
1214        case 693933948: // requester
1215          this.requester = castToReference(value); // Reference
1216          break;
1217        case -892481550: // status
1218          this.status = new CommunicationRequestStatusEnumFactory().fromType(value); // Enumeration<CommunicationRequestStatus>
1219          break;
1220        case 1524132147: // encounter
1221          this.encounter = castToReference(value); // Reference
1222          break;
1223        case -160710483: // scheduled
1224          this.scheduled = (Type) value; // Type
1225          break;
1226        case -934964668: // reason
1227          this.getReason().add(castToCodeableConcept(value)); // CodeableConcept
1228          break;
1229        case 1150582253: // requestedOn
1230          this.requestedOn = castToDateTime(value); // DateTimeType
1231          break;
1232        case -1867885268: // subject
1233          this.subject = castToReference(value); // Reference
1234          break;
1235        case -1165461084: // priority
1236          this.priority = castToCodeableConcept(value); // CodeableConcept
1237          break;
1238        default: super.setProperty(hash, name, value);
1239        }
1240
1241      }
1242
1243      @Override
1244      public void setProperty(String name, Base value) throws FHIRException {
1245        if (name.equals("identifier"))
1246          this.getIdentifier().add(castToIdentifier(value));
1247        else if (name.equals("category"))
1248          this.category = castToCodeableConcept(value); // CodeableConcept
1249        else if (name.equals("sender"))
1250          this.sender = castToReference(value); // Reference
1251        else if (name.equals("recipient"))
1252          this.getRecipient().add(castToReference(value));
1253        else if (name.equals("payload"))
1254          this.getPayload().add((CommunicationRequestPayloadComponent) value);
1255        else if (name.equals("medium"))
1256          this.getMedium().add(castToCodeableConcept(value));
1257        else if (name.equals("requester"))
1258          this.requester = castToReference(value); // Reference
1259        else if (name.equals("status"))
1260          this.status = new CommunicationRequestStatusEnumFactory().fromType(value); // Enumeration<CommunicationRequestStatus>
1261        else if (name.equals("encounter"))
1262          this.encounter = castToReference(value); // Reference
1263        else if (name.equals("scheduled[x]"))
1264          this.scheduled = (Type) value; // Type
1265        else if (name.equals("reason"))
1266          this.getReason().add(castToCodeableConcept(value));
1267        else if (name.equals("requestedOn"))
1268          this.requestedOn = castToDateTime(value); // DateTimeType
1269        else if (name.equals("subject"))
1270          this.subject = castToReference(value); // Reference
1271        else if (name.equals("priority"))
1272          this.priority = castToCodeableConcept(value); // CodeableConcept
1273        else
1274          super.setProperty(name, value);
1275      }
1276
1277      @Override
1278      public Base makeProperty(int hash, String name) throws FHIRException {
1279        switch (hash) {
1280        case -1618432855:  return addIdentifier(); // Identifier
1281        case 50511102:  return getCategory(); // CodeableConcept
1282        case -905962955:  return getSender(); // Reference
1283        case 820081177:  return addRecipient(); // Reference
1284        case -786701938:  return addPayload(); // CommunicationRequestPayloadComponent
1285        case -1078030475:  return addMedium(); // CodeableConcept
1286        case 693933948:  return getRequester(); // Reference
1287        case -892481550: throw new FHIRException("Cannot make property status as it is not a complex type"); // Enumeration<CommunicationRequestStatus>
1288        case 1524132147:  return getEncounter(); // Reference
1289        case 1162627251:  return getScheduled(); // Type
1290        case -934964668:  return addReason(); // CodeableConcept
1291        case 1150582253: throw new FHIRException("Cannot make property requestedOn as it is not a complex type"); // DateTimeType
1292        case -1867885268:  return getSubject(); // Reference
1293        case -1165461084:  return getPriority(); // CodeableConcept
1294        default: return super.makeProperty(hash, name);
1295        }
1296
1297      }
1298
1299      @Override
1300      public Base addChild(String name) throws FHIRException {
1301        if (name.equals("identifier")) {
1302          return addIdentifier();
1303        }
1304        else if (name.equals("category")) {
1305          this.category = new CodeableConcept();
1306          return this.category;
1307        }
1308        else if (name.equals("sender")) {
1309          this.sender = new Reference();
1310          return this.sender;
1311        }
1312        else if (name.equals("recipient")) {
1313          return addRecipient();
1314        }
1315        else if (name.equals("payload")) {
1316          return addPayload();
1317        }
1318        else if (name.equals("medium")) {
1319          return addMedium();
1320        }
1321        else if (name.equals("requester")) {
1322          this.requester = new Reference();
1323          return this.requester;
1324        }
1325        else if (name.equals("status")) {
1326          throw new FHIRException("Cannot call addChild on a primitive type CommunicationRequest.status");
1327        }
1328        else if (name.equals("encounter")) {
1329          this.encounter = new Reference();
1330          return this.encounter;
1331        }
1332        else if (name.equals("scheduledDateTime")) {
1333          this.scheduled = new DateTimeType();
1334          return this.scheduled;
1335        }
1336        else if (name.equals("scheduledPeriod")) {
1337          this.scheduled = new Period();
1338          return this.scheduled;
1339        }
1340        else if (name.equals("reason")) {
1341          return addReason();
1342        }
1343        else if (name.equals("requestedOn")) {
1344          throw new FHIRException("Cannot call addChild on a primitive type CommunicationRequest.requestedOn");
1345        }
1346        else if (name.equals("subject")) {
1347          this.subject = new Reference();
1348          return this.subject;
1349        }
1350        else if (name.equals("priority")) {
1351          this.priority = new CodeableConcept();
1352          return this.priority;
1353        }
1354        else
1355          return super.addChild(name);
1356      }
1357
1358  public String fhirType() {
1359    return "CommunicationRequest";
1360
1361  }
1362
1363      public CommunicationRequest copy() {
1364        CommunicationRequest dst = new CommunicationRequest();
1365        copyValues(dst);
1366        if (identifier != null) {
1367          dst.identifier = new ArrayList<Identifier>();
1368          for (Identifier i : identifier)
1369            dst.identifier.add(i.copy());
1370        };
1371        dst.category = category == null ? null : category.copy();
1372        dst.sender = sender == null ? null : sender.copy();
1373        if (recipient != null) {
1374          dst.recipient = new ArrayList<Reference>();
1375          for (Reference i : recipient)
1376            dst.recipient.add(i.copy());
1377        };
1378        if (payload != null) {
1379          dst.payload = new ArrayList<CommunicationRequestPayloadComponent>();
1380          for (CommunicationRequestPayloadComponent i : payload)
1381            dst.payload.add(i.copy());
1382        };
1383        if (medium != null) {
1384          dst.medium = new ArrayList<CodeableConcept>();
1385          for (CodeableConcept i : medium)
1386            dst.medium.add(i.copy());
1387        };
1388        dst.requester = requester == null ? null : requester.copy();
1389        dst.status = status == null ? null : status.copy();
1390        dst.encounter = encounter == null ? null : encounter.copy();
1391        dst.scheduled = scheduled == null ? null : scheduled.copy();
1392        if (reason != null) {
1393          dst.reason = new ArrayList<CodeableConcept>();
1394          for (CodeableConcept i : reason)
1395            dst.reason.add(i.copy());
1396        };
1397        dst.requestedOn = requestedOn == null ? null : requestedOn.copy();
1398        dst.subject = subject == null ? null : subject.copy();
1399        dst.priority = priority == null ? null : priority.copy();
1400        return dst;
1401      }
1402
1403      protected CommunicationRequest typedCopy() {
1404        return copy();
1405      }
1406
1407      @Override
1408      public boolean equalsDeep(Base other) {
1409        if (!super.equalsDeep(other))
1410          return false;
1411        if (!(other instanceof CommunicationRequest))
1412          return false;
1413        CommunicationRequest o = (CommunicationRequest) other;
1414        return compareDeep(identifier, o.identifier, true) && compareDeep(category, o.category, true) && compareDeep(sender, o.sender, true)
1415           && compareDeep(recipient, o.recipient, true) && compareDeep(payload, o.payload, true) && compareDeep(medium, o.medium, true)
1416           && compareDeep(requester, o.requester, true) && compareDeep(status, o.status, true) && compareDeep(encounter, o.encounter, true)
1417           && compareDeep(scheduled, o.scheduled, true) && compareDeep(reason, o.reason, true) && compareDeep(requestedOn, o.requestedOn, true)
1418           && compareDeep(subject, o.subject, true) && compareDeep(priority, o.priority, true);
1419      }
1420
1421      @Override
1422      public boolean equalsShallow(Base other) {
1423        if (!super.equalsShallow(other))
1424          return false;
1425        if (!(other instanceof CommunicationRequest))
1426          return false;
1427        CommunicationRequest o = (CommunicationRequest) other;
1428        return compareValues(status, o.status, true) && compareValues(requestedOn, o.requestedOn, true);
1429      }
1430
1431      public boolean isEmpty() {
1432        return super.isEmpty() && (identifier == null || identifier.isEmpty()) && (category == null || category.isEmpty())
1433           && (sender == null || sender.isEmpty()) && (recipient == null || recipient.isEmpty()) && (payload == null || payload.isEmpty())
1434           && (medium == null || medium.isEmpty()) && (requester == null || requester.isEmpty()) && (status == null || status.isEmpty())
1435           && (encounter == null || encounter.isEmpty()) && (scheduled == null || scheduled.isEmpty())
1436           && (reason == null || reason.isEmpty()) && (requestedOn == null || requestedOn.isEmpty())
1437           && (subject == null || subject.isEmpty()) && (priority == null || priority.isEmpty());
1438      }
1439
1440  @Override
1441  public ResourceType getResourceType() {
1442    return ResourceType.CommunicationRequest;
1443   }
1444
1445 /**
1446   * Search parameter: <b>sender</b>
1447   * <p>
1448   * Description: <b>Message sender</b><br>
1449   * Type: <b>reference</b><br>
1450   * Path: <b>CommunicationRequest.sender</b><br>
1451   * </p>
1452   */
1453  @SearchParamDefinition(name="sender", path="CommunicationRequest.sender", description="Message sender", type="reference" )
1454  public static final String SP_SENDER = "sender";
1455 /**
1456   * <b>Fluent Client</b> search parameter constant for <b>sender</b>
1457   * <p>
1458   * Description: <b>Message sender</b><br>
1459   * Type: <b>reference</b><br>
1460   * Path: <b>CommunicationRequest.sender</b><br>
1461   * </p>
1462   */
1463  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SENDER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SENDER);
1464
1465/**
1466   * Constant for fluent queries to be used to add include statements. Specifies
1467   * the path value of "<b>CommunicationRequest:sender</b>".
1468   */
1469  public static final ca.uhn.fhir.model.api.Include INCLUDE_SENDER = new ca.uhn.fhir.model.api.Include("CommunicationRequest:sender").toLocked();
1470
1471 /**
1472   * Search parameter: <b>requested</b>
1473   * <p>
1474   * Description: <b>When ordered or proposed</b><br>
1475   * Type: <b>date</b><br>
1476   * Path: <b>CommunicationRequest.requestedOn</b><br>
1477   * </p>
1478   */
1479  @SearchParamDefinition(name="requested", path="CommunicationRequest.requestedOn", description="When ordered or proposed", type="date" )
1480  public static final String SP_REQUESTED = "requested";
1481 /**
1482   * <b>Fluent Client</b> search parameter constant for <b>requested</b>
1483   * <p>
1484   * Description: <b>When ordered or proposed</b><br>
1485   * Type: <b>date</b><br>
1486   * Path: <b>CommunicationRequest.requestedOn</b><br>
1487   * </p>
1488   */
1489  public static final ca.uhn.fhir.rest.gclient.DateClientParam REQUESTED = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_REQUESTED);
1490
1491 /**
1492   * Search parameter: <b>time</b>
1493   * <p>
1494   * Description: <b>When scheduled</b><br>
1495   * Type: <b>date</b><br>
1496   * Path: <b>CommunicationRequest.scheduledDateTime</b><br>
1497   * </p>
1498   */
1499  @SearchParamDefinition(name="time", path="CommunicationRequest.scheduled.as(DateTime)", description="When scheduled", type="date" )
1500  public static final String SP_TIME = "time";
1501 /**
1502   * <b>Fluent Client</b> search parameter constant for <b>time</b>
1503   * <p>
1504   * Description: <b>When scheduled</b><br>
1505   * Type: <b>date</b><br>
1506   * Path: <b>CommunicationRequest.scheduledDateTime</b><br>
1507   * </p>
1508   */
1509  public static final ca.uhn.fhir.rest.gclient.DateClientParam TIME = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_TIME);
1510
1511 /**
1512   * Search parameter: <b>requester</b>
1513   * <p>
1514   * Description: <b>An individual who requested a communication</b><br>
1515   * Type: <b>reference</b><br>
1516   * Path: <b>CommunicationRequest.requester</b><br>
1517   * </p>
1518   */
1519  @SearchParamDefinition(name="requester", path="CommunicationRequest.requester", description="An individual who requested a communication", type="reference" )
1520  public static final String SP_REQUESTER = "requester";
1521 /**
1522   * <b>Fluent Client</b> search parameter constant for <b>requester</b>
1523   * <p>
1524   * Description: <b>An individual who requested a communication</b><br>
1525   * Type: <b>reference</b><br>
1526   * Path: <b>CommunicationRequest.requester</b><br>
1527   * </p>
1528   */
1529  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REQUESTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REQUESTER);
1530
1531/**
1532   * Constant for fluent queries to be used to add include statements. Specifies
1533   * the path value of "<b>CommunicationRequest:requester</b>".
1534   */
1535  public static final ca.uhn.fhir.model.api.Include INCLUDE_REQUESTER = new ca.uhn.fhir.model.api.Include("CommunicationRequest:requester").toLocked();
1536
1537 /**
1538   * Search parameter: <b>category</b>
1539   * <p>
1540   * Description: <b>Message category</b><br>
1541   * Type: <b>token</b><br>
1542   * Path: <b>CommunicationRequest.category</b><br>
1543   * </p>
1544   */
1545  @SearchParamDefinition(name="category", path="CommunicationRequest.category", description="Message category", type="token" )
1546  public static final String SP_CATEGORY = "category";
1547 /**
1548   * <b>Fluent Client</b> search parameter constant for <b>category</b>
1549   * <p>
1550   * Description: <b>Message category</b><br>
1551   * Type: <b>token</b><br>
1552   * Path: <b>CommunicationRequest.category</b><br>
1553   * </p>
1554   */
1555  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
1556
1557 /**
1558   * Search parameter: <b>patient</b>
1559   * <p>
1560   * Description: <b>Focus of message</b><br>
1561   * Type: <b>reference</b><br>
1562   * Path: <b>CommunicationRequest.subject</b><br>
1563   * </p>
1564   */
1565  @SearchParamDefinition(name="patient", path="CommunicationRequest.subject", description="Focus of message", type="reference" )
1566  public static final String SP_PATIENT = "patient";
1567 /**
1568   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1569   * <p>
1570   * Description: <b>Focus of message</b><br>
1571   * Type: <b>reference</b><br>
1572   * Path: <b>CommunicationRequest.subject</b><br>
1573   * </p>
1574   */
1575  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1576
1577/**
1578   * Constant for fluent queries to be used to add include statements. Specifies
1579   * the path value of "<b>CommunicationRequest:patient</b>".
1580   */
1581  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("CommunicationRequest:patient").toLocked();
1582
1583 /**
1584   * Search parameter: <b>status</b>
1585   * <p>
1586   * Description: <b>proposed | planned | requested | received | accepted | in-progress | completed | suspended | rejected | failed</b><br>
1587   * Type: <b>token</b><br>
1588   * Path: <b>CommunicationRequest.status</b><br>
1589   * </p>
1590   */
1591  @SearchParamDefinition(name="status", path="CommunicationRequest.status", description="proposed | planned | requested | received | accepted | in-progress | completed | suspended | rejected | failed", type="token" )
1592  public static final String SP_STATUS = "status";
1593 /**
1594   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1595   * <p>
1596   * Description: <b>proposed | planned | requested | received | accepted | in-progress | completed | suspended | rejected | failed</b><br>
1597   * Type: <b>token</b><br>
1598   * Path: <b>CommunicationRequest.status</b><br>
1599   * </p>
1600   */
1601  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1602
1603 /**
1604   * Search parameter: <b>priority</b>
1605   * <p>
1606   * Description: <b>Message urgency</b><br>
1607   * Type: <b>token</b><br>
1608   * Path: <b>CommunicationRequest.priority</b><br>
1609   * </p>
1610   */
1611  @SearchParamDefinition(name="priority", path="CommunicationRequest.priority", description="Message urgency", type="token" )
1612  public static final String SP_PRIORITY = "priority";
1613 /**
1614   * <b>Fluent Client</b> search parameter constant for <b>priority</b>
1615   * <p>
1616   * Description: <b>Message urgency</b><br>
1617   * Type: <b>token</b><br>
1618   * Path: <b>CommunicationRequest.priority</b><br>
1619   * </p>
1620   */
1621  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PRIORITY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PRIORITY);
1622
1623 /**
1624   * Search parameter: <b>subject</b>
1625   * <p>
1626   * Description: <b>Focus of message</b><br>
1627   * Type: <b>reference</b><br>
1628   * Path: <b>CommunicationRequest.subject</b><br>
1629   * </p>
1630   */
1631  @SearchParamDefinition(name="subject", path="CommunicationRequest.subject", description="Focus of message", type="reference" )
1632  public static final String SP_SUBJECT = "subject";
1633 /**
1634   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
1635   * <p>
1636   * Description: <b>Focus of message</b><br>
1637   * Type: <b>reference</b><br>
1638   * Path: <b>CommunicationRequest.subject</b><br>
1639   * </p>
1640   */
1641  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
1642
1643/**
1644   * Constant for fluent queries to be used to add include statements. Specifies
1645   * the path value of "<b>CommunicationRequest:subject</b>".
1646   */
1647  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("CommunicationRequest:subject").toLocked();
1648
1649 /**
1650   * Search parameter: <b>encounter</b>
1651   * <p>
1652   * Description: <b>Encounter leading to message</b><br>
1653   * Type: <b>reference</b><br>
1654   * Path: <b>CommunicationRequest.encounter</b><br>
1655   * </p>
1656   */
1657  @SearchParamDefinition(name="encounter", path="CommunicationRequest.encounter", description="Encounter leading to message", type="reference" )
1658  public static final String SP_ENCOUNTER = "encounter";
1659 /**
1660   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
1661   * <p>
1662   * Description: <b>Encounter leading to message</b><br>
1663   * Type: <b>reference</b><br>
1664   * Path: <b>CommunicationRequest.encounter</b><br>
1665   * </p>
1666   */
1667  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
1668
1669/**
1670   * Constant for fluent queries to be used to add include statements. Specifies
1671   * the path value of "<b>CommunicationRequest:encounter</b>".
1672   */
1673  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("CommunicationRequest:encounter").toLocked();
1674
1675 /**
1676   * Search parameter: <b>identifier</b>
1677   * <p>
1678   * Description: <b>Unique identifier</b><br>
1679   * Type: <b>token</b><br>
1680   * Path: <b>CommunicationRequest.identifier</b><br>
1681   * </p>
1682   */
1683  @SearchParamDefinition(name="identifier", path="CommunicationRequest.identifier", description="Unique identifier", type="token" )
1684  public static final String SP_IDENTIFIER = "identifier";
1685 /**
1686   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1687   * <p>
1688   * Description: <b>Unique identifier</b><br>
1689   * Type: <b>token</b><br>
1690   * Path: <b>CommunicationRequest.identifier</b><br>
1691   * </p>
1692   */
1693  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1694
1695 /**
1696   * Search parameter: <b>medium</b>
1697   * <p>
1698   * Description: <b>A channel of communication</b><br>
1699   * Type: <b>token</b><br>
1700   * Path: <b>CommunicationRequest.medium</b><br>
1701   * </p>
1702   */
1703  @SearchParamDefinition(name="medium", path="CommunicationRequest.medium", description="A channel of communication", type="token" )
1704  public static final String SP_MEDIUM = "medium";
1705 /**
1706   * <b>Fluent Client</b> search parameter constant for <b>medium</b>
1707   * <p>
1708   * Description: <b>A channel of communication</b><br>
1709   * Type: <b>token</b><br>
1710   * Path: <b>CommunicationRequest.medium</b><br>
1711   * </p>
1712   */
1713  public static final ca.uhn.fhir.rest.gclient.TokenClientParam MEDIUM = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_MEDIUM);
1714
1715 /**
1716   * Search parameter: <b>recipient</b>
1717   * <p>
1718   * Description: <b>Message recipient</b><br>
1719   * Type: <b>reference</b><br>
1720   * Path: <b>CommunicationRequest.recipient</b><br>
1721   * </p>
1722   */
1723  @SearchParamDefinition(name="recipient", path="CommunicationRequest.recipient", description="Message recipient", type="reference" )
1724  public static final String SP_RECIPIENT = "recipient";
1725 /**
1726   * <b>Fluent Client</b> search parameter constant for <b>recipient</b>
1727   * <p>
1728   * Description: <b>Message recipient</b><br>
1729   * Type: <b>reference</b><br>
1730   * Path: <b>CommunicationRequest.recipient</b><br>
1731   * </p>
1732   */
1733  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam RECIPIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_RECIPIENT);
1734
1735/**
1736   * Constant for fluent queries to be used to add include statements. Specifies
1737   * the path value of "<b>CommunicationRequest:recipient</b>".
1738   */
1739  public static final ca.uhn.fhir.model.api.Include INCLUDE_RECIPIENT = new ca.uhn.fhir.model.api.Include("CommunicationRequest:recipient").toLocked();
1740
1741
1742}