001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * A record of dispensation of a biologically derived product.
052 */
053@ResourceDef(name="BiologicallyDerivedProductDispense", profile="http://hl7.org/fhir/StructureDefinition/BiologicallyDerivedProductDispense")
054public class BiologicallyDerivedProductDispense extends DomainResource {
055
056    public enum BiologicallyDerivedProductDispenseCodes {
057        /**
058         * The dispense process has started but not yet completed.
059         */
060        PREPARATION, 
061        /**
062         * The dispense process is in progress.
063         */
064        INPROGRESS, 
065        /**
066         * The requested product has been allocated and is ready for transport.
067         */
068        ALLOCATED, 
069        /**
070         * The dispensed product has been picked up.
071         */
072        ISSUED, 
073        /**
074         * The dispense could not be completed.
075         */
076        UNFULFILLED, 
077        /**
078         * The dispensed product was returned.
079         */
080        RETURNED, 
081        /**
082         * The dispense was entered in error and therefore nullified.
083         */
084        ENTEREDINERROR, 
085        /**
086         * The authoring system does not know which of the status values applies for this dispense. Note: this concept is not to be used for other - one of the listed statuses is presumed to apply, it's just not known which one.
087         */
088        UNKNOWN, 
089        /**
090         * added to help the parsers with the generic types
091         */
092        NULL;
093        public static BiologicallyDerivedProductDispenseCodes fromCode(String codeString) throws FHIRException {
094            if (codeString == null || "".equals(codeString))
095                return null;
096        if ("preparation".equals(codeString))
097          return PREPARATION;
098        if ("in-progress".equals(codeString))
099          return INPROGRESS;
100        if ("allocated".equals(codeString))
101          return ALLOCATED;
102        if ("issued".equals(codeString))
103          return ISSUED;
104        if ("unfulfilled".equals(codeString))
105          return UNFULFILLED;
106        if ("returned".equals(codeString))
107          return RETURNED;
108        if ("entered-in-error".equals(codeString))
109          return ENTEREDINERROR;
110        if ("unknown".equals(codeString))
111          return UNKNOWN;
112        if (Configuration.isAcceptInvalidEnums())
113          return null;
114        else
115          throw new FHIRException("Unknown BiologicallyDerivedProductDispenseCodes code '"+codeString+"'");
116        }
117        public String toCode() {
118          switch (this) {
119            case PREPARATION: return "preparation";
120            case INPROGRESS: return "in-progress";
121            case ALLOCATED: return "allocated";
122            case ISSUED: return "issued";
123            case UNFULFILLED: return "unfulfilled";
124            case RETURNED: return "returned";
125            case ENTEREDINERROR: return "entered-in-error";
126            case UNKNOWN: return "unknown";
127            case NULL: return null;
128            default: return "?";
129          }
130        }
131        public String getSystem() {
132          switch (this) {
133            case PREPARATION: return "http://hl7.org/fhir/biologicallyderivedproductdispense-status";
134            case INPROGRESS: return "http://hl7.org/fhir/biologicallyderivedproductdispense-status";
135            case ALLOCATED: return "http://hl7.org/fhir/biologicallyderivedproductdispense-status";
136            case ISSUED: return "http://hl7.org/fhir/biologicallyderivedproductdispense-status";
137            case UNFULFILLED: return "http://hl7.org/fhir/biologicallyderivedproductdispense-status";
138            case RETURNED: return "http://hl7.org/fhir/biologicallyderivedproductdispense-status";
139            case ENTEREDINERROR: return "http://hl7.org/fhir/biologicallyderivedproductdispense-status";
140            case UNKNOWN: return "http://hl7.org/fhir/biologicallyderivedproductdispense-status";
141            case NULL: return null;
142            default: return "?";
143          }
144        }
145        public String getDefinition() {
146          switch (this) {
147            case PREPARATION: return "The dispense process has started but not yet completed.";
148            case INPROGRESS: return "The dispense process is in progress.";
149            case ALLOCATED: return "The requested product has been allocated and is ready for transport.";
150            case ISSUED: return "The dispensed product has been picked up.";
151            case UNFULFILLED: return "The dispense could not be completed.";
152            case RETURNED: return "The dispensed product was returned.";
153            case ENTEREDINERROR: return "The dispense was entered in error and therefore nullified.";
154            case UNKNOWN: return "The authoring system does not know which of the status values applies for this dispense. Note: this concept is not to be used for other - one of the listed statuses is presumed to apply, it's just not known which one.";
155            case NULL: return null;
156            default: return "?";
157          }
158        }
159        public String getDisplay() {
160          switch (this) {
161            case PREPARATION: return "Preparation";
162            case INPROGRESS: return "In Progress";
163            case ALLOCATED: return "Allocated";
164            case ISSUED: return "Issued";
165            case UNFULFILLED: return "Unfulfilled";
166            case RETURNED: return "Returned";
167            case ENTEREDINERROR: return "Entered in Error";
168            case UNKNOWN: return "Unknown";
169            case NULL: return null;
170            default: return "?";
171          }
172        }
173    }
174
175  public static class BiologicallyDerivedProductDispenseCodesEnumFactory implements EnumFactory<BiologicallyDerivedProductDispenseCodes> {
176    public BiologicallyDerivedProductDispenseCodes fromCode(String codeString) throws IllegalArgumentException {
177      if (codeString == null || "".equals(codeString))
178            if (codeString == null || "".equals(codeString))
179                return null;
180        if ("preparation".equals(codeString))
181          return BiologicallyDerivedProductDispenseCodes.PREPARATION;
182        if ("in-progress".equals(codeString))
183          return BiologicallyDerivedProductDispenseCodes.INPROGRESS;
184        if ("allocated".equals(codeString))
185          return BiologicallyDerivedProductDispenseCodes.ALLOCATED;
186        if ("issued".equals(codeString))
187          return BiologicallyDerivedProductDispenseCodes.ISSUED;
188        if ("unfulfilled".equals(codeString))
189          return BiologicallyDerivedProductDispenseCodes.UNFULFILLED;
190        if ("returned".equals(codeString))
191          return BiologicallyDerivedProductDispenseCodes.RETURNED;
192        if ("entered-in-error".equals(codeString))
193          return BiologicallyDerivedProductDispenseCodes.ENTEREDINERROR;
194        if ("unknown".equals(codeString))
195          return BiologicallyDerivedProductDispenseCodes.UNKNOWN;
196        throw new IllegalArgumentException("Unknown BiologicallyDerivedProductDispenseCodes code '"+codeString+"'");
197        }
198        public Enumeration<BiologicallyDerivedProductDispenseCodes> fromType(PrimitiveType<?> code) throws FHIRException {
199          if (code == null)
200            return null;
201          if (code.isEmpty())
202            return new Enumeration<BiologicallyDerivedProductDispenseCodes>(this, BiologicallyDerivedProductDispenseCodes.NULL, code);
203          String codeString = ((PrimitiveType) code).asStringValue();
204          if (codeString == null || "".equals(codeString))
205            return new Enumeration<BiologicallyDerivedProductDispenseCodes>(this, BiologicallyDerivedProductDispenseCodes.NULL, code);
206        if ("preparation".equals(codeString))
207          return new Enumeration<BiologicallyDerivedProductDispenseCodes>(this, BiologicallyDerivedProductDispenseCodes.PREPARATION, code);
208        if ("in-progress".equals(codeString))
209          return new Enumeration<BiologicallyDerivedProductDispenseCodes>(this, BiologicallyDerivedProductDispenseCodes.INPROGRESS, code);
210        if ("allocated".equals(codeString))
211          return new Enumeration<BiologicallyDerivedProductDispenseCodes>(this, BiologicallyDerivedProductDispenseCodes.ALLOCATED, code);
212        if ("issued".equals(codeString))
213          return new Enumeration<BiologicallyDerivedProductDispenseCodes>(this, BiologicallyDerivedProductDispenseCodes.ISSUED, code);
214        if ("unfulfilled".equals(codeString))
215          return new Enumeration<BiologicallyDerivedProductDispenseCodes>(this, BiologicallyDerivedProductDispenseCodes.UNFULFILLED, code);
216        if ("returned".equals(codeString))
217          return new Enumeration<BiologicallyDerivedProductDispenseCodes>(this, BiologicallyDerivedProductDispenseCodes.RETURNED, code);
218        if ("entered-in-error".equals(codeString))
219          return new Enumeration<BiologicallyDerivedProductDispenseCodes>(this, BiologicallyDerivedProductDispenseCodes.ENTEREDINERROR, code);
220        if ("unknown".equals(codeString))
221          return new Enumeration<BiologicallyDerivedProductDispenseCodes>(this, BiologicallyDerivedProductDispenseCodes.UNKNOWN, code);
222        throw new FHIRException("Unknown BiologicallyDerivedProductDispenseCodes code '"+codeString+"'");
223        }
224    public String toCode(BiologicallyDerivedProductDispenseCodes code) {
225      if (code == BiologicallyDerivedProductDispenseCodes.PREPARATION)
226        return "preparation";
227      if (code == BiologicallyDerivedProductDispenseCodes.INPROGRESS)
228        return "in-progress";
229      if (code == BiologicallyDerivedProductDispenseCodes.ALLOCATED)
230        return "allocated";
231      if (code == BiologicallyDerivedProductDispenseCodes.ISSUED)
232        return "issued";
233      if (code == BiologicallyDerivedProductDispenseCodes.UNFULFILLED)
234        return "unfulfilled";
235      if (code == BiologicallyDerivedProductDispenseCodes.RETURNED)
236        return "returned";
237      if (code == BiologicallyDerivedProductDispenseCodes.ENTEREDINERROR)
238        return "entered-in-error";
239      if (code == BiologicallyDerivedProductDispenseCodes.UNKNOWN)
240        return "unknown";
241      return "?";
242      }
243    public String toSystem(BiologicallyDerivedProductDispenseCodes code) {
244      return code.getSystem();
245      }
246    }
247
248    @Block()
249    public static class BiologicallyDerivedProductDispensePerformerComponent extends BackboneElement implements IBaseBackboneElement {
250        /**
251         * Identifies the function of the performer during the dispense.
252         */
253        @Child(name = "function", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
254        @Description(shortDefinition="Identifies the function of the performer during the dispense", formalDefinition="Identifies the function of the performer during the dispense." )
255        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/biologicallyderivedproductdispense-performer-function")
256        protected CodeableConcept function;
257
258        /**
259         * Identifies the person responsible for the action.
260         */
261        @Child(name = "actor", type = {Practitioner.class}, order=2, min=1, max=1, modifier=false, summary=true)
262        @Description(shortDefinition="Who performed the action", formalDefinition="Identifies the person responsible for the action." )
263        protected Reference actor;
264
265        private static final long serialVersionUID = -576943815L;
266
267    /**
268     * Constructor
269     */
270      public BiologicallyDerivedProductDispensePerformerComponent() {
271        super();
272      }
273
274    /**
275     * Constructor
276     */
277      public BiologicallyDerivedProductDispensePerformerComponent(Reference actor) {
278        super();
279        this.setActor(actor);
280      }
281
282        /**
283         * @return {@link #function} (Identifies the function of the performer during the dispense.)
284         */
285        public CodeableConcept getFunction() { 
286          if (this.function == null)
287            if (Configuration.errorOnAutoCreate())
288              throw new Error("Attempt to auto-create BiologicallyDerivedProductDispensePerformerComponent.function");
289            else if (Configuration.doAutoCreate())
290              this.function = new CodeableConcept(); // cc
291          return this.function;
292        }
293
294        public boolean hasFunction() { 
295          return this.function != null && !this.function.isEmpty();
296        }
297
298        /**
299         * @param value {@link #function} (Identifies the function of the performer during the dispense.)
300         */
301        public BiologicallyDerivedProductDispensePerformerComponent setFunction(CodeableConcept value) { 
302          this.function = value;
303          return this;
304        }
305
306        /**
307         * @return {@link #actor} (Identifies the person responsible for the action.)
308         */
309        public Reference getActor() { 
310          if (this.actor == null)
311            if (Configuration.errorOnAutoCreate())
312              throw new Error("Attempt to auto-create BiologicallyDerivedProductDispensePerformerComponent.actor");
313            else if (Configuration.doAutoCreate())
314              this.actor = new Reference(); // cc
315          return this.actor;
316        }
317
318        public boolean hasActor() { 
319          return this.actor != null && !this.actor.isEmpty();
320        }
321
322        /**
323         * @param value {@link #actor} (Identifies the person responsible for the action.)
324         */
325        public BiologicallyDerivedProductDispensePerformerComponent setActor(Reference value) { 
326          this.actor = value;
327          return this;
328        }
329
330        protected void listChildren(List<Property> children) {
331          super.listChildren(children);
332          children.add(new Property("function", "CodeableConcept", "Identifies the function of the performer during the dispense.", 0, 1, function));
333          children.add(new Property("actor", "Reference(Practitioner)", "Identifies the person responsible for the action.", 0, 1, actor));
334        }
335
336        @Override
337        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
338          switch (_hash) {
339          case 1380938712: /*function*/  return new Property("function", "CodeableConcept", "Identifies the function of the performer during the dispense.", 0, 1, function);
340          case 92645877: /*actor*/  return new Property("actor", "Reference(Practitioner)", "Identifies the person responsible for the action.", 0, 1, actor);
341          default: return super.getNamedProperty(_hash, _name, _checkValid);
342          }
343
344        }
345
346      @Override
347      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
348        switch (hash) {
349        case 1380938712: /*function*/ return this.function == null ? new Base[0] : new Base[] {this.function}; // CodeableConcept
350        case 92645877: /*actor*/ return this.actor == null ? new Base[0] : new Base[] {this.actor}; // Reference
351        default: return super.getProperty(hash, name, checkValid);
352        }
353
354      }
355
356      @Override
357      public Base setProperty(int hash, String name, Base value) throws FHIRException {
358        switch (hash) {
359        case 1380938712: // function
360          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
361          return value;
362        case 92645877: // actor
363          this.actor = TypeConvertor.castToReference(value); // Reference
364          return value;
365        default: return super.setProperty(hash, name, value);
366        }
367
368      }
369
370      @Override
371      public Base setProperty(String name, Base value) throws FHIRException {
372        if (name.equals("function")) {
373          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
374        } else if (name.equals("actor")) {
375          this.actor = TypeConvertor.castToReference(value); // Reference
376        } else
377          return super.setProperty(name, value);
378        return value;
379      }
380
381      @Override
382      public Base makeProperty(int hash, String name) throws FHIRException {
383        switch (hash) {
384        case 1380938712:  return getFunction();
385        case 92645877:  return getActor();
386        default: return super.makeProperty(hash, name);
387        }
388
389      }
390
391      @Override
392      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
393        switch (hash) {
394        case 1380938712: /*function*/ return new String[] {"CodeableConcept"};
395        case 92645877: /*actor*/ return new String[] {"Reference"};
396        default: return super.getTypesForProperty(hash, name);
397        }
398
399      }
400
401      @Override
402      public Base addChild(String name) throws FHIRException {
403        if (name.equals("function")) {
404          this.function = new CodeableConcept();
405          return this.function;
406        }
407        else if (name.equals("actor")) {
408          this.actor = new Reference();
409          return this.actor;
410        }
411        else
412          return super.addChild(name);
413      }
414
415      public BiologicallyDerivedProductDispensePerformerComponent copy() {
416        BiologicallyDerivedProductDispensePerformerComponent dst = new BiologicallyDerivedProductDispensePerformerComponent();
417        copyValues(dst);
418        return dst;
419      }
420
421      public void copyValues(BiologicallyDerivedProductDispensePerformerComponent dst) {
422        super.copyValues(dst);
423        dst.function = function == null ? null : function.copy();
424        dst.actor = actor == null ? null : actor.copy();
425      }
426
427      @Override
428      public boolean equalsDeep(Base other_) {
429        if (!super.equalsDeep(other_))
430          return false;
431        if (!(other_ instanceof BiologicallyDerivedProductDispensePerformerComponent))
432          return false;
433        BiologicallyDerivedProductDispensePerformerComponent o = (BiologicallyDerivedProductDispensePerformerComponent) other_;
434        return compareDeep(function, o.function, true) && compareDeep(actor, o.actor, true);
435      }
436
437      @Override
438      public boolean equalsShallow(Base other_) {
439        if (!super.equalsShallow(other_))
440          return false;
441        if (!(other_ instanceof BiologicallyDerivedProductDispensePerformerComponent))
442          return false;
443        BiologicallyDerivedProductDispensePerformerComponent o = (BiologicallyDerivedProductDispensePerformerComponent) other_;
444        return true;
445      }
446
447      public boolean isEmpty() {
448        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(function, actor);
449      }
450
451  public String fhirType() {
452    return "BiologicallyDerivedProductDispense.performer";
453
454  }
455
456  }
457
458    /**
459     * Unique instance identifiers assigned to a biologically derived product dispense. Note: This is a business identifier, not a resource identifier.
460     */
461    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
462    @Description(shortDefinition="Business identifier for this dispense", formalDefinition="Unique instance identifiers assigned to a biologically derived product dispense. Note: This is a business identifier, not a resource identifier." )
463    protected List<Identifier> identifier;
464
465    /**
466     * The order or request that the dispense is fulfilling. This is a reference to a ServiceRequest resource.
467     */
468    @Child(name = "basedOn", type = {ServiceRequest.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
469    @Description(shortDefinition="The order or request that this dispense is fulfilling", formalDefinition="The order or request that the dispense is fulfilling. This is a reference to a ServiceRequest resource." )
470    protected List<Reference> basedOn;
471
472    /**
473     * A larger event of which this particular event is a component.
474     */
475    @Child(name = "partOf", type = {BiologicallyDerivedProductDispense.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
476    @Description(shortDefinition="Short description", formalDefinition="A larger event of which this particular event is a component." )
477    protected List<Reference> partOf;
478
479    /**
480     * A code specifying the state of the dispense event.
481     */
482    @Child(name = "status", type = {CodeType.class}, order=3, min=1, max=1, modifier=false, summary=true)
483    @Description(shortDefinition="preparation | in-progress | allocated | issued | unfulfilled | returned | entered-in-error | unknown", formalDefinition="A code specifying the state of the dispense event." )
484    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/biologicallyderivedproductdispense-status")
485    protected Enumeration<BiologicallyDerivedProductDispenseCodes> status;
486
487    /**
488     * Indicates the relationship between the donor of the biologically derived product and the intended recipient.
489     */
490    @Child(name = "originRelationshipType", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=true)
491    @Description(shortDefinition="Relationship between the donor and intended recipient", formalDefinition="Indicates the relationship between the donor of the biologically derived product and the intended recipient." )
492    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/biologicallyderivedproductdispense-origin-relationship")
493    protected CodeableConcept originRelationshipType;
494
495    /**
496     * A link to a resource identifying the biologically derived product that is being dispensed.
497     */
498    @Child(name = "product", type = {BiologicallyDerivedProduct.class}, order=5, min=1, max=1, modifier=false, summary=true)
499    @Description(shortDefinition="The BiologicallyDerivedProduct that is dispensed", formalDefinition="A link to a resource identifying the biologically derived product that is being dispensed." )
500    protected Reference product;
501
502    /**
503     * A link to a resource representing the patient that the product is dispensed for.
504     */
505    @Child(name = "patient", type = {Patient.class}, order=6, min=1, max=1, modifier=false, summary=true)
506    @Description(shortDefinition="The intended recipient of the dispensed product", formalDefinition="A link to a resource representing the patient that the product is dispensed for." )
507    protected Reference patient;
508
509    /**
510     * Indicates the type of matching associated with the dispense.
511     */
512    @Child(name = "matchStatus", type = {CodeableConcept.class}, order=7, min=0, max=1, modifier=false, summary=true)
513    @Description(shortDefinition="Indicates the type of matching associated with the dispense", formalDefinition="Indicates the type of matching associated with the dispense." )
514    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/biologicallyderivedproductdispense-match-status")
515    protected CodeableConcept matchStatus;
516
517    /**
518     * Indicates who or what performed an action.
519     */
520    @Child(name = "performer", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
521    @Description(shortDefinition="Indicates who or what performed an action", formalDefinition="Indicates who or what performed an action." )
522    protected List<BiologicallyDerivedProductDispensePerformerComponent> performer;
523
524    /**
525     * The physical location where the dispense was performed.
526     */
527    @Child(name = "location", type = {Location.class}, order=9, min=0, max=1, modifier=false, summary=true)
528    @Description(shortDefinition="Where the dispense occurred", formalDefinition="The physical location where the dispense was performed." )
529    protected Reference location;
530
531    /**
532     * The amount of product in the dispense. Quantity will depend on the product being dispensed. Examples are: volume; cell count; concentration.
533     */
534    @Child(name = "quantity", type = {Quantity.class}, order=10, min=0, max=1, modifier=false, summary=true)
535    @Description(shortDefinition="Amount dispensed", formalDefinition="The amount of product in the dispense. Quantity will depend on the product being dispensed. Examples are: volume; cell count; concentration." )
536    protected Quantity quantity;
537
538    /**
539     * When the product was selected/ matched.
540     */
541    @Child(name = "preparedDate", type = {DateTimeType.class}, order=11, min=0, max=1, modifier=false, summary=true)
542    @Description(shortDefinition="When product was selected/matched", formalDefinition="When the product was selected/ matched." )
543    protected DateTimeType preparedDate;
544
545    /**
546     * When the product was dispatched for clinical use.
547     */
548    @Child(name = "whenHandedOver", type = {DateTimeType.class}, order=12, min=0, max=1, modifier=false, summary=true)
549    @Description(shortDefinition="When the product was dispatched", formalDefinition="When the product was dispatched for clinical use." )
550    protected DateTimeType whenHandedOver;
551
552    /**
553     * Link to a resource identifying the physical location that the product was dispatched to.
554     */
555    @Child(name = "destination", type = {Location.class}, order=13, min=0, max=1, modifier=false, summary=true)
556    @Description(shortDefinition="Where the product was dispatched to", formalDefinition="Link to a resource identifying the physical location that the product was dispatched to." )
557    protected Reference destination;
558
559    /**
560     * Additional notes.
561     */
562    @Child(name = "note", type = {Annotation.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
563    @Description(shortDefinition="Additional notes", formalDefinition="Additional notes." )
564    protected List<Annotation> note;
565
566    /**
567     * Specific instructions for use.
568     */
569    @Child(name = "usageInstruction", type = {StringType.class}, order=15, min=0, max=1, modifier=false, summary=true)
570    @Description(shortDefinition="Specific instructions for use", formalDefinition="Specific instructions for use." )
571    protected StringType usageInstruction;
572
573    private static final long serialVersionUID = -109945994L;
574
575  /**
576   * Constructor
577   */
578    public BiologicallyDerivedProductDispense() {
579      super();
580    }
581
582  /**
583   * Constructor
584   */
585    public BiologicallyDerivedProductDispense(BiologicallyDerivedProductDispenseCodes status, Reference product, Reference patient) {
586      super();
587      this.setStatus(status);
588      this.setProduct(product);
589      this.setPatient(patient);
590    }
591
592    /**
593     * @return {@link #identifier} (Unique instance identifiers assigned to a biologically derived product dispense. Note: This is a business identifier, not a resource identifier.)
594     */
595    public List<Identifier> getIdentifier() { 
596      if (this.identifier == null)
597        this.identifier = new ArrayList<Identifier>();
598      return this.identifier;
599    }
600
601    /**
602     * @return Returns a reference to <code>this</code> for easy method chaining
603     */
604    public BiologicallyDerivedProductDispense setIdentifier(List<Identifier> theIdentifier) { 
605      this.identifier = theIdentifier;
606      return this;
607    }
608
609    public boolean hasIdentifier() { 
610      if (this.identifier == null)
611        return false;
612      for (Identifier item : this.identifier)
613        if (!item.isEmpty())
614          return true;
615      return false;
616    }
617
618    public Identifier addIdentifier() { //3
619      Identifier t = new Identifier();
620      if (this.identifier == null)
621        this.identifier = new ArrayList<Identifier>();
622      this.identifier.add(t);
623      return t;
624    }
625
626    public BiologicallyDerivedProductDispense addIdentifier(Identifier t) { //3
627      if (t == null)
628        return this;
629      if (this.identifier == null)
630        this.identifier = new ArrayList<Identifier>();
631      this.identifier.add(t);
632      return this;
633    }
634
635    /**
636     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
637     */
638    public Identifier getIdentifierFirstRep() { 
639      if (getIdentifier().isEmpty()) {
640        addIdentifier();
641      }
642      return getIdentifier().get(0);
643    }
644
645    /**
646     * @return {@link #basedOn} (The order or request that the dispense is fulfilling. This is a reference to a ServiceRequest resource.)
647     */
648    public List<Reference> getBasedOn() { 
649      if (this.basedOn == null)
650        this.basedOn = new ArrayList<Reference>();
651      return this.basedOn;
652    }
653
654    /**
655     * @return Returns a reference to <code>this</code> for easy method chaining
656     */
657    public BiologicallyDerivedProductDispense setBasedOn(List<Reference> theBasedOn) { 
658      this.basedOn = theBasedOn;
659      return this;
660    }
661
662    public boolean hasBasedOn() { 
663      if (this.basedOn == null)
664        return false;
665      for (Reference item : this.basedOn)
666        if (!item.isEmpty())
667          return true;
668      return false;
669    }
670
671    public Reference addBasedOn() { //3
672      Reference t = new Reference();
673      if (this.basedOn == null)
674        this.basedOn = new ArrayList<Reference>();
675      this.basedOn.add(t);
676      return t;
677    }
678
679    public BiologicallyDerivedProductDispense addBasedOn(Reference t) { //3
680      if (t == null)
681        return this;
682      if (this.basedOn == null)
683        this.basedOn = new ArrayList<Reference>();
684      this.basedOn.add(t);
685      return this;
686    }
687
688    /**
689     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
690     */
691    public Reference getBasedOnFirstRep() { 
692      if (getBasedOn().isEmpty()) {
693        addBasedOn();
694      }
695      return getBasedOn().get(0);
696    }
697
698    /**
699     * @return {@link #partOf} (A larger event of which this particular event is a component.)
700     */
701    public List<Reference> getPartOf() { 
702      if (this.partOf == null)
703        this.partOf = new ArrayList<Reference>();
704      return this.partOf;
705    }
706
707    /**
708     * @return Returns a reference to <code>this</code> for easy method chaining
709     */
710    public BiologicallyDerivedProductDispense setPartOf(List<Reference> thePartOf) { 
711      this.partOf = thePartOf;
712      return this;
713    }
714
715    public boolean hasPartOf() { 
716      if (this.partOf == null)
717        return false;
718      for (Reference item : this.partOf)
719        if (!item.isEmpty())
720          return true;
721      return false;
722    }
723
724    public Reference addPartOf() { //3
725      Reference t = new Reference();
726      if (this.partOf == null)
727        this.partOf = new ArrayList<Reference>();
728      this.partOf.add(t);
729      return t;
730    }
731
732    public BiologicallyDerivedProductDispense addPartOf(Reference t) { //3
733      if (t == null)
734        return this;
735      if (this.partOf == null)
736        this.partOf = new ArrayList<Reference>();
737      this.partOf.add(t);
738      return this;
739    }
740
741    /**
742     * @return The first repetition of repeating field {@link #partOf}, creating it if it does not already exist {3}
743     */
744    public Reference getPartOfFirstRep() { 
745      if (getPartOf().isEmpty()) {
746        addPartOf();
747      }
748      return getPartOf().get(0);
749    }
750
751    /**
752     * @return {@link #status} (A code specifying the state of the dispense event.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
753     */
754    public Enumeration<BiologicallyDerivedProductDispenseCodes> getStatusElement() { 
755      if (this.status == null)
756        if (Configuration.errorOnAutoCreate())
757          throw new Error("Attempt to auto-create BiologicallyDerivedProductDispense.status");
758        else if (Configuration.doAutoCreate())
759          this.status = new Enumeration<BiologicallyDerivedProductDispenseCodes>(new BiologicallyDerivedProductDispenseCodesEnumFactory()); // bb
760      return this.status;
761    }
762
763    public boolean hasStatusElement() { 
764      return this.status != null && !this.status.isEmpty();
765    }
766
767    public boolean hasStatus() { 
768      return this.status != null && !this.status.isEmpty();
769    }
770
771    /**
772     * @param value {@link #status} (A code specifying the state of the dispense event.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
773     */
774    public BiologicallyDerivedProductDispense setStatusElement(Enumeration<BiologicallyDerivedProductDispenseCodes> value) { 
775      this.status = value;
776      return this;
777    }
778
779    /**
780     * @return A code specifying the state of the dispense event.
781     */
782    public BiologicallyDerivedProductDispenseCodes getStatus() { 
783      return this.status == null ? null : this.status.getValue();
784    }
785
786    /**
787     * @param value A code specifying the state of the dispense event.
788     */
789    public BiologicallyDerivedProductDispense setStatus(BiologicallyDerivedProductDispenseCodes value) { 
790        if (this.status == null)
791          this.status = new Enumeration<BiologicallyDerivedProductDispenseCodes>(new BiologicallyDerivedProductDispenseCodesEnumFactory());
792        this.status.setValue(value);
793      return this;
794    }
795
796    /**
797     * @return {@link #originRelationshipType} (Indicates the relationship between the donor of the biologically derived product and the intended recipient.)
798     */
799    public CodeableConcept getOriginRelationshipType() { 
800      if (this.originRelationshipType == null)
801        if (Configuration.errorOnAutoCreate())
802          throw new Error("Attempt to auto-create BiologicallyDerivedProductDispense.originRelationshipType");
803        else if (Configuration.doAutoCreate())
804          this.originRelationshipType = new CodeableConcept(); // cc
805      return this.originRelationshipType;
806    }
807
808    public boolean hasOriginRelationshipType() { 
809      return this.originRelationshipType != null && !this.originRelationshipType.isEmpty();
810    }
811
812    /**
813     * @param value {@link #originRelationshipType} (Indicates the relationship between the donor of the biologically derived product and the intended recipient.)
814     */
815    public BiologicallyDerivedProductDispense setOriginRelationshipType(CodeableConcept value) { 
816      this.originRelationshipType = value;
817      return this;
818    }
819
820    /**
821     * @return {@link #product} (A link to a resource identifying the biologically derived product that is being dispensed.)
822     */
823    public Reference getProduct() { 
824      if (this.product == null)
825        if (Configuration.errorOnAutoCreate())
826          throw new Error("Attempt to auto-create BiologicallyDerivedProductDispense.product");
827        else if (Configuration.doAutoCreate())
828          this.product = new Reference(); // cc
829      return this.product;
830    }
831
832    public boolean hasProduct() { 
833      return this.product != null && !this.product.isEmpty();
834    }
835
836    /**
837     * @param value {@link #product} (A link to a resource identifying the biologically derived product that is being dispensed.)
838     */
839    public BiologicallyDerivedProductDispense setProduct(Reference value) { 
840      this.product = value;
841      return this;
842    }
843
844    /**
845     * @return {@link #patient} (A link to a resource representing the patient that the product is dispensed for.)
846     */
847    public Reference getPatient() { 
848      if (this.patient == null)
849        if (Configuration.errorOnAutoCreate())
850          throw new Error("Attempt to auto-create BiologicallyDerivedProductDispense.patient");
851        else if (Configuration.doAutoCreate())
852          this.patient = new Reference(); // cc
853      return this.patient;
854    }
855
856    public boolean hasPatient() { 
857      return this.patient != null && !this.patient.isEmpty();
858    }
859
860    /**
861     * @param value {@link #patient} (A link to a resource representing the patient that the product is dispensed for.)
862     */
863    public BiologicallyDerivedProductDispense setPatient(Reference value) { 
864      this.patient = value;
865      return this;
866    }
867
868    /**
869     * @return {@link #matchStatus} (Indicates the type of matching associated with the dispense.)
870     */
871    public CodeableConcept getMatchStatus() { 
872      if (this.matchStatus == null)
873        if (Configuration.errorOnAutoCreate())
874          throw new Error("Attempt to auto-create BiologicallyDerivedProductDispense.matchStatus");
875        else if (Configuration.doAutoCreate())
876          this.matchStatus = new CodeableConcept(); // cc
877      return this.matchStatus;
878    }
879
880    public boolean hasMatchStatus() { 
881      return this.matchStatus != null && !this.matchStatus.isEmpty();
882    }
883
884    /**
885     * @param value {@link #matchStatus} (Indicates the type of matching associated with the dispense.)
886     */
887    public BiologicallyDerivedProductDispense setMatchStatus(CodeableConcept value) { 
888      this.matchStatus = value;
889      return this;
890    }
891
892    /**
893     * @return {@link #performer} (Indicates who or what performed an action.)
894     */
895    public List<BiologicallyDerivedProductDispensePerformerComponent> getPerformer() { 
896      if (this.performer == null)
897        this.performer = new ArrayList<BiologicallyDerivedProductDispensePerformerComponent>();
898      return this.performer;
899    }
900
901    /**
902     * @return Returns a reference to <code>this</code> for easy method chaining
903     */
904    public BiologicallyDerivedProductDispense setPerformer(List<BiologicallyDerivedProductDispensePerformerComponent> thePerformer) { 
905      this.performer = thePerformer;
906      return this;
907    }
908
909    public boolean hasPerformer() { 
910      if (this.performer == null)
911        return false;
912      for (BiologicallyDerivedProductDispensePerformerComponent item : this.performer)
913        if (!item.isEmpty())
914          return true;
915      return false;
916    }
917
918    public BiologicallyDerivedProductDispensePerformerComponent addPerformer() { //3
919      BiologicallyDerivedProductDispensePerformerComponent t = new BiologicallyDerivedProductDispensePerformerComponent();
920      if (this.performer == null)
921        this.performer = new ArrayList<BiologicallyDerivedProductDispensePerformerComponent>();
922      this.performer.add(t);
923      return t;
924    }
925
926    public BiologicallyDerivedProductDispense addPerformer(BiologicallyDerivedProductDispensePerformerComponent t) { //3
927      if (t == null)
928        return this;
929      if (this.performer == null)
930        this.performer = new ArrayList<BiologicallyDerivedProductDispensePerformerComponent>();
931      this.performer.add(t);
932      return this;
933    }
934
935    /**
936     * @return The first repetition of repeating field {@link #performer}, creating it if it does not already exist {3}
937     */
938    public BiologicallyDerivedProductDispensePerformerComponent getPerformerFirstRep() { 
939      if (getPerformer().isEmpty()) {
940        addPerformer();
941      }
942      return getPerformer().get(0);
943    }
944
945    /**
946     * @return {@link #location} (The physical location where the dispense was performed.)
947     */
948    public Reference getLocation() { 
949      if (this.location == null)
950        if (Configuration.errorOnAutoCreate())
951          throw new Error("Attempt to auto-create BiologicallyDerivedProductDispense.location");
952        else if (Configuration.doAutoCreate())
953          this.location = new Reference(); // cc
954      return this.location;
955    }
956
957    public boolean hasLocation() { 
958      return this.location != null && !this.location.isEmpty();
959    }
960
961    /**
962     * @param value {@link #location} (The physical location where the dispense was performed.)
963     */
964    public BiologicallyDerivedProductDispense setLocation(Reference value) { 
965      this.location = value;
966      return this;
967    }
968
969    /**
970     * @return {@link #quantity} (The amount of product in the dispense. Quantity will depend on the product being dispensed. Examples are: volume; cell count; concentration.)
971     */
972    public Quantity getQuantity() { 
973      if (this.quantity == null)
974        if (Configuration.errorOnAutoCreate())
975          throw new Error("Attempt to auto-create BiologicallyDerivedProductDispense.quantity");
976        else if (Configuration.doAutoCreate())
977          this.quantity = new Quantity(); // cc
978      return this.quantity;
979    }
980
981    public boolean hasQuantity() { 
982      return this.quantity != null && !this.quantity.isEmpty();
983    }
984
985    /**
986     * @param value {@link #quantity} (The amount of product in the dispense. Quantity will depend on the product being dispensed. Examples are: volume; cell count; concentration.)
987     */
988    public BiologicallyDerivedProductDispense setQuantity(Quantity value) { 
989      this.quantity = value;
990      return this;
991    }
992
993    /**
994     * @return {@link #preparedDate} (When the product was selected/ matched.). This is the underlying object with id, value and extensions. The accessor "getPreparedDate" gives direct access to the value
995     */
996    public DateTimeType getPreparedDateElement() { 
997      if (this.preparedDate == null)
998        if (Configuration.errorOnAutoCreate())
999          throw new Error("Attempt to auto-create BiologicallyDerivedProductDispense.preparedDate");
1000        else if (Configuration.doAutoCreate())
1001          this.preparedDate = new DateTimeType(); // bb
1002      return this.preparedDate;
1003    }
1004
1005    public boolean hasPreparedDateElement() { 
1006      return this.preparedDate != null && !this.preparedDate.isEmpty();
1007    }
1008
1009    public boolean hasPreparedDate() { 
1010      return this.preparedDate != null && !this.preparedDate.isEmpty();
1011    }
1012
1013    /**
1014     * @param value {@link #preparedDate} (When the product was selected/ matched.). This is the underlying object with id, value and extensions. The accessor "getPreparedDate" gives direct access to the value
1015     */
1016    public BiologicallyDerivedProductDispense setPreparedDateElement(DateTimeType value) { 
1017      this.preparedDate = value;
1018      return this;
1019    }
1020
1021    /**
1022     * @return When the product was selected/ matched.
1023     */
1024    public Date getPreparedDate() { 
1025      return this.preparedDate == null ? null : this.preparedDate.getValue();
1026    }
1027
1028    /**
1029     * @param value When the product was selected/ matched.
1030     */
1031    public BiologicallyDerivedProductDispense setPreparedDate(Date value) { 
1032      if (value == null)
1033        this.preparedDate = null;
1034      else {
1035        if (this.preparedDate == null)
1036          this.preparedDate = new DateTimeType();
1037        this.preparedDate.setValue(value);
1038      }
1039      return this;
1040    }
1041
1042    /**
1043     * @return {@link #whenHandedOver} (When the product was dispatched for clinical use.). This is the underlying object with id, value and extensions. The accessor "getWhenHandedOver" gives direct access to the value
1044     */
1045    public DateTimeType getWhenHandedOverElement() { 
1046      if (this.whenHandedOver == null)
1047        if (Configuration.errorOnAutoCreate())
1048          throw new Error("Attempt to auto-create BiologicallyDerivedProductDispense.whenHandedOver");
1049        else if (Configuration.doAutoCreate())
1050          this.whenHandedOver = new DateTimeType(); // bb
1051      return this.whenHandedOver;
1052    }
1053
1054    public boolean hasWhenHandedOverElement() { 
1055      return this.whenHandedOver != null && !this.whenHandedOver.isEmpty();
1056    }
1057
1058    public boolean hasWhenHandedOver() { 
1059      return this.whenHandedOver != null && !this.whenHandedOver.isEmpty();
1060    }
1061
1062    /**
1063     * @param value {@link #whenHandedOver} (When the product was dispatched for clinical use.). This is the underlying object with id, value and extensions. The accessor "getWhenHandedOver" gives direct access to the value
1064     */
1065    public BiologicallyDerivedProductDispense setWhenHandedOverElement(DateTimeType value) { 
1066      this.whenHandedOver = value;
1067      return this;
1068    }
1069
1070    /**
1071     * @return When the product was dispatched for clinical use.
1072     */
1073    public Date getWhenHandedOver() { 
1074      return this.whenHandedOver == null ? null : this.whenHandedOver.getValue();
1075    }
1076
1077    /**
1078     * @param value When the product was dispatched for clinical use.
1079     */
1080    public BiologicallyDerivedProductDispense setWhenHandedOver(Date value) { 
1081      if (value == null)
1082        this.whenHandedOver = null;
1083      else {
1084        if (this.whenHandedOver == null)
1085          this.whenHandedOver = new DateTimeType();
1086        this.whenHandedOver.setValue(value);
1087      }
1088      return this;
1089    }
1090
1091    /**
1092     * @return {@link #destination} (Link to a resource identifying the physical location that the product was dispatched to.)
1093     */
1094    public Reference getDestination() { 
1095      if (this.destination == null)
1096        if (Configuration.errorOnAutoCreate())
1097          throw new Error("Attempt to auto-create BiologicallyDerivedProductDispense.destination");
1098        else if (Configuration.doAutoCreate())
1099          this.destination = new Reference(); // cc
1100      return this.destination;
1101    }
1102
1103    public boolean hasDestination() { 
1104      return this.destination != null && !this.destination.isEmpty();
1105    }
1106
1107    /**
1108     * @param value {@link #destination} (Link to a resource identifying the physical location that the product was dispatched to.)
1109     */
1110    public BiologicallyDerivedProductDispense setDestination(Reference value) { 
1111      this.destination = value;
1112      return this;
1113    }
1114
1115    /**
1116     * @return {@link #note} (Additional notes.)
1117     */
1118    public List<Annotation> getNote() { 
1119      if (this.note == null)
1120        this.note = new ArrayList<Annotation>();
1121      return this.note;
1122    }
1123
1124    /**
1125     * @return Returns a reference to <code>this</code> for easy method chaining
1126     */
1127    public BiologicallyDerivedProductDispense setNote(List<Annotation> theNote) { 
1128      this.note = theNote;
1129      return this;
1130    }
1131
1132    public boolean hasNote() { 
1133      if (this.note == null)
1134        return false;
1135      for (Annotation item : this.note)
1136        if (!item.isEmpty())
1137          return true;
1138      return false;
1139    }
1140
1141    public Annotation addNote() { //3
1142      Annotation t = new Annotation();
1143      if (this.note == null)
1144        this.note = new ArrayList<Annotation>();
1145      this.note.add(t);
1146      return t;
1147    }
1148
1149    public BiologicallyDerivedProductDispense addNote(Annotation t) { //3
1150      if (t == null)
1151        return this;
1152      if (this.note == null)
1153        this.note = new ArrayList<Annotation>();
1154      this.note.add(t);
1155      return this;
1156    }
1157
1158    /**
1159     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
1160     */
1161    public Annotation getNoteFirstRep() { 
1162      if (getNote().isEmpty()) {
1163        addNote();
1164      }
1165      return getNote().get(0);
1166    }
1167
1168    /**
1169     * @return {@link #usageInstruction} (Specific instructions for use.). This is the underlying object with id, value and extensions. The accessor "getUsageInstruction" gives direct access to the value
1170     */
1171    public StringType getUsageInstructionElement() { 
1172      if (this.usageInstruction == null)
1173        if (Configuration.errorOnAutoCreate())
1174          throw new Error("Attempt to auto-create BiologicallyDerivedProductDispense.usageInstruction");
1175        else if (Configuration.doAutoCreate())
1176          this.usageInstruction = new StringType(); // bb
1177      return this.usageInstruction;
1178    }
1179
1180    public boolean hasUsageInstructionElement() { 
1181      return this.usageInstruction != null && !this.usageInstruction.isEmpty();
1182    }
1183
1184    public boolean hasUsageInstruction() { 
1185      return this.usageInstruction != null && !this.usageInstruction.isEmpty();
1186    }
1187
1188    /**
1189     * @param value {@link #usageInstruction} (Specific instructions for use.). This is the underlying object with id, value and extensions. The accessor "getUsageInstruction" gives direct access to the value
1190     */
1191    public BiologicallyDerivedProductDispense setUsageInstructionElement(StringType value) { 
1192      this.usageInstruction = value;
1193      return this;
1194    }
1195
1196    /**
1197     * @return Specific instructions for use.
1198     */
1199    public String getUsageInstruction() { 
1200      return this.usageInstruction == null ? null : this.usageInstruction.getValue();
1201    }
1202
1203    /**
1204     * @param value Specific instructions for use.
1205     */
1206    public BiologicallyDerivedProductDispense setUsageInstruction(String value) { 
1207      if (Utilities.noString(value))
1208        this.usageInstruction = null;
1209      else {
1210        if (this.usageInstruction == null)
1211          this.usageInstruction = new StringType();
1212        this.usageInstruction.setValue(value);
1213      }
1214      return this;
1215    }
1216
1217      protected void listChildren(List<Property> children) {
1218        super.listChildren(children);
1219        children.add(new Property("identifier", "Identifier", "Unique instance identifiers assigned to a biologically derived product dispense. Note: This is a business identifier, not a resource identifier.", 0, java.lang.Integer.MAX_VALUE, identifier));
1220        children.add(new Property("basedOn", "Reference(ServiceRequest)", "The order or request that the dispense is fulfilling. This is a reference to a ServiceRequest resource.", 0, java.lang.Integer.MAX_VALUE, basedOn));
1221        children.add(new Property("partOf", "Reference(BiologicallyDerivedProductDispense)", "A larger event of which this particular event is a component.", 0, java.lang.Integer.MAX_VALUE, partOf));
1222        children.add(new Property("status", "code", "A code specifying the state of the dispense event.", 0, 1, status));
1223        children.add(new Property("originRelationshipType", "CodeableConcept", "Indicates the relationship between the donor of the biologically derived product and the intended recipient.", 0, 1, originRelationshipType));
1224        children.add(new Property("product", "Reference(BiologicallyDerivedProduct)", "A link to a resource identifying the biologically derived product that is being dispensed.", 0, 1, product));
1225        children.add(new Property("patient", "Reference(Patient)", "A link to a resource representing the patient that the product is dispensed for.", 0, 1, patient));
1226        children.add(new Property("matchStatus", "CodeableConcept", "Indicates the type of matching associated with the dispense.", 0, 1, matchStatus));
1227        children.add(new Property("performer", "", "Indicates who or what performed an action.", 0, java.lang.Integer.MAX_VALUE, performer));
1228        children.add(new Property("location", "Reference(Location)", "The physical location where the dispense was performed.", 0, 1, location));
1229        children.add(new Property("quantity", "Quantity", "The amount of product in the dispense. Quantity will depend on the product being dispensed. Examples are: volume; cell count; concentration.", 0, 1, quantity));
1230        children.add(new Property("preparedDate", "dateTime", "When the product was selected/ matched.", 0, 1, preparedDate));
1231        children.add(new Property("whenHandedOver", "dateTime", "When the product was dispatched for clinical use.", 0, 1, whenHandedOver));
1232        children.add(new Property("destination", "Reference(Location)", "Link to a resource identifying the physical location that the product was dispatched to.", 0, 1, destination));
1233        children.add(new Property("note", "Annotation", "Additional notes.", 0, java.lang.Integer.MAX_VALUE, note));
1234        children.add(new Property("usageInstruction", "string", "Specific instructions for use.", 0, 1, usageInstruction));
1235      }
1236
1237      @Override
1238      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1239        switch (_hash) {
1240        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Unique instance identifiers assigned to a biologically derived product dispense. Note: This is a business identifier, not a resource identifier.", 0, java.lang.Integer.MAX_VALUE, identifier);
1241        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(ServiceRequest)", "The order or request that the dispense is fulfilling. This is a reference to a ServiceRequest resource.", 0, java.lang.Integer.MAX_VALUE, basedOn);
1242        case -995410646: /*partOf*/  return new Property("partOf", "Reference(BiologicallyDerivedProductDispense)", "A larger event of which this particular event is a component.", 0, java.lang.Integer.MAX_VALUE, partOf);
1243        case -892481550: /*status*/  return new Property("status", "code", "A code specifying the state of the dispense event.", 0, 1, status);
1244        case 1746240728: /*originRelationshipType*/  return new Property("originRelationshipType", "CodeableConcept", "Indicates the relationship between the donor of the biologically derived product and the intended recipient.", 0, 1, originRelationshipType);
1245        case -309474065: /*product*/  return new Property("product", "Reference(BiologicallyDerivedProduct)", "A link to a resource identifying the biologically derived product that is being dispensed.", 0, 1, product);
1246        case -791418107: /*patient*/  return new Property("patient", "Reference(Patient)", "A link to a resource representing the patient that the product is dispensed for.", 0, 1, patient);
1247        case 1644523031: /*matchStatus*/  return new Property("matchStatus", "CodeableConcept", "Indicates the type of matching associated with the dispense.", 0, 1, matchStatus);
1248        case 481140686: /*performer*/  return new Property("performer", "", "Indicates who or what performed an action.", 0, java.lang.Integer.MAX_VALUE, performer);
1249        case 1901043637: /*location*/  return new Property("location", "Reference(Location)", "The physical location where the dispense was performed.", 0, 1, location);
1250        case -1285004149: /*quantity*/  return new Property("quantity", "Quantity", "The amount of product in the dispense. Quantity will depend on the product being dispensed. Examples are: volume; cell count; concentration.", 0, 1, quantity);
1251        case -2024959605: /*preparedDate*/  return new Property("preparedDate", "dateTime", "When the product was selected/ matched.", 0, 1, preparedDate);
1252        case -940241380: /*whenHandedOver*/  return new Property("whenHandedOver", "dateTime", "When the product was dispatched for clinical use.", 0, 1, whenHandedOver);
1253        case -1429847026: /*destination*/  return new Property("destination", "Reference(Location)", "Link to a resource identifying the physical location that the product was dispatched to.", 0, 1, destination);
1254        case 3387378: /*note*/  return new Property("note", "Annotation", "Additional notes.", 0, java.lang.Integer.MAX_VALUE, note);
1255        case 2138372141: /*usageInstruction*/  return new Property("usageInstruction", "string", "Specific instructions for use.", 0, 1, usageInstruction);
1256        default: return super.getNamedProperty(_hash, _name, _checkValid);
1257        }
1258
1259      }
1260
1261      @Override
1262      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1263        switch (hash) {
1264        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1265        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
1266        case -995410646: /*partOf*/ return this.partOf == null ? new Base[0] : this.partOf.toArray(new Base[this.partOf.size()]); // Reference
1267        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<BiologicallyDerivedProductDispenseCodes>
1268        case 1746240728: /*originRelationshipType*/ return this.originRelationshipType == null ? new Base[0] : new Base[] {this.originRelationshipType}; // CodeableConcept
1269        case -309474065: /*product*/ return this.product == null ? new Base[0] : new Base[] {this.product}; // Reference
1270        case -791418107: /*patient*/ return this.patient == null ? new Base[0] : new Base[] {this.patient}; // Reference
1271        case 1644523031: /*matchStatus*/ return this.matchStatus == null ? new Base[0] : new Base[] {this.matchStatus}; // CodeableConcept
1272        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : this.performer.toArray(new Base[this.performer.size()]); // BiologicallyDerivedProductDispensePerformerComponent
1273        case 1901043637: /*location*/ return this.location == null ? new Base[0] : new Base[] {this.location}; // Reference
1274        case -1285004149: /*quantity*/ return this.quantity == null ? new Base[0] : new Base[] {this.quantity}; // Quantity
1275        case -2024959605: /*preparedDate*/ return this.preparedDate == null ? new Base[0] : new Base[] {this.preparedDate}; // DateTimeType
1276        case -940241380: /*whenHandedOver*/ return this.whenHandedOver == null ? new Base[0] : new Base[] {this.whenHandedOver}; // DateTimeType
1277        case -1429847026: /*destination*/ return this.destination == null ? new Base[0] : new Base[] {this.destination}; // Reference
1278        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1279        case 2138372141: /*usageInstruction*/ return this.usageInstruction == null ? new Base[0] : new Base[] {this.usageInstruction}; // StringType
1280        default: return super.getProperty(hash, name, checkValid);
1281        }
1282
1283      }
1284
1285      @Override
1286      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1287        switch (hash) {
1288        case -1618432855: // identifier
1289          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1290          return value;
1291        case -332612366: // basedOn
1292          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
1293          return value;
1294        case -995410646: // partOf
1295          this.getPartOf().add(TypeConvertor.castToReference(value)); // Reference
1296          return value;
1297        case -892481550: // status
1298          value = new BiologicallyDerivedProductDispenseCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
1299          this.status = (Enumeration) value; // Enumeration<BiologicallyDerivedProductDispenseCodes>
1300          return value;
1301        case 1746240728: // originRelationshipType
1302          this.originRelationshipType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1303          return value;
1304        case -309474065: // product
1305          this.product = TypeConvertor.castToReference(value); // Reference
1306          return value;
1307        case -791418107: // patient
1308          this.patient = TypeConvertor.castToReference(value); // Reference
1309          return value;
1310        case 1644523031: // matchStatus
1311          this.matchStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1312          return value;
1313        case 481140686: // performer
1314          this.getPerformer().add((BiologicallyDerivedProductDispensePerformerComponent) value); // BiologicallyDerivedProductDispensePerformerComponent
1315          return value;
1316        case 1901043637: // location
1317          this.location = TypeConvertor.castToReference(value); // Reference
1318          return value;
1319        case -1285004149: // quantity
1320          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
1321          return value;
1322        case -2024959605: // preparedDate
1323          this.preparedDate = TypeConvertor.castToDateTime(value); // DateTimeType
1324          return value;
1325        case -940241380: // whenHandedOver
1326          this.whenHandedOver = TypeConvertor.castToDateTime(value); // DateTimeType
1327          return value;
1328        case -1429847026: // destination
1329          this.destination = TypeConvertor.castToReference(value); // Reference
1330          return value;
1331        case 3387378: // note
1332          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
1333          return value;
1334        case 2138372141: // usageInstruction
1335          this.usageInstruction = TypeConvertor.castToString(value); // StringType
1336          return value;
1337        default: return super.setProperty(hash, name, value);
1338        }
1339
1340      }
1341
1342      @Override
1343      public Base setProperty(String name, Base value) throws FHIRException {
1344        if (name.equals("identifier")) {
1345          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1346        } else if (name.equals("basedOn")) {
1347          this.getBasedOn().add(TypeConvertor.castToReference(value));
1348        } else if (name.equals("partOf")) {
1349          this.getPartOf().add(TypeConvertor.castToReference(value));
1350        } else if (name.equals("status")) {
1351          value = new BiologicallyDerivedProductDispenseCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
1352          this.status = (Enumeration) value; // Enumeration<BiologicallyDerivedProductDispenseCodes>
1353        } else if (name.equals("originRelationshipType")) {
1354          this.originRelationshipType = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1355        } else if (name.equals("product")) {
1356          this.product = TypeConvertor.castToReference(value); // Reference
1357        } else if (name.equals("patient")) {
1358          this.patient = TypeConvertor.castToReference(value); // Reference
1359        } else if (name.equals("matchStatus")) {
1360          this.matchStatus = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1361        } else if (name.equals("performer")) {
1362          this.getPerformer().add((BiologicallyDerivedProductDispensePerformerComponent) value);
1363        } else if (name.equals("location")) {
1364          this.location = TypeConvertor.castToReference(value); // Reference
1365        } else if (name.equals("quantity")) {
1366          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
1367        } else if (name.equals("preparedDate")) {
1368          this.preparedDate = TypeConvertor.castToDateTime(value); // DateTimeType
1369        } else if (name.equals("whenHandedOver")) {
1370          this.whenHandedOver = TypeConvertor.castToDateTime(value); // DateTimeType
1371        } else if (name.equals("destination")) {
1372          this.destination = TypeConvertor.castToReference(value); // Reference
1373        } else if (name.equals("note")) {
1374          this.getNote().add(TypeConvertor.castToAnnotation(value));
1375        } else if (name.equals("usageInstruction")) {
1376          this.usageInstruction = TypeConvertor.castToString(value); // StringType
1377        } else
1378          return super.setProperty(name, value);
1379        return value;
1380      }
1381
1382      @Override
1383      public Base makeProperty(int hash, String name) throws FHIRException {
1384        switch (hash) {
1385        case -1618432855:  return addIdentifier(); 
1386        case -332612366:  return addBasedOn(); 
1387        case -995410646:  return addPartOf(); 
1388        case -892481550:  return getStatusElement();
1389        case 1746240728:  return getOriginRelationshipType();
1390        case -309474065:  return getProduct();
1391        case -791418107:  return getPatient();
1392        case 1644523031:  return getMatchStatus();
1393        case 481140686:  return addPerformer(); 
1394        case 1901043637:  return getLocation();
1395        case -1285004149:  return getQuantity();
1396        case -2024959605:  return getPreparedDateElement();
1397        case -940241380:  return getWhenHandedOverElement();
1398        case -1429847026:  return getDestination();
1399        case 3387378:  return addNote(); 
1400        case 2138372141:  return getUsageInstructionElement();
1401        default: return super.makeProperty(hash, name);
1402        }
1403
1404      }
1405
1406      @Override
1407      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1408        switch (hash) {
1409        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1410        case -332612366: /*basedOn*/ return new String[] {"Reference"};
1411        case -995410646: /*partOf*/ return new String[] {"Reference"};
1412        case -892481550: /*status*/ return new String[] {"code"};
1413        case 1746240728: /*originRelationshipType*/ return new String[] {"CodeableConcept"};
1414        case -309474065: /*product*/ return new String[] {"Reference"};
1415        case -791418107: /*patient*/ return new String[] {"Reference"};
1416        case 1644523031: /*matchStatus*/ return new String[] {"CodeableConcept"};
1417        case 481140686: /*performer*/ return new String[] {};
1418        case 1901043637: /*location*/ return new String[] {"Reference"};
1419        case -1285004149: /*quantity*/ return new String[] {"Quantity"};
1420        case -2024959605: /*preparedDate*/ return new String[] {"dateTime"};
1421        case -940241380: /*whenHandedOver*/ return new String[] {"dateTime"};
1422        case -1429847026: /*destination*/ return new String[] {"Reference"};
1423        case 3387378: /*note*/ return new String[] {"Annotation"};
1424        case 2138372141: /*usageInstruction*/ return new String[] {"string"};
1425        default: return super.getTypesForProperty(hash, name);
1426        }
1427
1428      }
1429
1430      @Override
1431      public Base addChild(String name) throws FHIRException {
1432        if (name.equals("identifier")) {
1433          return addIdentifier();
1434        }
1435        else if (name.equals("basedOn")) {
1436          return addBasedOn();
1437        }
1438        else if (name.equals("partOf")) {
1439          return addPartOf();
1440        }
1441        else if (name.equals("status")) {
1442          throw new FHIRException("Cannot call addChild on a singleton property BiologicallyDerivedProductDispense.status");
1443        }
1444        else if (name.equals("originRelationshipType")) {
1445          this.originRelationshipType = new CodeableConcept();
1446          return this.originRelationshipType;
1447        }
1448        else if (name.equals("product")) {
1449          this.product = new Reference();
1450          return this.product;
1451        }
1452        else if (name.equals("patient")) {
1453          this.patient = new Reference();
1454          return this.patient;
1455        }
1456        else if (name.equals("matchStatus")) {
1457          this.matchStatus = new CodeableConcept();
1458          return this.matchStatus;
1459        }
1460        else if (name.equals("performer")) {
1461          return addPerformer();
1462        }
1463        else if (name.equals("location")) {
1464          this.location = new Reference();
1465          return this.location;
1466        }
1467        else if (name.equals("quantity")) {
1468          this.quantity = new Quantity();
1469          return this.quantity;
1470        }
1471        else if (name.equals("preparedDate")) {
1472          throw new FHIRException("Cannot call addChild on a singleton property BiologicallyDerivedProductDispense.preparedDate");
1473        }
1474        else if (name.equals("whenHandedOver")) {
1475          throw new FHIRException("Cannot call addChild on a singleton property BiologicallyDerivedProductDispense.whenHandedOver");
1476        }
1477        else if (name.equals("destination")) {
1478          this.destination = new Reference();
1479          return this.destination;
1480        }
1481        else if (name.equals("note")) {
1482          return addNote();
1483        }
1484        else if (name.equals("usageInstruction")) {
1485          throw new FHIRException("Cannot call addChild on a singleton property BiologicallyDerivedProductDispense.usageInstruction");
1486        }
1487        else
1488          return super.addChild(name);
1489      }
1490
1491  public String fhirType() {
1492    return "BiologicallyDerivedProductDispense";
1493
1494  }
1495
1496      public BiologicallyDerivedProductDispense copy() {
1497        BiologicallyDerivedProductDispense dst = new BiologicallyDerivedProductDispense();
1498        copyValues(dst);
1499        return dst;
1500      }
1501
1502      public void copyValues(BiologicallyDerivedProductDispense dst) {
1503        super.copyValues(dst);
1504        if (identifier != null) {
1505          dst.identifier = new ArrayList<Identifier>();
1506          for (Identifier i : identifier)
1507            dst.identifier.add(i.copy());
1508        };
1509        if (basedOn != null) {
1510          dst.basedOn = new ArrayList<Reference>();
1511          for (Reference i : basedOn)
1512            dst.basedOn.add(i.copy());
1513        };
1514        if (partOf != null) {
1515          dst.partOf = new ArrayList<Reference>();
1516          for (Reference i : partOf)
1517            dst.partOf.add(i.copy());
1518        };
1519        dst.status = status == null ? null : status.copy();
1520        dst.originRelationshipType = originRelationshipType == null ? null : originRelationshipType.copy();
1521        dst.product = product == null ? null : product.copy();
1522        dst.patient = patient == null ? null : patient.copy();
1523        dst.matchStatus = matchStatus == null ? null : matchStatus.copy();
1524        if (performer != null) {
1525          dst.performer = new ArrayList<BiologicallyDerivedProductDispensePerformerComponent>();
1526          for (BiologicallyDerivedProductDispensePerformerComponent i : performer)
1527            dst.performer.add(i.copy());
1528        };
1529        dst.location = location == null ? null : location.copy();
1530        dst.quantity = quantity == null ? null : quantity.copy();
1531        dst.preparedDate = preparedDate == null ? null : preparedDate.copy();
1532        dst.whenHandedOver = whenHandedOver == null ? null : whenHandedOver.copy();
1533        dst.destination = destination == null ? null : destination.copy();
1534        if (note != null) {
1535          dst.note = new ArrayList<Annotation>();
1536          for (Annotation i : note)
1537            dst.note.add(i.copy());
1538        };
1539        dst.usageInstruction = usageInstruction == null ? null : usageInstruction.copy();
1540      }
1541
1542      protected BiologicallyDerivedProductDispense typedCopy() {
1543        return copy();
1544      }
1545
1546      @Override
1547      public boolean equalsDeep(Base other_) {
1548        if (!super.equalsDeep(other_))
1549          return false;
1550        if (!(other_ instanceof BiologicallyDerivedProductDispense))
1551          return false;
1552        BiologicallyDerivedProductDispense o = (BiologicallyDerivedProductDispense) other_;
1553        return compareDeep(identifier, o.identifier, true) && compareDeep(basedOn, o.basedOn, true) && compareDeep(partOf, o.partOf, true)
1554           && compareDeep(status, o.status, true) && compareDeep(originRelationshipType, o.originRelationshipType, true)
1555           && compareDeep(product, o.product, true) && compareDeep(patient, o.patient, true) && compareDeep(matchStatus, o.matchStatus, true)
1556           && compareDeep(performer, o.performer, true) && compareDeep(location, o.location, true) && compareDeep(quantity, o.quantity, true)
1557           && compareDeep(preparedDate, o.preparedDate, true) && compareDeep(whenHandedOver, o.whenHandedOver, true)
1558           && compareDeep(destination, o.destination, true) && compareDeep(note, o.note, true) && compareDeep(usageInstruction, o.usageInstruction, true)
1559          ;
1560      }
1561
1562      @Override
1563      public boolean equalsShallow(Base other_) {
1564        if (!super.equalsShallow(other_))
1565          return false;
1566        if (!(other_ instanceof BiologicallyDerivedProductDispense))
1567          return false;
1568        BiologicallyDerivedProductDispense o = (BiologicallyDerivedProductDispense) other_;
1569        return compareValues(status, o.status, true) && compareValues(preparedDate, o.preparedDate, true) && compareValues(whenHandedOver, o.whenHandedOver, true)
1570           && compareValues(usageInstruction, o.usageInstruction, true);
1571      }
1572
1573      public boolean isEmpty() {
1574        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, basedOn, partOf
1575          , status, originRelationshipType, product, patient, matchStatus, performer, location
1576          , quantity, preparedDate, whenHandedOver, destination, note, usageInstruction);
1577      }
1578
1579  @Override
1580  public ResourceType getResourceType() {
1581    return ResourceType.BiologicallyDerivedProductDispense;
1582   }
1583
1584 /**
1585   * Search parameter: <b>identifier</b>
1586   * <p>
1587   * Description: <b>The identifier of the dispense</b><br>
1588   * Type: <b>token</b><br>
1589   * Path: <b>BiologicallyDerivedProductDispense.identifier</b><br>
1590   * </p>
1591   */
1592  @SearchParamDefinition(name="identifier", path="BiologicallyDerivedProductDispense.identifier", description="The identifier of the dispense", type="token" )
1593  public static final String SP_IDENTIFIER = "identifier";
1594 /**
1595   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1596   * <p>
1597   * Description: <b>The identifier of the dispense</b><br>
1598   * Type: <b>token</b><br>
1599   * Path: <b>BiologicallyDerivedProductDispense.identifier</b><br>
1600   * </p>
1601   */
1602  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1603
1604 /**
1605   * Search parameter: <b>patient</b>
1606   * <p>
1607   * Description: <b>The identity of a patient for whom to list dispenses</b><br>
1608   * Type: <b>reference</b><br>
1609   * Path: <b>BiologicallyDerivedProductDispense.patient</b><br>
1610   * </p>
1611   */
1612  @SearchParamDefinition(name="patient", path="BiologicallyDerivedProductDispense.patient", description="The identity of a patient for whom to list dispenses", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Patient.class } )
1613  public static final String SP_PATIENT = "patient";
1614 /**
1615   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
1616   * <p>
1617   * Description: <b>The identity of a patient for whom to list dispenses</b><br>
1618   * Type: <b>reference</b><br>
1619   * Path: <b>BiologicallyDerivedProductDispense.patient</b><br>
1620   * </p>
1621   */
1622  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
1623
1624/**
1625   * Constant for fluent queries to be used to add include statements. Specifies
1626   * the path value of "<b>BiologicallyDerivedProductDispense:patient</b>".
1627   */
1628  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("BiologicallyDerivedProductDispense:patient").toLocked();
1629
1630 /**
1631   * Search parameter: <b>performer</b>
1632   * <p>
1633   * Description: <b>The identity of a patient for whom to list dispenses</b><br>
1634   * Type: <b>reference</b><br>
1635   * Path: <b>BiologicallyDerivedProductDispense.performer.actor</b><br>
1636   * </p>
1637   */
1638  @SearchParamDefinition(name="performer", path="BiologicallyDerivedProductDispense.performer.actor", description="The identity of a patient for whom to list dispenses", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={Practitioner.class } )
1639  public static final String SP_PERFORMER = "performer";
1640 /**
1641   * <b>Fluent Client</b> search parameter constant for <b>performer</b>
1642   * <p>
1643   * Description: <b>The identity of a patient for whom to list dispenses</b><br>
1644   * Type: <b>reference</b><br>
1645   * Path: <b>BiologicallyDerivedProductDispense.performer.actor</b><br>
1646   * </p>
1647   */
1648  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PERFORMER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PERFORMER);
1649
1650/**
1651   * Constant for fluent queries to be used to add include statements. Specifies
1652   * the path value of "<b>BiologicallyDerivedProductDispense:performer</b>".
1653   */
1654  public static final ca.uhn.fhir.model.api.Include INCLUDE_PERFORMER = new ca.uhn.fhir.model.api.Include("BiologicallyDerivedProductDispense:performer").toLocked();
1655
1656 /**
1657   * Search parameter: <b>product</b>
1658   * <p>
1659   * Description: <b>Search for products that match this code</b><br>
1660   * Type: <b>reference</b><br>
1661   * Path: <b>BiologicallyDerivedProductDispense.product</b><br>
1662   * </p>
1663   */
1664  @SearchParamDefinition(name="product", path="BiologicallyDerivedProductDispense.product", description="Search for products that match this code", type="reference", target={BiologicallyDerivedProduct.class } )
1665  public static final String SP_PRODUCT = "product";
1666 /**
1667   * <b>Fluent Client</b> search parameter constant for <b>product</b>
1668   * <p>
1669   * Description: <b>Search for products that match this code</b><br>
1670   * Type: <b>reference</b><br>
1671   * Path: <b>BiologicallyDerivedProductDispense.product</b><br>
1672   * </p>
1673   */
1674  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PRODUCT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PRODUCT);
1675
1676/**
1677   * Constant for fluent queries to be used to add include statements. Specifies
1678   * the path value of "<b>BiologicallyDerivedProductDispense:product</b>".
1679   */
1680  public static final ca.uhn.fhir.model.api.Include INCLUDE_PRODUCT = new ca.uhn.fhir.model.api.Include("BiologicallyDerivedProductDispense:product").toLocked();
1681
1682 /**
1683   * Search parameter: <b>status</b>
1684   * <p>
1685   * Description: <b>The status of the dispense</b><br>
1686   * Type: <b>token</b><br>
1687   * Path: <b>BiologicallyDerivedProductDispense.status</b><br>
1688   * </p>
1689   */
1690  @SearchParamDefinition(name="status", path="BiologicallyDerivedProductDispense.status", description="The status of the dispense", type="token" )
1691  public static final String SP_STATUS = "status";
1692 /**
1693   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1694   * <p>
1695   * Description: <b>The status of the dispense</b><br>
1696   * Type: <b>token</b><br>
1697   * Path: <b>BiologicallyDerivedProductDispense.status</b><br>
1698   * </p>
1699   */
1700  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1701
1702
1703}
1704