001package org.hl7.fhir.dstu2016may.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Sun, May 8, 2016 03:05+1000 for FHIR v1.4.0
033import java.util.ArrayList;
034import java.util.Date;
035import java.util.List;
036
037import org.hl7.fhir.exceptions.FHIRException;
038import org.hl7.fhir.utilities.Utilities;
039
040import ca.uhn.fhir.model.api.annotation.Child;
041import ca.uhn.fhir.model.api.annotation.Description;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044/**
045 * Used to record and send details about a request for referral service or transfer of a patient to the care of another provider or provider organization.
046 */
047@ResourceDef(name="ReferralRequest", profile="http://hl7.org/fhir/Profile/ReferralRequest")
048public class ReferralRequest extends DomainResource {
049
050    public enum ReferralStatus {
051        /**
052         * A draft referral that has yet to be send.
053         */
054        DRAFT, 
055        /**
056         * The referral is complete and is ready for fulfillment.
057         */
058        ACTIVE, 
059        /**
060         * The referral has been cancelled without being completed. For example it is no longer needed.
061         */
062        CANCELLED, 
063        /**
064         * The referral has been completely actioned.
065         */
066        COMPLETED, 
067        /**
068         * This referral record should never have existed, though it's possible some degree of real-world activity or decisions may have been taken due to its existence
069         */
070        ENTEREDINERROR, 
071        /**
072         * added to help the parsers
073         */
074        NULL;
075        public static ReferralStatus fromCode(String codeString) throws FHIRException {
076            if (codeString == null || "".equals(codeString))
077                return null;
078        if ("draft".equals(codeString))
079          return DRAFT;
080        if ("active".equals(codeString))
081          return ACTIVE;
082        if ("cancelled".equals(codeString))
083          return CANCELLED;
084        if ("completed".equals(codeString))
085          return COMPLETED;
086        if ("entered-in-error".equals(codeString))
087          return ENTEREDINERROR;
088        throw new FHIRException("Unknown ReferralStatus code '"+codeString+"'");
089        }
090        public String toCode() {
091          switch (this) {
092            case DRAFT: return "draft";
093            case ACTIVE: return "active";
094            case CANCELLED: return "cancelled";
095            case COMPLETED: return "completed";
096            case ENTEREDINERROR: return "entered-in-error";
097            default: return "?";
098          }
099        }
100        public String getSystem() {
101          switch (this) {
102            case DRAFT: return "http://hl7.org/fhir/referralstatus";
103            case ACTIVE: return "http://hl7.org/fhir/referralstatus";
104            case CANCELLED: return "http://hl7.org/fhir/referralstatus";
105            case COMPLETED: return "http://hl7.org/fhir/referralstatus";
106            case ENTEREDINERROR: return "http://hl7.org/fhir/referralstatus";
107            default: return "?";
108          }
109        }
110        public String getDefinition() {
111          switch (this) {
112            case DRAFT: return "A draft referral that has yet to be send.";
113            case ACTIVE: return "The referral is complete and is ready for fulfillment.";
114            case CANCELLED: return "The referral has been cancelled without being completed. For example it is no longer needed.";
115            case COMPLETED: return "The referral has been completely actioned.";
116            case ENTEREDINERROR: return "This referral record should never have existed, though it's possible some degree of real-world activity or decisions may have been taken due to its existence";
117            default: return "?";
118          }
119        }
120        public String getDisplay() {
121          switch (this) {
122            case DRAFT: return "Draft";
123            case ACTIVE: return "Active";
124            case CANCELLED: return "Cancelled";
125            case COMPLETED: return "Completed";
126            case ENTEREDINERROR: return "Entered in Error";
127            default: return "?";
128          }
129        }
130    }
131
132  public static class ReferralStatusEnumFactory implements EnumFactory<ReferralStatus> {
133    public ReferralStatus fromCode(String codeString) throws IllegalArgumentException {
134      if (codeString == null || "".equals(codeString))
135            if (codeString == null || "".equals(codeString))
136                return null;
137        if ("draft".equals(codeString))
138          return ReferralStatus.DRAFT;
139        if ("active".equals(codeString))
140          return ReferralStatus.ACTIVE;
141        if ("cancelled".equals(codeString))
142          return ReferralStatus.CANCELLED;
143        if ("completed".equals(codeString))
144          return ReferralStatus.COMPLETED;
145        if ("entered-in-error".equals(codeString))
146          return ReferralStatus.ENTEREDINERROR;
147        throw new IllegalArgumentException("Unknown ReferralStatus code '"+codeString+"'");
148        }
149        public Enumeration<ReferralStatus> fromType(Base code) throws FHIRException {
150          if (code == null || code.isEmpty())
151            return null;
152          String codeString = ((PrimitiveType) code).asStringValue();
153          if (codeString == null || "".equals(codeString))
154            return null;
155        if ("draft".equals(codeString))
156          return new Enumeration<ReferralStatus>(this, ReferralStatus.DRAFT);
157        if ("active".equals(codeString))
158          return new Enumeration<ReferralStatus>(this, ReferralStatus.ACTIVE);
159        if ("cancelled".equals(codeString))
160          return new Enumeration<ReferralStatus>(this, ReferralStatus.CANCELLED);
161        if ("completed".equals(codeString))
162          return new Enumeration<ReferralStatus>(this, ReferralStatus.COMPLETED);
163        if ("entered-in-error".equals(codeString))
164          return new Enumeration<ReferralStatus>(this, ReferralStatus.ENTEREDINERROR);
165        throw new FHIRException("Unknown ReferralStatus code '"+codeString+"'");
166        }
167    public String toCode(ReferralStatus code) {
168      if (code == ReferralStatus.DRAFT)
169        return "draft";
170      if (code == ReferralStatus.ACTIVE)
171        return "active";
172      if (code == ReferralStatus.CANCELLED)
173        return "cancelled";
174      if (code == ReferralStatus.COMPLETED)
175        return "completed";
176      if (code == ReferralStatus.ENTEREDINERROR)
177        return "entered-in-error";
178      return "?";
179      }
180    public String toSystem(ReferralStatus code) {
181      return code.getSystem();
182      }
183    }
184
185    public enum ReferralCategory {
186        /**
187         * The referral request represents a suggestion or recommendation that a referral be made.
188         */
189        PROPOSAL, 
190        /**
191         * The referral request represents an intention by the author to make a referral, but no actual referral has yet been made/authorized.
192         */
193        PLAN, 
194        /**
195         * This is an actual referral request which, when active, will have the authorizations needed to allow it to be actioned.
196         */
197        REQUEST, 
198        /**
199         * added to help the parsers
200         */
201        NULL;
202        public static ReferralCategory fromCode(String codeString) throws FHIRException {
203            if (codeString == null || "".equals(codeString))
204                return null;
205        if ("proposal".equals(codeString))
206          return PROPOSAL;
207        if ("plan".equals(codeString))
208          return PLAN;
209        if ("request".equals(codeString))
210          return REQUEST;
211        throw new FHIRException("Unknown ReferralCategory code '"+codeString+"'");
212        }
213        public String toCode() {
214          switch (this) {
215            case PROPOSAL: return "proposal";
216            case PLAN: return "plan";
217            case REQUEST: return "request";
218            default: return "?";
219          }
220        }
221        public String getSystem() {
222          switch (this) {
223            case PROPOSAL: return "http://hl7.org/fhir/referralcategory";
224            case PLAN: return "http://hl7.org/fhir/referralcategory";
225            case REQUEST: return "http://hl7.org/fhir/referralcategory";
226            default: return "?";
227          }
228        }
229        public String getDefinition() {
230          switch (this) {
231            case PROPOSAL: return "The referral request represents a suggestion or recommendation that a referral be made.";
232            case PLAN: return "The referral request represents an intention by the author to make a referral, but no actual referral has yet been made/authorized.";
233            case REQUEST: return "This is an actual referral request which, when active, will have the authorizations needed to allow it to be actioned.";
234            default: return "?";
235          }
236        }
237        public String getDisplay() {
238          switch (this) {
239            case PROPOSAL: return "Proposal";
240            case PLAN: return "Plan";
241            case REQUEST: return "Request";
242            default: return "?";
243          }
244        }
245    }
246
247  public static class ReferralCategoryEnumFactory implements EnumFactory<ReferralCategory> {
248    public ReferralCategory fromCode(String codeString) throws IllegalArgumentException {
249      if (codeString == null || "".equals(codeString))
250            if (codeString == null || "".equals(codeString))
251                return null;
252        if ("proposal".equals(codeString))
253          return ReferralCategory.PROPOSAL;
254        if ("plan".equals(codeString))
255          return ReferralCategory.PLAN;
256        if ("request".equals(codeString))
257          return ReferralCategory.REQUEST;
258        throw new IllegalArgumentException("Unknown ReferralCategory code '"+codeString+"'");
259        }
260        public Enumeration<ReferralCategory> fromType(Base code) throws FHIRException {
261          if (code == null || code.isEmpty())
262            return null;
263          String codeString = ((PrimitiveType) code).asStringValue();
264          if (codeString == null || "".equals(codeString))
265            return null;
266        if ("proposal".equals(codeString))
267          return new Enumeration<ReferralCategory>(this, ReferralCategory.PROPOSAL);
268        if ("plan".equals(codeString))
269          return new Enumeration<ReferralCategory>(this, ReferralCategory.PLAN);
270        if ("request".equals(codeString))
271          return new Enumeration<ReferralCategory>(this, ReferralCategory.REQUEST);
272        throw new FHIRException("Unknown ReferralCategory code '"+codeString+"'");
273        }
274    public String toCode(ReferralCategory code) {
275      if (code == ReferralCategory.PROPOSAL)
276        return "proposal";
277      if (code == ReferralCategory.PLAN)
278        return "plan";
279      if (code == ReferralCategory.REQUEST)
280        return "request";
281      return "?";
282      }
283    public String toSystem(ReferralCategory code) {
284      return code.getSystem();
285      }
286    }
287
288    /**
289     * Business identifier that uniquely identifies the referral/care transfer request instance.
290     */
291    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
292    @Description(shortDefinition="Business identifier", formalDefinition="Business identifier that uniquely identifies the referral/care transfer request instance." )
293    protected List<Identifier> identifier;
294
295    /**
296     * Indicates any plans, proposals or orders that this request is intended to satisfy - in whole or in part.
297     */
298    @Child(name = "basedOn", type = {ReferralRequest.class, CarePlan.class, DiagnosticOrder.class, ProcedureRequest.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
299    @Description(shortDefinition="Request fulfilled by this request", formalDefinition="Indicates any plans, proposals or orders that this request is intended to satisfy - in whole or in part." )
300    protected List<Reference> basedOn;
301    /**
302     * The actual objects that are the target of the reference (Indicates any plans, proposals or orders that this request is intended to satisfy - in whole or in part.)
303     */
304    protected List<Resource> basedOnTarget;
305
306
307    /**
308     * The business identifier of the logical "grouping" request/order that this referral is a part of.
309     */
310    @Child(name = "parent", type = {Identifier.class}, order=2, min=0, max=1, modifier=false, summary=true)
311    @Description(shortDefinition="Composite request this is part of", formalDefinition="The business identifier of the logical \"grouping\" request/order that this referral is a part of." )
312    protected Identifier parent;
313
314    /**
315     * The status of the authorization/intention reflected by the referral request record.
316     */
317    @Child(name = "status", type = {CodeType.class}, order=3, min=1, max=1, modifier=true, summary=true)
318    @Description(shortDefinition="draft | active | cancelled | completed | entered-in-error", formalDefinition="The status of the authorization/intention reflected by the referral request record." )
319    protected Enumeration<ReferralStatus> status;
320
321    /**
322     * Distinguishes the "level" of authorization/demand implicit in this request.
323     */
324    @Child(name = "category", type = {CodeType.class}, order=4, min=1, max=1, modifier=true, summary=true)
325    @Description(shortDefinition="proposal | plan | request", formalDefinition="Distinguishes the \"level\" of authorization/demand implicit in this request." )
326    protected Enumeration<ReferralCategory> category;
327
328    /**
329     * An indication of the type of referral (or where applicable the type of transfer of care) request.
330     */
331    @Child(name = "type", type = {CodeableConcept.class}, order=5, min=0, max=1, modifier=false, summary=true)
332    @Description(shortDefinition="Referral/Transition of care request type", formalDefinition="An indication of the type of referral (or where applicable the type of transfer of care) request." )
333    protected CodeableConcept type;
334
335    /**
336     * An indication of the urgency of referral (or where applicable the type of transfer of care) request.
337     */
338    @Child(name = "priority", type = {CodeableConcept.class}, order=6, min=0, max=1, modifier=false, summary=true)
339    @Description(shortDefinition="Urgency of referral / transfer of care request", formalDefinition="An indication of the urgency of referral (or where applicable the type of transfer of care) request." )
340    protected CodeableConcept priority;
341
342    /**
343     * The patient who is the subject of a referral or transfer of care request.
344     */
345    @Child(name = "patient", type = {Patient.class}, order=7, min=0, max=1, modifier=false, summary=true)
346    @Description(shortDefinition="Patient referred to care or transfer", formalDefinition="The patient who is the subject of a referral or transfer of care request." )
347    protected Reference patient;
348
349    /**
350     * The actual object that is the target of the reference (The patient who is the subject of a referral or transfer of care request.)
351     */
352    protected Patient patientTarget;
353
354    /**
355     * The encounter at which the request for referral or transfer of care is initiated.
356     */
357    @Child(name = "context", type = {Encounter.class, EpisodeOfCare.class}, order=8, min=0, max=1, modifier=false, summary=false)
358    @Description(shortDefinition="Originating encounter", formalDefinition="The encounter at which the request for referral or transfer of care is initiated." )
359    protected Reference context;
360
361    /**
362     * The actual object that is the target of the reference (The encounter at which the request for referral or transfer of care is initiated.)
363     */
364    protected Resource contextTarget;
365
366    /**
367     * The period of time within which the services identified in the referral/transfer of care is specified or required to occur.
368     */
369    @Child(name = "fulfillmentTime", type = {Period.class}, order=9, min=0, max=1, modifier=false, summary=true)
370    @Description(shortDefinition="Requested service(s) fulfillment time", formalDefinition="The period of time within which the services identified in the referral/transfer of care is specified or required to occur." )
371    protected Period fulfillmentTime;
372
373    /**
374     * Date/DateTime of creation for draft requests and date of activation for active requests.
375     */
376    @Child(name = "authored", type = {DateTimeType.class}, order=10, min=0, max=1, modifier=false, summary=true)
377    @Description(shortDefinition="Date of creation/activation", formalDefinition="Date/DateTime of creation for draft requests and date of activation for active requests." )
378    protected DateTimeType authored;
379
380    /**
381     * The healthcare provider or provider organization who/which initiated the referral/transfer of care request. Can also be  Patient (a self referral).
382     */
383    @Child(name = "requester", type = {Practitioner.class, Organization.class, Patient.class}, order=11, min=0, max=1, modifier=false, summary=true)
384    @Description(shortDefinition="Requester of referral / transfer of care", formalDefinition="The healthcare provider or provider organization who/which initiated the referral/transfer of care request. Can also be  Patient (a self referral)." )
385    protected Reference requester;
386
387    /**
388     * The actual object that is the target of the reference (The healthcare provider or provider organization who/which initiated the referral/transfer of care request. Can also be  Patient (a self referral).)
389     */
390    protected Resource requesterTarget;
391
392    /**
393     * Indication of the clinical domain or discipline to which the referral or transfer of care request is sent.  For example: Cardiology Gastroenterology Diabetology.
394     */
395    @Child(name = "specialty", type = {CodeableConcept.class}, order=12, min=0, max=1, modifier=false, summary=false)
396    @Description(shortDefinition="The clinical specialty (discipline) that the referral is requested for", formalDefinition="Indication of the clinical domain or discipline to which the referral or transfer of care request is sent.  For example: Cardiology Gastroenterology Diabetology." )
397    protected CodeableConcept specialty;
398
399    /**
400     * The healthcare provider(s) or provider organization(s) who/which is to receive the referral/transfer of care request.
401     */
402    @Child(name = "recipient", type = {Practitioner.class, Organization.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
403    @Description(shortDefinition="Receiver of referral / transfer of care request", formalDefinition="The healthcare provider(s) or provider organization(s) who/which is to receive the referral/transfer of care request." )
404    protected List<Reference> recipient;
405    /**
406     * The actual objects that are the target of the reference (The healthcare provider(s) or provider organization(s) who/which is to receive the referral/transfer of care request.)
407     */
408    protected List<Resource> recipientTarget;
409
410
411    /**
412     * Description of clinical condition indicating why referral/transfer of care is requested.  For example:  Pathological Anomalies, Disabled (physical or mental),  Behavioral Management.
413     */
414    @Child(name = "reason", type = {CodeableConcept.class}, order=14, min=0, max=1, modifier=false, summary=true)
415    @Description(shortDefinition="Reason for referral / transfer of care request", formalDefinition="Description of clinical condition indicating why referral/transfer of care is requested.  For example:  Pathological Anomalies, Disabled (physical or mental),  Behavioral Management." )
416    protected CodeableConcept reason;
417
418    /**
419     * The reason element gives a short description of why the referral is being made, the description expands on this to support a more complete clinical summary.
420     */
421    @Child(name = "description", type = {StringType.class}, order=15, min=0, max=1, modifier=false, summary=false)
422    @Description(shortDefinition="A textual description of the referral", formalDefinition="The reason element gives a short description of why the referral is being made, the description expands on this to support a more complete clinical summary." )
423    protected StringType description;
424
425    /**
426     * The service(s) that is/are requested to be provided to the patient.  For example: cardiac pacemaker insertion.
427     */
428    @Child(name = "serviceRequested", type = {CodeableConcept.class}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
429    @Description(shortDefinition="Actions requested as part of the referral", formalDefinition="The service(s) that is/are requested to be provided to the patient.  For example: cardiac pacemaker insertion." )
430    protected List<CodeableConcept> serviceRequested;
431
432    /**
433     * Any additional (administrative, financial or clinical) information required to support request for referral or transfer of care.  For example: Presenting problems/chief complaints Medical History Family History Alerts Allergy/Intolerance and Adverse Reactions Medications Observations/Assessments (may include cognitive and fundtional assessments) Diagnostic Reports Care Plan.
434     */
435    @Child(name = "supportingInformation", type = {}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
436    @Description(shortDefinition="Additonal information to support referral or transfer of care request", formalDefinition="Any additional (administrative, financial or clinical) information required to support request for referral or transfer of care.  For example: Presenting problems/chief complaints Medical History Family History Alerts Allergy/Intolerance and Adverse Reactions Medications Observations/Assessments (may include cognitive and fundtional assessments) Diagnostic Reports Care Plan." )
437    protected List<Reference> supportingInformation;
438    /**
439     * The actual objects that are the target of the reference (Any additional (administrative, financial or clinical) information required to support request for referral or transfer of care.  For example: Presenting problems/chief complaints Medical History Family History Alerts Allergy/Intolerance and Adverse Reactions Medications Observations/Assessments (may include cognitive and fundtional assessments) Diagnostic Reports Care Plan.)
440     */
441    protected List<Resource> supportingInformationTarget;
442
443
444    private static final long serialVersionUID = -1030392098L;
445
446  /**
447   * Constructor
448   */
449    public ReferralRequest() {
450      super();
451    }
452
453  /**
454   * Constructor
455   */
456    public ReferralRequest(Enumeration<ReferralStatus> status, Enumeration<ReferralCategory> category) {
457      super();
458      this.status = status;
459      this.category = category;
460    }
461
462    /**
463     * @return {@link #identifier} (Business identifier that uniquely identifies the referral/care transfer request instance.)
464     */
465    public List<Identifier> getIdentifier() { 
466      if (this.identifier == null)
467        this.identifier = new ArrayList<Identifier>();
468      return this.identifier;
469    }
470
471    public boolean hasIdentifier() { 
472      if (this.identifier == null)
473        return false;
474      for (Identifier item : this.identifier)
475        if (!item.isEmpty())
476          return true;
477      return false;
478    }
479
480    /**
481     * @return {@link #identifier} (Business identifier that uniquely identifies the referral/care transfer request instance.)
482     */
483    // syntactic sugar
484    public Identifier addIdentifier() { //3
485      Identifier t = new Identifier();
486      if (this.identifier == null)
487        this.identifier = new ArrayList<Identifier>();
488      this.identifier.add(t);
489      return t;
490    }
491
492    // syntactic sugar
493    public ReferralRequest addIdentifier(Identifier t) { //3
494      if (t == null)
495        return this;
496      if (this.identifier == null)
497        this.identifier = new ArrayList<Identifier>();
498      this.identifier.add(t);
499      return this;
500    }
501
502    /**
503     * @return {@link #basedOn} (Indicates any plans, proposals or orders that this request is intended to satisfy - in whole or in part.)
504     */
505    public List<Reference> getBasedOn() { 
506      if (this.basedOn == null)
507        this.basedOn = new ArrayList<Reference>();
508      return this.basedOn;
509    }
510
511    public boolean hasBasedOn() { 
512      if (this.basedOn == null)
513        return false;
514      for (Reference item : this.basedOn)
515        if (!item.isEmpty())
516          return true;
517      return false;
518    }
519
520    /**
521     * @return {@link #basedOn} (Indicates any plans, proposals or orders that this request is intended to satisfy - in whole or in part.)
522     */
523    // syntactic sugar
524    public Reference addBasedOn() { //3
525      Reference t = new Reference();
526      if (this.basedOn == null)
527        this.basedOn = new ArrayList<Reference>();
528      this.basedOn.add(t);
529      return t;
530    }
531
532    // syntactic sugar
533    public ReferralRequest addBasedOn(Reference t) { //3
534      if (t == null)
535        return this;
536      if (this.basedOn == null)
537        this.basedOn = new ArrayList<Reference>();
538      this.basedOn.add(t);
539      return this;
540    }
541
542    /**
543     * @return {@link #basedOn} (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. Indicates any plans, proposals or orders that this request is intended to satisfy - in whole or in part.)
544     */
545    public List<Resource> getBasedOnTarget() { 
546      if (this.basedOnTarget == null)
547        this.basedOnTarget = new ArrayList<Resource>();
548      return this.basedOnTarget;
549    }
550
551    /**
552     * @return {@link #parent} (The business identifier of the logical "grouping" request/order that this referral is a part of.)
553     */
554    public Identifier getParent() { 
555      if (this.parent == null)
556        if (Configuration.errorOnAutoCreate())
557          throw new Error("Attempt to auto-create ReferralRequest.parent");
558        else if (Configuration.doAutoCreate())
559          this.parent = new Identifier(); // cc
560      return this.parent;
561    }
562
563    public boolean hasParent() { 
564      return this.parent != null && !this.parent.isEmpty();
565    }
566
567    /**
568     * @param value {@link #parent} (The business identifier of the logical "grouping" request/order that this referral is a part of.)
569     */
570    public ReferralRequest setParent(Identifier value) { 
571      this.parent = value;
572      return this;
573    }
574
575    /**
576     * @return {@link #status} (The status of the authorization/intention reflected by the referral request record.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
577     */
578    public Enumeration<ReferralStatus> getStatusElement() { 
579      if (this.status == null)
580        if (Configuration.errorOnAutoCreate())
581          throw new Error("Attempt to auto-create ReferralRequest.status");
582        else if (Configuration.doAutoCreate())
583          this.status = new Enumeration<ReferralStatus>(new ReferralStatusEnumFactory()); // bb
584      return this.status;
585    }
586
587    public boolean hasStatusElement() { 
588      return this.status != null && !this.status.isEmpty();
589    }
590
591    public boolean hasStatus() { 
592      return this.status != null && !this.status.isEmpty();
593    }
594
595    /**
596     * @param value {@link #status} (The status of the authorization/intention reflected by the referral request record.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
597     */
598    public ReferralRequest setStatusElement(Enumeration<ReferralStatus> value) { 
599      this.status = value;
600      return this;
601    }
602
603    /**
604     * @return The status of the authorization/intention reflected by the referral request record.
605     */
606    public ReferralStatus getStatus() { 
607      return this.status == null ? null : this.status.getValue();
608    }
609
610    /**
611     * @param value The status of the authorization/intention reflected by the referral request record.
612     */
613    public ReferralRequest setStatus(ReferralStatus value) { 
614        if (this.status == null)
615          this.status = new Enumeration<ReferralStatus>(new ReferralStatusEnumFactory());
616        this.status.setValue(value);
617      return this;
618    }
619
620    /**
621     * @return {@link #category} (Distinguishes the "level" of authorization/demand implicit in this request.). This is the underlying object with id, value and extensions. The accessor "getCategory" gives direct access to the value
622     */
623    public Enumeration<ReferralCategory> getCategoryElement() { 
624      if (this.category == null)
625        if (Configuration.errorOnAutoCreate())
626          throw new Error("Attempt to auto-create ReferralRequest.category");
627        else if (Configuration.doAutoCreate())
628          this.category = new Enumeration<ReferralCategory>(new ReferralCategoryEnumFactory()); // bb
629      return this.category;
630    }
631
632    public boolean hasCategoryElement() { 
633      return this.category != null && !this.category.isEmpty();
634    }
635
636    public boolean hasCategory() { 
637      return this.category != null && !this.category.isEmpty();
638    }
639
640    /**
641     * @param value {@link #category} (Distinguishes the "level" of authorization/demand implicit in this request.). This is the underlying object with id, value and extensions. The accessor "getCategory" gives direct access to the value
642     */
643    public ReferralRequest setCategoryElement(Enumeration<ReferralCategory> value) { 
644      this.category = value;
645      return this;
646    }
647
648    /**
649     * @return Distinguishes the "level" of authorization/demand implicit in this request.
650     */
651    public ReferralCategory getCategory() { 
652      return this.category == null ? null : this.category.getValue();
653    }
654
655    /**
656     * @param value Distinguishes the "level" of authorization/demand implicit in this request.
657     */
658    public ReferralRequest setCategory(ReferralCategory value) { 
659        if (this.category == null)
660          this.category = new Enumeration<ReferralCategory>(new ReferralCategoryEnumFactory());
661        this.category.setValue(value);
662      return this;
663    }
664
665    /**
666     * @return {@link #type} (An indication of the type of referral (or where applicable the type of transfer of care) request.)
667     */
668    public CodeableConcept getType() { 
669      if (this.type == null)
670        if (Configuration.errorOnAutoCreate())
671          throw new Error("Attempt to auto-create ReferralRequest.type");
672        else if (Configuration.doAutoCreate())
673          this.type = new CodeableConcept(); // cc
674      return this.type;
675    }
676
677    public boolean hasType() { 
678      return this.type != null && !this.type.isEmpty();
679    }
680
681    /**
682     * @param value {@link #type} (An indication of the type of referral (or where applicable the type of transfer of care) request.)
683     */
684    public ReferralRequest setType(CodeableConcept value) { 
685      this.type = value;
686      return this;
687    }
688
689    /**
690     * @return {@link #priority} (An indication of the urgency of referral (or where applicable the type of transfer of care) request.)
691     */
692    public CodeableConcept getPriority() { 
693      if (this.priority == null)
694        if (Configuration.errorOnAutoCreate())
695          throw new Error("Attempt to auto-create ReferralRequest.priority");
696        else if (Configuration.doAutoCreate())
697          this.priority = new CodeableConcept(); // cc
698      return this.priority;
699    }
700
701    public boolean hasPriority() { 
702      return this.priority != null && !this.priority.isEmpty();
703    }
704
705    /**
706     * @param value {@link #priority} (An indication of the urgency of referral (or where applicable the type of transfer of care) request.)
707     */
708    public ReferralRequest setPriority(CodeableConcept value) { 
709      this.priority = value;
710      return this;
711    }
712
713    /**
714     * @return {@link #patient} (The patient who is the subject of a referral or transfer of care request.)
715     */
716    public Reference getPatient() { 
717      if (this.patient == null)
718        if (Configuration.errorOnAutoCreate())
719          throw new Error("Attempt to auto-create ReferralRequest.patient");
720        else if (Configuration.doAutoCreate())
721          this.patient = new Reference(); // cc
722      return this.patient;
723    }
724
725    public boolean hasPatient() { 
726      return this.patient != null && !this.patient.isEmpty();
727    }
728
729    /**
730     * @param value {@link #patient} (The patient who is the subject of a referral or transfer of care request.)
731     */
732    public ReferralRequest setPatient(Reference value) { 
733      this.patient = value;
734      return this;
735    }
736
737    /**
738     * @return {@link #patient} 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 subject of a referral or transfer of care request.)
739     */
740    public Patient getPatientTarget() { 
741      if (this.patientTarget == null)
742        if (Configuration.errorOnAutoCreate())
743          throw new Error("Attempt to auto-create ReferralRequest.patient");
744        else if (Configuration.doAutoCreate())
745          this.patientTarget = new Patient(); // aa
746      return this.patientTarget;
747    }
748
749    /**
750     * @param value {@link #patient} 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 subject of a referral or transfer of care request.)
751     */
752    public ReferralRequest setPatientTarget(Patient value) { 
753      this.patientTarget = value;
754      return this;
755    }
756
757    /**
758     * @return {@link #context} (The encounter at which the request for referral or transfer of care is initiated.)
759     */
760    public Reference getContext() { 
761      if (this.context == null)
762        if (Configuration.errorOnAutoCreate())
763          throw new Error("Attempt to auto-create ReferralRequest.context");
764        else if (Configuration.doAutoCreate())
765          this.context = new Reference(); // cc
766      return this.context;
767    }
768
769    public boolean hasContext() { 
770      return this.context != null && !this.context.isEmpty();
771    }
772
773    /**
774     * @param value {@link #context} (The encounter at which the request for referral or transfer of care is initiated.)
775     */
776    public ReferralRequest setContext(Reference value) { 
777      this.context = value;
778      return this;
779    }
780
781    /**
782     * @return {@link #context} 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 at which the request for referral or transfer of care is initiated.)
783     */
784    public Resource getContextTarget() { 
785      return this.contextTarget;
786    }
787
788    /**
789     * @param value {@link #context} 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 at which the request for referral or transfer of care is initiated.)
790     */
791    public ReferralRequest setContextTarget(Resource value) { 
792      this.contextTarget = value;
793      return this;
794    }
795
796    /**
797     * @return {@link #fulfillmentTime} (The period of time within which the services identified in the referral/transfer of care is specified or required to occur.)
798     */
799    public Period getFulfillmentTime() { 
800      if (this.fulfillmentTime == null)
801        if (Configuration.errorOnAutoCreate())
802          throw new Error("Attempt to auto-create ReferralRequest.fulfillmentTime");
803        else if (Configuration.doAutoCreate())
804          this.fulfillmentTime = new Period(); // cc
805      return this.fulfillmentTime;
806    }
807
808    public boolean hasFulfillmentTime() { 
809      return this.fulfillmentTime != null && !this.fulfillmentTime.isEmpty();
810    }
811
812    /**
813     * @param value {@link #fulfillmentTime} (The period of time within which the services identified in the referral/transfer of care is specified or required to occur.)
814     */
815    public ReferralRequest setFulfillmentTime(Period value) { 
816      this.fulfillmentTime = value;
817      return this;
818    }
819
820    /**
821     * @return {@link #authored} (Date/DateTime of creation for draft requests and date of activation for active requests.). This is the underlying object with id, value and extensions. The accessor "getAuthored" gives direct access to the value
822     */
823    public DateTimeType getAuthoredElement() { 
824      if (this.authored == null)
825        if (Configuration.errorOnAutoCreate())
826          throw new Error("Attempt to auto-create ReferralRequest.authored");
827        else if (Configuration.doAutoCreate())
828          this.authored = new DateTimeType(); // bb
829      return this.authored;
830    }
831
832    public boolean hasAuthoredElement() { 
833      return this.authored != null && !this.authored.isEmpty();
834    }
835
836    public boolean hasAuthored() { 
837      return this.authored != null && !this.authored.isEmpty();
838    }
839
840    /**
841     * @param value {@link #authored} (Date/DateTime of creation for draft requests and date of activation for active requests.). This is the underlying object with id, value and extensions. The accessor "getAuthored" gives direct access to the value
842     */
843    public ReferralRequest setAuthoredElement(DateTimeType value) { 
844      this.authored = value;
845      return this;
846    }
847
848    /**
849     * @return Date/DateTime of creation for draft requests and date of activation for active requests.
850     */
851    public Date getAuthored() { 
852      return this.authored == null ? null : this.authored.getValue();
853    }
854
855    /**
856     * @param value Date/DateTime of creation for draft requests and date of activation for active requests.
857     */
858    public ReferralRequest setAuthored(Date value) { 
859      if (value == null)
860        this.authored = null;
861      else {
862        if (this.authored == null)
863          this.authored = new DateTimeType();
864        this.authored.setValue(value);
865      }
866      return this;
867    }
868
869    /**
870     * @return {@link #requester} (The healthcare provider or provider organization who/which initiated the referral/transfer of care request. Can also be  Patient (a self referral).)
871     */
872    public Reference getRequester() { 
873      if (this.requester == null)
874        if (Configuration.errorOnAutoCreate())
875          throw new Error("Attempt to auto-create ReferralRequest.requester");
876        else if (Configuration.doAutoCreate())
877          this.requester = new Reference(); // cc
878      return this.requester;
879    }
880
881    public boolean hasRequester() { 
882      return this.requester != null && !this.requester.isEmpty();
883    }
884
885    /**
886     * @param value {@link #requester} (The healthcare provider or provider organization who/which initiated the referral/transfer of care request. Can also be  Patient (a self referral).)
887     */
888    public ReferralRequest setRequester(Reference value) { 
889      this.requester = value;
890      return this;
891    }
892
893    /**
894     * @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 healthcare provider or provider organization who/which initiated the referral/transfer of care request. Can also be  Patient (a self referral).)
895     */
896    public Resource getRequesterTarget() { 
897      return this.requesterTarget;
898    }
899
900    /**
901     * @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 healthcare provider or provider organization who/which initiated the referral/transfer of care request. Can also be  Patient (a self referral).)
902     */
903    public ReferralRequest setRequesterTarget(Resource value) { 
904      this.requesterTarget = value;
905      return this;
906    }
907
908    /**
909     * @return {@link #specialty} (Indication of the clinical domain or discipline to which the referral or transfer of care request is sent.  For example: Cardiology Gastroenterology Diabetology.)
910     */
911    public CodeableConcept getSpecialty() { 
912      if (this.specialty == null)
913        if (Configuration.errorOnAutoCreate())
914          throw new Error("Attempt to auto-create ReferralRequest.specialty");
915        else if (Configuration.doAutoCreate())
916          this.specialty = new CodeableConcept(); // cc
917      return this.specialty;
918    }
919
920    public boolean hasSpecialty() { 
921      return this.specialty != null && !this.specialty.isEmpty();
922    }
923
924    /**
925     * @param value {@link #specialty} (Indication of the clinical domain or discipline to which the referral or transfer of care request is sent.  For example: Cardiology Gastroenterology Diabetology.)
926     */
927    public ReferralRequest setSpecialty(CodeableConcept value) { 
928      this.specialty = value;
929      return this;
930    }
931
932    /**
933     * @return {@link #recipient} (The healthcare provider(s) or provider organization(s) who/which is to receive the referral/transfer of care request.)
934     */
935    public List<Reference> getRecipient() { 
936      if (this.recipient == null)
937        this.recipient = new ArrayList<Reference>();
938      return this.recipient;
939    }
940
941    public boolean hasRecipient() { 
942      if (this.recipient == null)
943        return false;
944      for (Reference item : this.recipient)
945        if (!item.isEmpty())
946          return true;
947      return false;
948    }
949
950    /**
951     * @return {@link #recipient} (The healthcare provider(s) or provider organization(s) who/which is to receive the referral/transfer of care request.)
952     */
953    // syntactic sugar
954    public Reference addRecipient() { //3
955      Reference t = new Reference();
956      if (this.recipient == null)
957        this.recipient = new ArrayList<Reference>();
958      this.recipient.add(t);
959      return t;
960    }
961
962    // syntactic sugar
963    public ReferralRequest addRecipient(Reference t) { //3
964      if (t == null)
965        return this;
966      if (this.recipient == null)
967        this.recipient = new ArrayList<Reference>();
968      this.recipient.add(t);
969      return this;
970    }
971
972    /**
973     * @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 healthcare provider(s) or provider organization(s) who/which is to receive the referral/transfer of care request.)
974     */
975    public List<Resource> getRecipientTarget() { 
976      if (this.recipientTarget == null)
977        this.recipientTarget = new ArrayList<Resource>();
978      return this.recipientTarget;
979    }
980
981    /**
982     * @return {@link #reason} (Description of clinical condition indicating why referral/transfer of care is requested.  For example:  Pathological Anomalies, Disabled (physical or mental),  Behavioral Management.)
983     */
984    public CodeableConcept getReason() { 
985      if (this.reason == null)
986        if (Configuration.errorOnAutoCreate())
987          throw new Error("Attempt to auto-create ReferralRequest.reason");
988        else if (Configuration.doAutoCreate())
989          this.reason = new CodeableConcept(); // cc
990      return this.reason;
991    }
992
993    public boolean hasReason() { 
994      return this.reason != null && !this.reason.isEmpty();
995    }
996
997    /**
998     * @param value {@link #reason} (Description of clinical condition indicating why referral/transfer of care is requested.  For example:  Pathological Anomalies, Disabled (physical or mental),  Behavioral Management.)
999     */
1000    public ReferralRequest setReason(CodeableConcept value) { 
1001      this.reason = value;
1002      return this;
1003    }
1004
1005    /**
1006     * @return {@link #description} (The reason element gives a short description of why the referral is being made, the description expands on this to support a more complete clinical summary.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1007     */
1008    public StringType getDescriptionElement() { 
1009      if (this.description == null)
1010        if (Configuration.errorOnAutoCreate())
1011          throw new Error("Attempt to auto-create ReferralRequest.description");
1012        else if (Configuration.doAutoCreate())
1013          this.description = new StringType(); // bb
1014      return this.description;
1015    }
1016
1017    public boolean hasDescriptionElement() { 
1018      return this.description != null && !this.description.isEmpty();
1019    }
1020
1021    public boolean hasDescription() { 
1022      return this.description != null && !this.description.isEmpty();
1023    }
1024
1025    /**
1026     * @param value {@link #description} (The reason element gives a short description of why the referral is being made, the description expands on this to support a more complete clinical summary.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1027     */
1028    public ReferralRequest setDescriptionElement(StringType value) { 
1029      this.description = value;
1030      return this;
1031    }
1032
1033    /**
1034     * @return The reason element gives a short description of why the referral is being made, the description expands on this to support a more complete clinical summary.
1035     */
1036    public String getDescription() { 
1037      return this.description == null ? null : this.description.getValue();
1038    }
1039
1040    /**
1041     * @param value The reason element gives a short description of why the referral is being made, the description expands on this to support a more complete clinical summary.
1042     */
1043    public ReferralRequest setDescription(String value) { 
1044      if (Utilities.noString(value))
1045        this.description = null;
1046      else {
1047        if (this.description == null)
1048          this.description = new StringType();
1049        this.description.setValue(value);
1050      }
1051      return this;
1052    }
1053
1054    /**
1055     * @return {@link #serviceRequested} (The service(s) that is/are requested to be provided to the patient.  For example: cardiac pacemaker insertion.)
1056     */
1057    public List<CodeableConcept> getServiceRequested() { 
1058      if (this.serviceRequested == null)
1059        this.serviceRequested = new ArrayList<CodeableConcept>();
1060      return this.serviceRequested;
1061    }
1062
1063    public boolean hasServiceRequested() { 
1064      if (this.serviceRequested == null)
1065        return false;
1066      for (CodeableConcept item : this.serviceRequested)
1067        if (!item.isEmpty())
1068          return true;
1069      return false;
1070    }
1071
1072    /**
1073     * @return {@link #serviceRequested} (The service(s) that is/are requested to be provided to the patient.  For example: cardiac pacemaker insertion.)
1074     */
1075    // syntactic sugar
1076    public CodeableConcept addServiceRequested() { //3
1077      CodeableConcept t = new CodeableConcept();
1078      if (this.serviceRequested == null)
1079        this.serviceRequested = new ArrayList<CodeableConcept>();
1080      this.serviceRequested.add(t);
1081      return t;
1082    }
1083
1084    // syntactic sugar
1085    public ReferralRequest addServiceRequested(CodeableConcept t) { //3
1086      if (t == null)
1087        return this;
1088      if (this.serviceRequested == null)
1089        this.serviceRequested = new ArrayList<CodeableConcept>();
1090      this.serviceRequested.add(t);
1091      return this;
1092    }
1093
1094    /**
1095     * @return {@link #supportingInformation} (Any additional (administrative, financial or clinical) information required to support request for referral or transfer of care.  For example: Presenting problems/chief complaints Medical History Family History Alerts Allergy/Intolerance and Adverse Reactions Medications Observations/Assessments (may include cognitive and fundtional assessments) Diagnostic Reports Care Plan.)
1096     */
1097    public List<Reference> getSupportingInformation() { 
1098      if (this.supportingInformation == null)
1099        this.supportingInformation = new ArrayList<Reference>();
1100      return this.supportingInformation;
1101    }
1102
1103    public boolean hasSupportingInformation() { 
1104      if (this.supportingInformation == null)
1105        return false;
1106      for (Reference item : this.supportingInformation)
1107        if (!item.isEmpty())
1108          return true;
1109      return false;
1110    }
1111
1112    /**
1113     * @return {@link #supportingInformation} (Any additional (administrative, financial or clinical) information required to support request for referral or transfer of care.  For example: Presenting problems/chief complaints Medical History Family History Alerts Allergy/Intolerance and Adverse Reactions Medications Observations/Assessments (may include cognitive and fundtional assessments) Diagnostic Reports Care Plan.)
1114     */
1115    // syntactic sugar
1116    public Reference addSupportingInformation() { //3
1117      Reference t = new Reference();
1118      if (this.supportingInformation == null)
1119        this.supportingInformation = new ArrayList<Reference>();
1120      this.supportingInformation.add(t);
1121      return t;
1122    }
1123
1124    // syntactic sugar
1125    public ReferralRequest addSupportingInformation(Reference t) { //3
1126      if (t == null)
1127        return this;
1128      if (this.supportingInformation == null)
1129        this.supportingInformation = new ArrayList<Reference>();
1130      this.supportingInformation.add(t);
1131      return this;
1132    }
1133
1134    /**
1135     * @return {@link #supportingInformation} (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. Any additional (administrative, financial or clinical) information required to support request for referral or transfer of care.  For example: Presenting problems/chief complaints Medical History Family History Alerts Allergy/Intolerance and Adverse Reactions Medications Observations/Assessments (may include cognitive and fundtional assessments) Diagnostic Reports Care Plan.)
1136     */
1137    public List<Resource> getSupportingInformationTarget() { 
1138      if (this.supportingInformationTarget == null)
1139        this.supportingInformationTarget = new ArrayList<Resource>();
1140      return this.supportingInformationTarget;
1141    }
1142
1143      protected void listChildren(List<Property> childrenList) {
1144        super.listChildren(childrenList);
1145        childrenList.add(new Property("identifier", "Identifier", "Business identifier that uniquely identifies the referral/care transfer request instance.", 0, java.lang.Integer.MAX_VALUE, identifier));
1146        childrenList.add(new Property("basedOn", "Reference(ReferralRequest|CarePlan|DiagnosticOrder|ProcedureRequest)", "Indicates any plans, proposals or orders that this request is intended to satisfy - in whole or in part.", 0, java.lang.Integer.MAX_VALUE, basedOn));
1147        childrenList.add(new Property("parent", "Identifier", "The business identifier of the logical \"grouping\" request/order that this referral is a part of.", 0, java.lang.Integer.MAX_VALUE, parent));
1148        childrenList.add(new Property("status", "code", "The status of the authorization/intention reflected by the referral request record.", 0, java.lang.Integer.MAX_VALUE, status));
1149        childrenList.add(new Property("category", "code", "Distinguishes the \"level\" of authorization/demand implicit in this request.", 0, java.lang.Integer.MAX_VALUE, category));
1150        childrenList.add(new Property("type", "CodeableConcept", "An indication of the type of referral (or where applicable the type of transfer of care) request.", 0, java.lang.Integer.MAX_VALUE, type));
1151        childrenList.add(new Property("priority", "CodeableConcept", "An indication of the urgency of referral (or where applicable the type of transfer of care) request.", 0, java.lang.Integer.MAX_VALUE, priority));
1152        childrenList.add(new Property("patient", "Reference(Patient)", "The patient who is the subject of a referral or transfer of care request.", 0, java.lang.Integer.MAX_VALUE, patient));
1153        childrenList.add(new Property("context", "Reference(Encounter|EpisodeOfCare)", "The encounter at which the request for referral or transfer of care is initiated.", 0, java.lang.Integer.MAX_VALUE, context));
1154        childrenList.add(new Property("fulfillmentTime", "Period", "The period of time within which the services identified in the referral/transfer of care is specified or required to occur.", 0, java.lang.Integer.MAX_VALUE, fulfillmentTime));
1155        childrenList.add(new Property("authored", "dateTime", "Date/DateTime of creation for draft requests and date of activation for active requests.", 0, java.lang.Integer.MAX_VALUE, authored));
1156        childrenList.add(new Property("requester", "Reference(Practitioner|Organization|Patient)", "The healthcare provider or provider organization who/which initiated the referral/transfer of care request. Can also be  Patient (a self referral).", 0, java.lang.Integer.MAX_VALUE, requester));
1157        childrenList.add(new Property("specialty", "CodeableConcept", "Indication of the clinical domain or discipline to which the referral or transfer of care request is sent.  For example: Cardiology Gastroenterology Diabetology.", 0, java.lang.Integer.MAX_VALUE, specialty));
1158        childrenList.add(new Property("recipient", "Reference(Practitioner|Organization)", "The healthcare provider(s) or provider organization(s) who/which is to receive the referral/transfer of care request.", 0, java.lang.Integer.MAX_VALUE, recipient));
1159        childrenList.add(new Property("reason", "CodeableConcept", "Description of clinical condition indicating why referral/transfer of care is requested.  For example:  Pathological Anomalies, Disabled (physical or mental),  Behavioral Management.", 0, java.lang.Integer.MAX_VALUE, reason));
1160        childrenList.add(new Property("description", "string", "The reason element gives a short description of why the referral is being made, the description expands on this to support a more complete clinical summary.", 0, java.lang.Integer.MAX_VALUE, description));
1161        childrenList.add(new Property("serviceRequested", "CodeableConcept", "The service(s) that is/are requested to be provided to the patient.  For example: cardiac pacemaker insertion.", 0, java.lang.Integer.MAX_VALUE, serviceRequested));
1162        childrenList.add(new Property("supportingInformation", "Reference(Any)", "Any additional (administrative, financial or clinical) information required to support request for referral or transfer of care.  For example: Presenting problems/chief complaints Medical History Family History Alerts Allergy/Intolerance and Adverse Reactions Medications Observations/Assessments (may include cognitive and fundtional assessments) Diagnostic Reports Care Plan.", 0, java.lang.Integer.MAX_VALUE, supportingInformation));
1163      }
1164
1165      @Override
1166      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1167        switch (hash) {
1168        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1169        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
1170        case -995424086: /*parent*/ return this.parent == null ? new Base[0] : new Base[] {this.parent}; // Identifier
1171        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<ReferralStatus>
1172        case 50511102: /*category*/ return this.category == null ? new Base[0] : new Base[] {this.category}; // Enumeration<ReferralCategory>
1173        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
1174        case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // CodeableConcept
1175        case -791418107: /*patient*/ return this.patient == null ? new Base[0] : new Base[] {this.patient}; // Reference
1176        case 951530927: /*context*/ return this.context == null ? new Base[0] : new Base[] {this.context}; // Reference
1177        case 1098185163: /*fulfillmentTime*/ return this.fulfillmentTime == null ? new Base[0] : new Base[] {this.fulfillmentTime}; // Period
1178        case 1433073514: /*authored*/ return this.authored == null ? new Base[0] : new Base[] {this.authored}; // DateTimeType
1179        case 693933948: /*requester*/ return this.requester == null ? new Base[0] : new Base[] {this.requester}; // Reference
1180        case -1694759682: /*specialty*/ return this.specialty == null ? new Base[0] : new Base[] {this.specialty}; // CodeableConcept
1181        case 820081177: /*recipient*/ return this.recipient == null ? new Base[0] : this.recipient.toArray(new Base[this.recipient.size()]); // Reference
1182        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : new Base[] {this.reason}; // CodeableConcept
1183        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1184        case 190229561: /*serviceRequested*/ return this.serviceRequested == null ? new Base[0] : this.serviceRequested.toArray(new Base[this.serviceRequested.size()]); // CodeableConcept
1185        case -1248768647: /*supportingInformation*/ return this.supportingInformation == null ? new Base[0] : this.supportingInformation.toArray(new Base[this.supportingInformation.size()]); // Reference
1186        default: return super.getProperty(hash, name, checkValid);
1187        }
1188
1189      }
1190
1191      @Override
1192      public void setProperty(int hash, String name, Base value) throws FHIRException {
1193        switch (hash) {
1194        case -1618432855: // identifier
1195          this.getIdentifier().add(castToIdentifier(value)); // Identifier
1196          break;
1197        case -332612366: // basedOn
1198          this.getBasedOn().add(castToReference(value)); // Reference
1199          break;
1200        case -995424086: // parent
1201          this.parent = castToIdentifier(value); // Identifier
1202          break;
1203        case -892481550: // status
1204          this.status = new ReferralStatusEnumFactory().fromType(value); // Enumeration<ReferralStatus>
1205          break;
1206        case 50511102: // category
1207          this.category = new ReferralCategoryEnumFactory().fromType(value); // Enumeration<ReferralCategory>
1208          break;
1209        case 3575610: // type
1210          this.type = castToCodeableConcept(value); // CodeableConcept
1211          break;
1212        case -1165461084: // priority
1213          this.priority = castToCodeableConcept(value); // CodeableConcept
1214          break;
1215        case -791418107: // patient
1216          this.patient = castToReference(value); // Reference
1217          break;
1218        case 951530927: // context
1219          this.context = castToReference(value); // Reference
1220          break;
1221        case 1098185163: // fulfillmentTime
1222          this.fulfillmentTime = castToPeriod(value); // Period
1223          break;
1224        case 1433073514: // authored
1225          this.authored = castToDateTime(value); // DateTimeType
1226          break;
1227        case 693933948: // requester
1228          this.requester = castToReference(value); // Reference
1229          break;
1230        case -1694759682: // specialty
1231          this.specialty = castToCodeableConcept(value); // CodeableConcept
1232          break;
1233        case 820081177: // recipient
1234          this.getRecipient().add(castToReference(value)); // Reference
1235          break;
1236        case -934964668: // reason
1237          this.reason = castToCodeableConcept(value); // CodeableConcept
1238          break;
1239        case -1724546052: // description
1240          this.description = castToString(value); // StringType
1241          break;
1242        case 190229561: // serviceRequested
1243          this.getServiceRequested().add(castToCodeableConcept(value)); // CodeableConcept
1244          break;
1245        case -1248768647: // supportingInformation
1246          this.getSupportingInformation().add(castToReference(value)); // Reference
1247          break;
1248        default: super.setProperty(hash, name, value);
1249        }
1250
1251      }
1252
1253      @Override
1254      public void setProperty(String name, Base value) throws FHIRException {
1255        if (name.equals("identifier"))
1256          this.getIdentifier().add(castToIdentifier(value));
1257        else if (name.equals("basedOn"))
1258          this.getBasedOn().add(castToReference(value));
1259        else if (name.equals("parent"))
1260          this.parent = castToIdentifier(value); // Identifier
1261        else if (name.equals("status"))
1262          this.status = new ReferralStatusEnumFactory().fromType(value); // Enumeration<ReferralStatus>
1263        else if (name.equals("category"))
1264          this.category = new ReferralCategoryEnumFactory().fromType(value); // Enumeration<ReferralCategory>
1265        else if (name.equals("type"))
1266          this.type = castToCodeableConcept(value); // CodeableConcept
1267        else if (name.equals("priority"))
1268          this.priority = castToCodeableConcept(value); // CodeableConcept
1269        else if (name.equals("patient"))
1270          this.patient = castToReference(value); // Reference
1271        else if (name.equals("context"))
1272          this.context = castToReference(value); // Reference
1273        else if (name.equals("fulfillmentTime"))
1274          this.fulfillmentTime = castToPeriod(value); // Period
1275        else if (name.equals("authored"))
1276          this.authored = castToDateTime(value); // DateTimeType
1277        else if (name.equals("requester"))
1278          this.requester = castToReference(value); // Reference
1279        else if (name.equals("specialty"))
1280          this.specialty = castToCodeableConcept(value); // CodeableConcept
1281        else if (name.equals("recipient"))
1282          this.getRecipient().add(castToReference(value));
1283        else if (name.equals("reason"))
1284          this.reason = castToCodeableConcept(value); // CodeableConcept
1285        else if (name.equals("description"))
1286          this.description = castToString(value); // StringType
1287        else if (name.equals("serviceRequested"))
1288          this.getServiceRequested().add(castToCodeableConcept(value));
1289        else if (name.equals("supportingInformation"))
1290          this.getSupportingInformation().add(castToReference(value));
1291        else
1292          super.setProperty(name, value);
1293      }
1294
1295      @Override
1296      public Base makeProperty(int hash, String name) throws FHIRException {
1297        switch (hash) {
1298        case -1618432855:  return addIdentifier(); // Identifier
1299        case -332612366:  return addBasedOn(); // Reference
1300        case -995424086:  return getParent(); // Identifier
1301        case -892481550: throw new FHIRException("Cannot make property status as it is not a complex type"); // Enumeration<ReferralStatus>
1302        case 50511102: throw new FHIRException("Cannot make property category as it is not a complex type"); // Enumeration<ReferralCategory>
1303        case 3575610:  return getType(); // CodeableConcept
1304        case -1165461084:  return getPriority(); // CodeableConcept
1305        case -791418107:  return getPatient(); // Reference
1306        case 951530927:  return getContext(); // Reference
1307        case 1098185163:  return getFulfillmentTime(); // Period
1308        case 1433073514: throw new FHIRException("Cannot make property authored as it is not a complex type"); // DateTimeType
1309        case 693933948:  return getRequester(); // Reference
1310        case -1694759682:  return getSpecialty(); // CodeableConcept
1311        case 820081177:  return addRecipient(); // Reference
1312        case -934964668:  return getReason(); // CodeableConcept
1313        case -1724546052: throw new FHIRException("Cannot make property description as it is not a complex type"); // StringType
1314        case 190229561:  return addServiceRequested(); // CodeableConcept
1315        case -1248768647:  return addSupportingInformation(); // Reference
1316        default: return super.makeProperty(hash, name);
1317        }
1318
1319      }
1320
1321      @Override
1322      public Base addChild(String name) throws FHIRException {
1323        if (name.equals("identifier")) {
1324          return addIdentifier();
1325        }
1326        else if (name.equals("basedOn")) {
1327          return addBasedOn();
1328        }
1329        else if (name.equals("parent")) {
1330          this.parent = new Identifier();
1331          return this.parent;
1332        }
1333        else if (name.equals("status")) {
1334          throw new FHIRException("Cannot call addChild on a primitive type ReferralRequest.status");
1335        }
1336        else if (name.equals("category")) {
1337          throw new FHIRException("Cannot call addChild on a primitive type ReferralRequest.category");
1338        }
1339        else if (name.equals("type")) {
1340          this.type = new CodeableConcept();
1341          return this.type;
1342        }
1343        else if (name.equals("priority")) {
1344          this.priority = new CodeableConcept();
1345          return this.priority;
1346        }
1347        else if (name.equals("patient")) {
1348          this.patient = new Reference();
1349          return this.patient;
1350        }
1351        else if (name.equals("context")) {
1352          this.context = new Reference();
1353          return this.context;
1354        }
1355        else if (name.equals("fulfillmentTime")) {
1356          this.fulfillmentTime = new Period();
1357          return this.fulfillmentTime;
1358        }
1359        else if (name.equals("authored")) {
1360          throw new FHIRException("Cannot call addChild on a primitive type ReferralRequest.authored");
1361        }
1362        else if (name.equals("requester")) {
1363          this.requester = new Reference();
1364          return this.requester;
1365        }
1366        else if (name.equals("specialty")) {
1367          this.specialty = new CodeableConcept();
1368          return this.specialty;
1369        }
1370        else if (name.equals("recipient")) {
1371          return addRecipient();
1372        }
1373        else if (name.equals("reason")) {
1374          this.reason = new CodeableConcept();
1375          return this.reason;
1376        }
1377        else if (name.equals("description")) {
1378          throw new FHIRException("Cannot call addChild on a primitive type ReferralRequest.description");
1379        }
1380        else if (name.equals("serviceRequested")) {
1381          return addServiceRequested();
1382        }
1383        else if (name.equals("supportingInformation")) {
1384          return addSupportingInformation();
1385        }
1386        else
1387          return super.addChild(name);
1388      }
1389
1390  public String fhirType() {
1391    return "ReferralRequest";
1392
1393  }
1394
1395      public ReferralRequest copy() {
1396        ReferralRequest dst = new ReferralRequest();
1397        copyValues(dst);
1398        if (identifier != null) {
1399          dst.identifier = new ArrayList<Identifier>();
1400          for (Identifier i : identifier)
1401            dst.identifier.add(i.copy());
1402        };
1403        if (basedOn != null) {
1404          dst.basedOn = new ArrayList<Reference>();
1405          for (Reference i : basedOn)
1406            dst.basedOn.add(i.copy());
1407        };
1408        dst.parent = parent == null ? null : parent.copy();
1409        dst.status = status == null ? null : status.copy();
1410        dst.category = category == null ? null : category.copy();
1411        dst.type = type == null ? null : type.copy();
1412        dst.priority = priority == null ? null : priority.copy();
1413        dst.patient = patient == null ? null : patient.copy();
1414        dst.context = context == null ? null : context.copy();
1415        dst.fulfillmentTime = fulfillmentTime == null ? null : fulfillmentTime.copy();
1416        dst.authored = authored == null ? null : authored.copy();
1417        dst.requester = requester == null ? null : requester.copy();
1418        dst.specialty = specialty == null ? null : specialty.copy();
1419        if (recipient != null) {
1420          dst.recipient = new ArrayList<Reference>();
1421          for (Reference i : recipient)
1422            dst.recipient.add(i.copy());
1423        };
1424        dst.reason = reason == null ? null : reason.copy();
1425        dst.description = description == null ? null : description.copy();
1426        if (serviceRequested != null) {
1427          dst.serviceRequested = new ArrayList<CodeableConcept>();
1428          for (CodeableConcept i : serviceRequested)
1429            dst.serviceRequested.add(i.copy());
1430        };
1431        if (supportingInformation != null) {
1432          dst.supportingInformation = new ArrayList<Reference>();
1433          for (Reference i : supportingInformation)
1434            dst.supportingInformation.add(i.copy());
1435        };
1436        return dst;
1437      }
1438
1439      protected ReferralRequest typedCopy() {
1440        return copy();
1441      }
1442
1443      @Override
1444      public boolean equalsDeep(Base other) {
1445        if (!super.equalsDeep(other))
1446          return false;
1447        if (!(other instanceof ReferralRequest))
1448          return false;
1449        ReferralRequest o = (ReferralRequest) other;
1450        return compareDeep(identifier, o.identifier, true) && compareDeep(basedOn, o.basedOn, true) && compareDeep(parent, o.parent, true)
1451           && compareDeep(status, o.status, true) && compareDeep(category, o.category, true) && compareDeep(type, o.type, true)
1452           && compareDeep(priority, o.priority, true) && compareDeep(patient, o.patient, true) && compareDeep(context, o.context, true)
1453           && compareDeep(fulfillmentTime, o.fulfillmentTime, true) && compareDeep(authored, o.authored, true)
1454           && compareDeep(requester, o.requester, true) && compareDeep(specialty, o.specialty, true) && compareDeep(recipient, o.recipient, true)
1455           && compareDeep(reason, o.reason, true) && compareDeep(description, o.description, true) && compareDeep(serviceRequested, o.serviceRequested, true)
1456           && compareDeep(supportingInformation, o.supportingInformation, true);
1457      }
1458
1459      @Override
1460      public boolean equalsShallow(Base other) {
1461        if (!super.equalsShallow(other))
1462          return false;
1463        if (!(other instanceof ReferralRequest))
1464          return false;
1465        ReferralRequest o = (ReferralRequest) other;
1466        return compareValues(status, o.status, true) && compareValues(category, o.category, true) && compareValues(authored, o.authored, true)
1467           && compareValues(description, o.description, true);
1468      }
1469
1470      public boolean isEmpty() {
1471        return super.isEmpty() && (identifier == null || identifier.isEmpty()) && (basedOn == null || basedOn.isEmpty())
1472           && (parent == null || parent.isEmpty()) && (status == null || status.isEmpty()) && (category == null || category.isEmpty())
1473           && (type == null || type.isEmpty()) && (priority == null || priority.isEmpty()) && (patient == null || patient.isEmpty())
1474           && (context == null || context.isEmpty()) && (fulfillmentTime == null || fulfillmentTime.isEmpty())
1475           && (authored == null || authored.isEmpty()) && (requester == null || requester.isEmpty())
1476           && (specialty == null || specialty.isEmpty()) && (recipient == null || recipient.isEmpty())
1477           && (reason == null || reason.isEmpty()) && (description == null || description.isEmpty())
1478           && (serviceRequested == null || serviceRequested.isEmpty()) && (supportingInformation == null || supportingInformation.isEmpty())
1479          ;
1480      }
1481
1482  @Override
1483  public ResourceType getResourceType() {
1484    return ResourceType.ReferralRequest;
1485   }
1486
1487 /**
1488   * Search parameter: <b>category</b>
1489   * <p>
1490   * Description: <b>Proposal, plan or request</b><br>
1491   * Type: <b>token</b><br>
1492   * Path: <b>ReferralRequest.category</b><br>
1493   * </p>
1494   */
1495  @SearchParamDefinition(name="category", path="ReferralRequest.category", description="Proposal, plan or request", type="token" )
1496  public static final String SP_CATEGORY = "category";
1497 /**
1498   * <b>Fluent Client</b> search parameter constant for <b>category</b>
1499   * <p>
1500   * Description: <b>Proposal, plan or request</b><br>
1501   * Type: <b>token</b><br>
1502   * Path: <b>ReferralRequest.category</b><br>
1503   * </p>
1504   */
1505  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
1506
1507 /**
1508   * Search parameter: <b>requester</b>
1509   * <p>
1510   * Description: <b>Requester of referral / transfer of care</b><br>
1511   * Type: <b>reference</b><br>
1512   * Path: <b>ReferralRequest.requester</b><br>
1513   * </p>
1514   */
1515  @SearchParamDefinition(name="requester", path="ReferralRequest.requester", description="Requester of referral / transfer of care", type="reference" )
1516  public static final String SP_REQUESTER = "requester";
1517 /**
1518   * <b>Fluent Client</b> search parameter constant for <b>requester</b>
1519   * <p>
1520   * Description: <b>Requester of referral / transfer of care</b><br>
1521   * Type: <b>reference</b><br>
1522   * Path: <b>ReferralRequest.requester</b><br>
1523   * </p>
1524   */
1525  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REQUESTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REQUESTER);
1526
1527/**
1528   * Constant for fluent queries to be used to add include statements. Specifies
1529   * the path value of "<b>ReferralRequest:requester</b>".
1530   */
1531  public static final ca.uhn.fhir.model.api.Include INCLUDE_REQUESTER = new ca.uhn.fhir.model.api.Include("ReferralRequest:requester").toLocked();
1532
1533 /**
1534   * Search parameter: <b>patient</b>
1535   * <p>
1536   * Description: <b>Who the referral is about</b><br>
1537   * Type: <b>reference</b><br>
1538   * Path: <b>ReferralRequest.patient</b><br>
1539   * </p>
1540   */
1541  @SearchParamDefinition(name="patient", path="ReferralRequest.patient", description="Who the referral is about", type="reference" )
1542  public static final String SP_PATIENT = "patient";
1543 /**
1544   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1545   * <p>
1546   * Description: <b>Who the referral is about</b><br>
1547   * Type: <b>reference</b><br>
1548   * Path: <b>ReferralRequest.patient</b><br>
1549   * </p>
1550   */
1551  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1552
1553/**
1554   * Constant for fluent queries to be used to add include statements. Specifies
1555   * the path value of "<b>ReferralRequest:patient</b>".
1556   */
1557  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("ReferralRequest:patient").toLocked();
1558
1559 /**
1560   * Search parameter: <b>status</b>
1561   * <p>
1562   * Description: <b>The status of the referral</b><br>
1563   * Type: <b>token</b><br>
1564   * Path: <b>ReferralRequest.status</b><br>
1565   * </p>
1566   */
1567  @SearchParamDefinition(name="status", path="ReferralRequest.status", description="The status of the referral", type="token" )
1568  public static final String SP_STATUS = "status";
1569 /**
1570   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1571   * <p>
1572   * Description: <b>The status of the referral</b><br>
1573   * Type: <b>token</b><br>
1574   * Path: <b>ReferralRequest.status</b><br>
1575   * </p>
1576   */
1577  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1578
1579 /**
1580   * Search parameter: <b>priority</b>
1581   * <p>
1582   * Description: <b>The priority assigned to the referral</b><br>
1583   * Type: <b>token</b><br>
1584   * Path: <b>ReferralRequest.priority</b><br>
1585   * </p>
1586   */
1587  @SearchParamDefinition(name="priority", path="ReferralRequest.priority", description="The priority assigned to the referral", type="token" )
1588  public static final String SP_PRIORITY = "priority";
1589 /**
1590   * <b>Fluent Client</b> search parameter constant for <b>priority</b>
1591   * <p>
1592   * Description: <b>The priority assigned to the referral</b><br>
1593   * Type: <b>token</b><br>
1594   * Path: <b>ReferralRequest.priority</b><br>
1595   * </p>
1596   */
1597  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PRIORITY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PRIORITY);
1598
1599 /**
1600   * Search parameter: <b>basedon</b>
1601   * <p>
1602   * Description: <b>Request being fulfilled</b><br>
1603   * Type: <b>reference</b><br>
1604   * Path: <b>ReferralRequest.basedOn</b><br>
1605   * </p>
1606   */
1607  @SearchParamDefinition(name="basedon", path="ReferralRequest.basedOn", description="Request being fulfilled", type="reference" )
1608  public static final String SP_BASEDON = "basedon";
1609 /**
1610   * <b>Fluent Client</b> search parameter constant for <b>basedon</b>
1611   * <p>
1612   * Description: <b>Request being fulfilled</b><br>
1613   * Type: <b>reference</b><br>
1614   * Path: <b>ReferralRequest.basedOn</b><br>
1615   * </p>
1616   */
1617  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASEDON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASEDON);
1618
1619/**
1620   * Constant for fluent queries to be used to add include statements. Specifies
1621   * the path value of "<b>ReferralRequest:basedon</b>".
1622   */
1623  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASEDON = new ca.uhn.fhir.model.api.Include("ReferralRequest:basedon").toLocked();
1624
1625 /**
1626   * Search parameter: <b>context</b>
1627   * <p>
1628   * Description: <b>Part of encounter or episode of care</b><br>
1629   * Type: <b>reference</b><br>
1630   * Path: <b>ReferralRequest.context</b><br>
1631   * </p>
1632   */
1633  @SearchParamDefinition(name="context", path="ReferralRequest.context", description="Part of encounter or episode of care", type="reference" )
1634  public static final String SP_CONTEXT = "context";
1635 /**
1636   * <b>Fluent Client</b> search parameter constant for <b>context</b>
1637   * <p>
1638   * Description: <b>Part of encounter or episode of care</b><br>
1639   * Type: <b>reference</b><br>
1640   * Path: <b>ReferralRequest.context</b><br>
1641   * </p>
1642   */
1643  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_CONTEXT);
1644
1645/**
1646   * Constant for fluent queries to be used to add include statements. Specifies
1647   * the path value of "<b>ReferralRequest:context</b>".
1648   */
1649  public static final ca.uhn.fhir.model.api.Include INCLUDE_CONTEXT = new ca.uhn.fhir.model.api.Include("ReferralRequest:context").toLocked();
1650
1651 /**
1652   * Search parameter: <b>parent</b>
1653   * <p>
1654   * Description: <b>Part of common request</b><br>
1655   * Type: <b>token</b><br>
1656   * Path: <b>ReferralRequest.parent</b><br>
1657   * </p>
1658   */
1659  @SearchParamDefinition(name="parent", path="ReferralRequest.parent", description="Part of common request", type="token" )
1660  public static final String SP_PARENT = "parent";
1661 /**
1662   * <b>Fluent Client</b> search parameter constant for <b>parent</b>
1663   * <p>
1664   * Description: <b>Part of common request</b><br>
1665   * Type: <b>token</b><br>
1666   * Path: <b>ReferralRequest.parent</b><br>
1667   * </p>
1668   */
1669  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PARENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PARENT);
1670
1671 /**
1672   * Search parameter: <b>type</b>
1673   * <p>
1674   * Description: <b>The type of the referral</b><br>
1675   * Type: <b>token</b><br>
1676   * Path: <b>ReferralRequest.type</b><br>
1677   * </p>
1678   */
1679  @SearchParamDefinition(name="type", path="ReferralRequest.type", description="The type of the referral", type="token" )
1680  public static final String SP_TYPE = "type";
1681 /**
1682   * <b>Fluent Client</b> search parameter constant for <b>type</b>
1683   * <p>
1684   * Description: <b>The type of the referral</b><br>
1685   * Type: <b>token</b><br>
1686   * Path: <b>ReferralRequest.type</b><br>
1687   * </p>
1688   */
1689  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TYPE);
1690
1691 /**
1692   * Search parameter: <b>date</b>
1693   * <p>
1694   * Description: <b>Creation or activation date</b><br>
1695   * Type: <b>date</b><br>
1696   * Path: <b>ReferralRequest.authored</b><br>
1697   * </p>
1698   */
1699  @SearchParamDefinition(name="date", path="ReferralRequest.authored", description="Creation or activation date", type="date" )
1700  public static final String SP_DATE = "date";
1701 /**
1702   * <b>Fluent Client</b> search parameter constant for <b>date</b>
1703   * <p>
1704   * Description: <b>Creation or activation date</b><br>
1705   * Type: <b>date</b><br>
1706   * Path: <b>ReferralRequest.authored</b><br>
1707   * </p>
1708   */
1709  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
1710
1711 /**
1712   * Search parameter: <b>specialty</b>
1713   * <p>
1714   * Description: <b>The specialty that the referral is for</b><br>
1715   * Type: <b>token</b><br>
1716   * Path: <b>ReferralRequest.specialty</b><br>
1717   * </p>
1718   */
1719  @SearchParamDefinition(name="specialty", path="ReferralRequest.specialty", description="The specialty that the referral is for", type="token" )
1720  public static final String SP_SPECIALTY = "specialty";
1721 /**
1722   * <b>Fluent Client</b> search parameter constant for <b>specialty</b>
1723   * <p>
1724   * Description: <b>The specialty that the referral is for</b><br>
1725   * Type: <b>token</b><br>
1726   * Path: <b>ReferralRequest.specialty</b><br>
1727   * </p>
1728   */
1729  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SPECIALTY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SPECIALTY);
1730
1731 /**
1732   * Search parameter: <b>recipient</b>
1733   * <p>
1734   * Description: <b>The person that the referral was sent to</b><br>
1735   * Type: <b>reference</b><br>
1736   * Path: <b>ReferralRequest.recipient</b><br>
1737   * </p>
1738   */
1739  @SearchParamDefinition(name="recipient", path="ReferralRequest.recipient", description="The person that the referral was sent to", type="reference" )
1740  public static final String SP_RECIPIENT = "recipient";
1741 /**
1742   * <b>Fluent Client</b> search parameter constant for <b>recipient</b>
1743   * <p>
1744   * Description: <b>The person that the referral was sent to</b><br>
1745   * Type: <b>reference</b><br>
1746   * Path: <b>ReferralRequest.recipient</b><br>
1747   * </p>
1748   */
1749  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam RECIPIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_RECIPIENT);
1750
1751/**
1752   * Constant for fluent queries to be used to add include statements. Specifies
1753   * the path value of "<b>ReferralRequest:recipient</b>".
1754   */
1755  public static final ca.uhn.fhir.model.api.Include INCLUDE_RECIPIENT = new ca.uhn.fhir.model.api.Include("ReferralRequest:recipient").toLocked();
1756
1757
1758}
1759