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