001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017package ca.uhn.fhir.model.dstu2.resource;
018
019import java.math.BigDecimal;
020import java.net.URI;
021import java.util.*;
022import ca.uhn.fhir.model.api.*;
023import ca.uhn.fhir.model.api.annotation.*;
024import ca.uhn.fhir.rest.gclient.*;
025
026import ca.uhn.fhir.model.dstu2.valueset.AccountStatusEnum;
027import ca.uhn.fhir.model.dstu2.valueset.ActionListEnum;
028import ca.uhn.fhir.model.dstu2.composite.AddressDt;
029import ca.uhn.fhir.model.dstu2.valueset.AdjudicationCodesEnum;
030import ca.uhn.fhir.model.dstu2.valueset.AdjudicationErrorCodesEnum;
031import ca.uhn.fhir.model.dstu2.valueset.AdjustmentReasonCodesEnum;
032import ca.uhn.fhir.model.dstu2.valueset.AdministrativeGenderEnum;
033import ca.uhn.fhir.model.dstu2.valueset.AdmitSourceEnum;
034import ca.uhn.fhir.model.dstu2.resource.AllergyIntolerance;
035import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCategoryEnum;
036import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCertaintyEnum;
037import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCriticalityEnum;
038import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceSeverityEnum;
039import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceStatusEnum;
040import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceTypeEnum;
041import ca.uhn.fhir.model.dstu2.composite.AnnotationDt;
042import ca.uhn.fhir.model.dstu2.valueset.AnswerFormatEnum;
043import ca.uhn.fhir.model.dstu2.resource.Appointment;
044import ca.uhn.fhir.model.dstu2.valueset.AppointmentStatusEnum;
045import ca.uhn.fhir.model.dstu2.valueset.AssertionDirectionTypeEnum;
046import ca.uhn.fhir.model.dstu2.valueset.AssertionOperatorTypeEnum;
047import ca.uhn.fhir.model.dstu2.valueset.AssertionResponseTypesEnum;
048import ca.uhn.fhir.model.dstu2.composite.AttachmentDt;
049import ca.uhn.fhir.model.dstu2.valueset.AuditEventActionEnum;
050import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectLifecycleEnum;
051import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectRoleEnum;
052import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectTypeEnum;
053import ca.uhn.fhir.model.dstu2.valueset.AuditEventOutcomeEnum;
054import ca.uhn.fhir.model.dstu2.valueset.AuditEventParticipantNetworkTypeEnum;
055import ca.uhn.fhir.model.dstu2.valueset.AuditEventSourceTypeEnum;
056import ca.uhn.fhir.model.dstu2.valueset.BindingStrengthEnum;
057import ca.uhn.fhir.model.dstu2.resource.BodySite;
058import ca.uhn.fhir.model.dstu2.valueset.BundleTypeEnum;
059import ca.uhn.fhir.model.dstu2.resource.CarePlan;
060import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityStatusEnum;
061import ca.uhn.fhir.model.dstu2.valueset.CarePlanRelationshipEnum;
062import ca.uhn.fhir.model.dstu2.valueset.CarePlanStatusEnum;
063import ca.uhn.fhir.model.dstu2.resource.Claim;
064import ca.uhn.fhir.model.dstu2.resource.ClaimResponse;
065import ca.uhn.fhir.model.dstu2.valueset.ClaimTypeEnum;
066import ca.uhn.fhir.model.dstu2.resource.ClinicalImpression;
067import ca.uhn.fhir.model.dstu2.valueset.ClinicalImpressionStatusEnum;
068import ca.uhn.fhir.model.dstu2.composite.CodeableConceptDt;
069import ca.uhn.fhir.model.dstu2.composite.CodingDt;
070import ca.uhn.fhir.model.dstu2.resource.CommunicationRequest;
071import ca.uhn.fhir.model.dstu2.valueset.CommunicationRequestStatusEnum;
072import ca.uhn.fhir.model.dstu2.valueset.CommunicationStatusEnum;
073import ca.uhn.fhir.model.dstu2.resource.Composition;
074import ca.uhn.fhir.model.dstu2.valueset.CompositionAttestationModeEnum;
075import ca.uhn.fhir.model.dstu2.valueset.CompositionStatusEnum;
076import ca.uhn.fhir.model.dstu2.valueset.ConceptMapEquivalenceEnum;
077import ca.uhn.fhir.model.dstu2.resource.Condition;
078import ca.uhn.fhir.model.dstu2.valueset.ConditionCategoryCodesEnum;
079import ca.uhn.fhir.model.dstu2.valueset.ConditionClinicalStatusCodesEnum;
080import ca.uhn.fhir.model.dstu2.valueset.ConditionVerificationStatusEnum;
081import ca.uhn.fhir.model.dstu2.valueset.ConditionalDeleteStatusEnum;
082import ca.uhn.fhir.model.dstu2.resource.Conformance;
083import ca.uhn.fhir.model.dstu2.valueset.ConformanceEventModeEnum;
084import ca.uhn.fhir.model.dstu2.valueset.ConformanceResourceStatusEnum;
085import ca.uhn.fhir.model.dstu2.valueset.ConformanceStatementKindEnum;
086import ca.uhn.fhir.model.dstu2.composite.ContactPointDt;
087import ca.uhn.fhir.model.dstu2.valueset.ContentTypeEnum;
088import ca.uhn.fhir.model.dstu2.resource.Contract;
089import ca.uhn.fhir.model.dstu2.resource.Coverage;
090import ca.uhn.fhir.model.dstu2.valueset.DataElementStringencyEnum;
091import ca.uhn.fhir.model.dstu2.valueset.DaysOfWeekEnum;
092import ca.uhn.fhir.model.dstu2.valueset.DetectedIssueSeverityEnum;
093import ca.uhn.fhir.model.dstu2.resource.Device;
094import ca.uhn.fhir.model.dstu2.resource.DeviceComponent;
095import ca.uhn.fhir.model.dstu2.resource.DeviceMetric;
096import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationStateEnum;
097import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationTypeEnum;
098import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCategoryEnum;
099import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricColorEnum;
100import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricOperationalStatusEnum;
101import ca.uhn.fhir.model.dstu2.valueset.DeviceStatusEnum;
102import ca.uhn.fhir.model.dstu2.resource.DeviceUseRequest;
103import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestPriorityEnum;
104import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestStatusEnum;
105import ca.uhn.fhir.model.dstu2.resource.DiagnosticOrder;
106import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderPriorityEnum;
107import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderStatusEnum;
108import ca.uhn.fhir.model.dstu2.resource.DiagnosticReport;
109import ca.uhn.fhir.model.dstu2.valueset.DiagnosticReportStatusEnum;
110import ca.uhn.fhir.model.dstu2.valueset.DigitalMediaTypeEnum;
111import ca.uhn.fhir.model.dstu2.valueset.DocumentModeEnum;
112import ca.uhn.fhir.model.dstu2.resource.DocumentReference;
113import ca.uhn.fhir.model.dstu2.valueset.DocumentReferenceStatusEnum;
114import ca.uhn.fhir.model.dstu2.valueset.DocumentRelationshipTypeEnum;
115import ca.uhn.fhir.model.dstu2.composite.ElementDefinitionDt;
116import ca.uhn.fhir.model.dstu2.resource.EligibilityRequest;
117import ca.uhn.fhir.model.dstu2.resource.Encounter;
118import ca.uhn.fhir.model.dstu2.valueset.EncounterClassEnum;
119import ca.uhn.fhir.model.dstu2.valueset.EncounterLocationStatusEnum;
120import ca.uhn.fhir.model.dstu2.valueset.EncounterStateEnum;
121import ca.uhn.fhir.model.dstu2.resource.EnrollmentRequest;
122import ca.uhn.fhir.model.dstu2.resource.EpisodeOfCare;
123import ca.uhn.fhir.model.dstu2.valueset.EpisodeOfCareStatusEnum;
124import ca.uhn.fhir.model.dstu2.valueset.ExtensionContextEnum;
125import ca.uhn.fhir.model.dstu2.valueset.FamilyHistoryStatusEnum;
126import ca.uhn.fhir.model.dstu2.resource.FamilyMemberHistory;
127import ca.uhn.fhir.model.dstu2.valueset.FilterOperatorEnum;
128import ca.uhn.fhir.model.dstu2.valueset.FlagStatusEnum;
129import ca.uhn.fhir.model.dstu2.resource.Goal;
130import ca.uhn.fhir.model.dstu2.valueset.GoalPriorityEnum;
131import ca.uhn.fhir.model.dstu2.valueset.GoalStatusEnum;
132import ca.uhn.fhir.model.dstu2.resource.Group;
133import ca.uhn.fhir.model.dstu2.valueset.GroupTypeEnum;
134import ca.uhn.fhir.model.dstu2.valueset.GuideDependencyTypeEnum;
135import ca.uhn.fhir.model.dstu2.valueset.GuidePageKindEnum;
136import ca.uhn.fhir.model.dstu2.valueset.GuideResourcePurposeEnum;
137import ca.uhn.fhir.model.dstu2.valueset.HTTPVerbEnum;
138import ca.uhn.fhir.model.dstu2.resource.HealthcareService;
139import ca.uhn.fhir.model.dstu2.composite.HumanNameDt;
140import ca.uhn.fhir.model.dstu2.composite.IdentifierDt;
141import ca.uhn.fhir.model.dstu2.valueset.IdentifierTypeCodesEnum;
142import ca.uhn.fhir.model.dstu2.valueset.IdentityAssuranceLevelEnum;
143import ca.uhn.fhir.model.dstu2.resource.ImagingObjectSelection;
144import ca.uhn.fhir.model.dstu2.resource.ImagingStudy;
145import ca.uhn.fhir.model.dstu2.resource.Immunization;
146import ca.uhn.fhir.model.dstu2.valueset.InstanceAvailabilityEnum;
147import ca.uhn.fhir.model.dstu2.valueset.IssueSeverityEnum;
148import ca.uhn.fhir.model.dstu2.valueset.IssueTypeEnum;
149import ca.uhn.fhir.model.dstu2.valueset.KOStitleEnum;
150import ca.uhn.fhir.model.dstu2.valueset.LinkTypeEnum;
151import ca.uhn.fhir.model.dstu2.valueset.ListModeEnum;
152import ca.uhn.fhir.model.dstu2.valueset.ListOrderCodesEnum;
153import ca.uhn.fhir.model.dstu2.valueset.ListStatusEnum;
154import ca.uhn.fhir.model.dstu2.resource.Location;
155import ca.uhn.fhir.model.dstu2.valueset.LocationModeEnum;
156import ca.uhn.fhir.model.dstu2.valueset.LocationStatusEnum;
157import ca.uhn.fhir.model.dstu2.valueset.LocationTypeEnum;
158import ca.uhn.fhir.model.dstu2.valueset.MaritalStatusCodesEnum;
159import ca.uhn.fhir.model.dstu2.valueset.MeasmntPrincipleEnum;
160import ca.uhn.fhir.model.dstu2.resource.Media;
161import ca.uhn.fhir.model.dstu2.resource.Medication;
162import ca.uhn.fhir.model.dstu2.valueset.MedicationAdministrationStatusEnum;
163import ca.uhn.fhir.model.dstu2.valueset.MedicationDispenseStatusEnum;
164import ca.uhn.fhir.model.dstu2.resource.MedicationOrder;
165import ca.uhn.fhir.model.dstu2.valueset.MedicationOrderStatusEnum;
166import ca.uhn.fhir.model.dstu2.resource.MedicationStatement;
167import ca.uhn.fhir.model.dstu2.valueset.MedicationStatementStatusEnum;
168import ca.uhn.fhir.model.dstu2.valueset.MessageEventEnum;
169import ca.uhn.fhir.model.dstu2.valueset.MessageSignificanceCategoryEnum;
170import ca.uhn.fhir.model.dstu2.valueset.MessageTransportEnum;
171import ca.uhn.fhir.model.dstu2.resource.NamingSystem;
172import ca.uhn.fhir.model.dstu2.valueset.NamingSystemIdentifierTypeEnum;
173import ca.uhn.fhir.model.dstu2.valueset.NamingSystemTypeEnum;
174import ca.uhn.fhir.model.dstu2.valueset.NoteTypeEnum;
175import ca.uhn.fhir.model.dstu2.resource.NutritionOrder;
176import ca.uhn.fhir.model.dstu2.valueset.NutritionOrderStatusEnum;
177import ca.uhn.fhir.model.dstu2.resource.Observation;
178import ca.uhn.fhir.model.dstu2.valueset.ObservationRelationshipTypeEnum;
179import ca.uhn.fhir.model.dstu2.valueset.ObservationStatusEnum;
180import ca.uhn.fhir.model.dstu2.resource.OperationDefinition;
181import ca.uhn.fhir.model.dstu2.valueset.OperationKindEnum;
182import ca.uhn.fhir.model.dstu2.resource.OperationOutcome;
183import ca.uhn.fhir.model.dstu2.valueset.OperationParameterUseEnum;
184import ca.uhn.fhir.model.dstu2.resource.Order;
185import ca.uhn.fhir.model.dstu2.valueset.OrderStatusEnum;
186import ca.uhn.fhir.model.dstu2.resource.Organization;
187import ca.uhn.fhir.model.dstu2.valueset.ParticipantRequiredEnum;
188import ca.uhn.fhir.model.dstu2.valueset.ParticipantStatusEnum;
189import ca.uhn.fhir.model.dstu2.valueset.ParticipantTypeEnum;
190import ca.uhn.fhir.model.dstu2.valueset.ParticipationStatusEnum;
191import ca.uhn.fhir.model.dstu2.resource.Patient;
192import ca.uhn.fhir.model.dstu2.valueset.PayeeTypeCodesEnum;
193import ca.uhn.fhir.model.dstu2.composite.PeriodDt;
194import ca.uhn.fhir.model.dstu2.resource.Person;
195import ca.uhn.fhir.model.dstu2.resource.Practitioner;
196import ca.uhn.fhir.model.dstu2.resource.Procedure;
197import ca.uhn.fhir.model.dstu2.resource.ProcedureRequest;
198import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestPriorityEnum;
199import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestStatusEnum;
200import ca.uhn.fhir.model.dstu2.valueset.ProcedureStatusEnum;
201import ca.uhn.fhir.model.dstu2.resource.ProcessRequest;
202import ca.uhn.fhir.model.dstu2.valueset.ProvenanceEntityRoleEnum;
203import ca.uhn.fhir.model.dstu2.composite.QuantityDt;
204import ca.uhn.fhir.model.dstu2.resource.Questionnaire;
205import ca.uhn.fhir.model.dstu2.resource.QuestionnaireResponse;
206import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireResponseStatusEnum;
207import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireStatusEnum;
208import ca.uhn.fhir.model.dstu2.composite.RangeDt;
209import ca.uhn.fhir.model.dstu2.composite.RatioDt;
210import ca.uhn.fhir.model.dstu2.valueset.ReferralMethodEnum;
211import ca.uhn.fhir.model.dstu2.resource.ReferralRequest;
212import ca.uhn.fhir.model.dstu2.valueset.ReferralStatusEnum;
213import ca.uhn.fhir.model.dstu2.resource.RelatedPerson;
214import ca.uhn.fhir.model.dstu2.valueset.RemittanceOutcomeEnum;
215import ca.uhn.fhir.model.dstu2.valueset.ResourceTypeEnum;
216import ca.uhn.fhir.model.dstu2.valueset.ResourceVersionPolicyEnum;
217import ca.uhn.fhir.model.dstu2.valueset.ResponseTypeEnum;
218import ca.uhn.fhir.model.dstu2.valueset.RestfulConformanceModeEnum;
219import ca.uhn.fhir.model.dstu2.valueset.RestfulSecurityServiceEnum;
220import ca.uhn.fhir.model.dstu2.resource.RiskAssessment;
221import ca.uhn.fhir.model.dstu2.valueset.RulesetCodesEnum;
222import ca.uhn.fhir.model.dstu2.composite.SampledDataDt;
223import ca.uhn.fhir.model.dstu2.resource.Schedule;
224import ca.uhn.fhir.model.dstu2.valueset.SearchEntryModeEnum;
225import ca.uhn.fhir.model.dstu2.valueset.SearchModifierCodeEnum;
226import ca.uhn.fhir.model.dstu2.valueset.SearchParamTypeEnum;
227import ca.uhn.fhir.model.dstu2.valueset.ServiceProvisionConditionsEnum;
228import ca.uhn.fhir.model.dstu2.composite.SignatureDt;
229import ca.uhn.fhir.model.dstu2.resource.Slot;
230import ca.uhn.fhir.model.dstu2.valueset.SlotStatusEnum;
231import ca.uhn.fhir.model.dstu2.resource.Specimen;
232import ca.uhn.fhir.model.dstu2.valueset.SpecimenStatusEnum;
233import ca.uhn.fhir.model.dstu2.resource.StructureDefinition;
234import ca.uhn.fhir.model.dstu2.valueset.StructureDefinitionKindEnum;
235import ca.uhn.fhir.model.dstu2.valueset.SubscriptionChannelTypeEnum;
236import ca.uhn.fhir.model.dstu2.valueset.SubscriptionStatusEnum;
237import ca.uhn.fhir.model.dstu2.resource.Substance;
238import ca.uhn.fhir.model.dstu2.valueset.SubstanceCategoryCodesEnum;
239import ca.uhn.fhir.model.dstu2.valueset.SupplyDeliveryStatusEnum;
240import ca.uhn.fhir.model.dstu2.resource.SupplyRequest;
241import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestStatusEnum;
242import ca.uhn.fhir.model.dstu2.valueset.SystemRestfulInteractionEnum;
243import ca.uhn.fhir.model.api.TemporalPrecisionEnum;
244import ca.uhn.fhir.model.dstu2.composite.TimingDt;
245import ca.uhn.fhir.model.dstu2.valueset.TransactionModeEnum;
246import ca.uhn.fhir.model.dstu2.valueset.TypeRestfulInteractionEnum;
247import ca.uhn.fhir.model.dstu2.valueset.UnknownContentCodeEnum;
248import ca.uhn.fhir.model.dstu2.valueset.UseEnum;
249import ca.uhn.fhir.model.dstu2.resource.ValueSet;
250import ca.uhn.fhir.model.dstu2.valueset.VisionBaseEnum;
251import ca.uhn.fhir.model.dstu2.valueset.VisionEyesEnum;
252import ca.uhn.fhir.model.dstu2.resource.VisionPrescription;
253import ca.uhn.fhir.model.dstu2.valueset.XPathUsageTypeEnum;
254import ca.uhn.fhir.model.api.IResource;
255import ca.uhn.fhir.model.dstu2.composite.AgeDt;
256import ca.uhn.fhir.model.dstu2.composite.BoundCodeableConceptDt;
257import ca.uhn.fhir.model.dstu2.composite.DurationDt;
258import ca.uhn.fhir.model.dstu2.composite.MoneyDt;
259import ca.uhn.fhir.model.dstu2.composite.NarrativeDt;
260import ca.uhn.fhir.model.dstu2.composite.ResourceReferenceDt;
261import ca.uhn.fhir.model.dstu2.composite.SimpleQuantityDt;
262import ca.uhn.fhir.model.primitive.Base64BinaryDt;
263import ca.uhn.fhir.model.primitive.BooleanDt;
264import ca.uhn.fhir.model.primitive.BoundCodeDt;
265import ca.uhn.fhir.model.primitive.CodeDt;
266import ca.uhn.fhir.model.primitive.DateDt;
267import ca.uhn.fhir.model.primitive.DateTimeDt;
268import ca.uhn.fhir.model.primitive.DecimalDt;
269import ca.uhn.fhir.model.primitive.IdDt;
270import ca.uhn.fhir.model.primitive.InstantDt;
271import ca.uhn.fhir.model.primitive.IntegerDt;
272import ca.uhn.fhir.model.primitive.OidDt;
273import ca.uhn.fhir.model.primitive.PositiveIntDt;
274import ca.uhn.fhir.model.primitive.StringDt;
275import ca.uhn.fhir.model.primitive.TimeDt;
276import ca.uhn.fhir.model.primitive.UnsignedIntDt;
277import ca.uhn.fhir.model.primitive.UriDt;
278
279
280/**
281 * HAPI/FHIR <b>MedicationDispense</b> Resource
282 * (clinical.medication)
283 *
284 * <p>
285 * <b>Definition:</b>
286 * Indicates that a medication product is to be or has been dispensed for a named person/patient.  This includes a description of the medication product (supply) provided and the instructions for administering the medication.  The medication dispense is the result of a pharmacy system responding to a medication order.
287 * </p> 
288 *
289 * <p>
290 * <b>Requirements:</b>
291 * 
292 * </p> 
293 *
294 * <p>
295 * <b>Profile Definition:</b>
296 * <a href="http://hl7.org/fhir/profiles/MedicationDispense">http://hl7.org/fhir/profiles/MedicationDispense</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="MedicationDispense", profile="http://hl7.org/fhir/profiles/MedicationDispense", id="medicationdispense")
301public class MedicationDispense extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource 
303    {
304
305        /**
306         * Search parameter constant for <b>destination</b>
307         * <p>
308         * Description: <b>Return dispenses that should be sent to a specific destination</b><br>
309         * Type: <b>reference</b><br>
310         * Path: <b>MedicationDispense.destination</b><br>
311         * </p>
312         */
313        @SearchParamDefinition(name="destination", path="MedicationDispense.destination", description="Return dispenses that should be sent to a specific destination", type="reference" 
314 )
315        public static final String SP_DESTINATION = "destination";
316
317        /**
318         * <b>Fluent Client</b> search parameter constant for <b>destination</b>
319         * <p>
320         * Description: <b>Return dispenses that should be sent to a specific destination</b><br>
321         * Type: <b>reference</b><br>
322         * Path: <b>MedicationDispense.destination</b><br>
323         * </p>
324         */
325        public static final ReferenceClientParam DESTINATION = new ReferenceClientParam(SP_DESTINATION);
326
327        /**
328         * Search parameter constant for <b>dispenser</b>
329         * <p>
330         * Description: <b>Return all dispenses performed by a specific individual</b><br>
331         * Type: <b>reference</b><br>
332         * Path: <b>MedicationDispense.dispenser</b><br>
333         * </p>
334         */
335        @SearchParamDefinition(name="dispenser", path="MedicationDispense.dispenser", description="Return all dispenses performed by a specific individual", type="reference" 
336, providesMembershipIn={
337 @Compartment(name="Encounter")         }
338 )
339        public static final String SP_DISPENSER = "dispenser";
340
341        /**
342         * <b>Fluent Client</b> search parameter constant for <b>dispenser</b>
343         * <p>
344         * Description: <b>Return all dispenses performed by a specific individual</b><br>
345         * Type: <b>reference</b><br>
346         * Path: <b>MedicationDispense.dispenser</b><br>
347         * </p>
348         */
349        public static final ReferenceClientParam DISPENSER = new ReferenceClientParam(SP_DISPENSER);
350
351        /**
352         * Search parameter constant for <b>identifier</b>
353         * <p>
354         * Description: <b>Return dispenses with this external identifier</b><br>
355         * Type: <b>token</b><br>
356         * Path: <b>MedicationDispense.identifier</b><br>
357         * </p>
358         */
359        @SearchParamDefinition(name="identifier", path="MedicationDispense.identifier", description="Return dispenses with this external identifier", type="token" 
360 )
361        public static final String SP_IDENTIFIER = "identifier";
362
363        /**
364         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
365         * <p>
366         * Description: <b>Return dispenses with this external identifier</b><br>
367         * Type: <b>token</b><br>
368         * Path: <b>MedicationDispense.identifier</b><br>
369         * </p>
370         */
371        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
372
373        /**
374         * Search parameter constant for <b>medication</b>
375         * <p>
376         * Description: <b>Return dispenses of this medicine resource</b><br>
377         * Type: <b>reference</b><br>
378         * Path: <b>MedicationDispense.medicationReference</b><br>
379         * </p>
380         */
381        @SearchParamDefinition(name="medication", path="MedicationDispense.medicationReference", description="Return dispenses of this medicine resource", type="reference" 
382 )
383        public static final String SP_MEDICATION = "medication";
384
385        /**
386         * <b>Fluent Client</b> search parameter constant for <b>medication</b>
387         * <p>
388         * Description: <b>Return dispenses of this medicine resource</b><br>
389         * Type: <b>reference</b><br>
390         * Path: <b>MedicationDispense.medicationReference</b><br>
391         * </p>
392         */
393        public static final ReferenceClientParam MEDICATION = new ReferenceClientParam(SP_MEDICATION);
394
395        /**
396         * Search parameter constant for <b>code</b>
397         * <p>
398         * Description: <b>Return dispenses of this medicine code</b><br>
399         * Type: <b>token</b><br>
400         * Path: <b>MedicationDispense.medicationCodeableConcept</b><br>
401         * </p>
402         */
403        @SearchParamDefinition(name="code", path="MedicationDispense.medicationCodeableConcept", description="Return dispenses of this medicine code", type="token" 
404 )
405        public static final String SP_CODE = "code";
406
407        /**
408         * <b>Fluent Client</b> search parameter constant for <b>code</b>
409         * <p>
410         * Description: <b>Return dispenses of this medicine code</b><br>
411         * Type: <b>token</b><br>
412         * Path: <b>MedicationDispense.medicationCodeableConcept</b><br>
413         * </p>
414         */
415        public static final TokenClientParam CODE = new TokenClientParam(SP_CODE);
416
417        /**
418         * Search parameter constant for <b>patient</b>
419         * <p>
420         * Description: <b>The identity of a patient to list dispenses  for</b><br>
421         * Type: <b>reference</b><br>
422         * Path: <b>MedicationDispense.patient</b><br>
423         * </p>
424         */
425        @SearchParamDefinition(name="patient", path="MedicationDispense.patient", description="The identity of a patient to list dispenses  for", type="reference" 
426, providesMembershipIn={
427 @Compartment(name="Patient")   }
428 )
429        public static final String SP_PATIENT = "patient";
430
431        /**
432         * <b>Fluent Client</b> search parameter constant for <b>patient</b>
433         * <p>
434         * Description: <b>The identity of a patient to list dispenses  for</b><br>
435         * Type: <b>reference</b><br>
436         * Path: <b>MedicationDispense.patient</b><br>
437         * </p>
438         */
439        public static final ReferenceClientParam PATIENT = new ReferenceClientParam(SP_PATIENT);
440
441        /**
442         * Search parameter constant for <b>prescription</b>
443         * <p>
444         * Description: <b>The identity of a prescription to list dispenses from</b><br>
445         * Type: <b>reference</b><br>
446         * Path: <b>MedicationDispense.authorizingPrescription</b><br>
447         * </p>
448         */
449        @SearchParamDefinition(name="prescription", path="MedicationDispense.authorizingPrescription", description="The identity of a prescription to list dispenses from", type="reference" 
450 )
451        public static final String SP_PRESCRIPTION = "prescription";
452
453        /**
454         * <b>Fluent Client</b> search parameter constant for <b>prescription</b>
455         * <p>
456         * Description: <b>The identity of a prescription to list dispenses from</b><br>
457         * Type: <b>reference</b><br>
458         * Path: <b>MedicationDispense.authorizingPrescription</b><br>
459         * </p>
460         */
461        public static final ReferenceClientParam PRESCRIPTION = new ReferenceClientParam(SP_PRESCRIPTION);
462
463        /**
464         * Search parameter constant for <b>responsibleparty</b>
465         * <p>
466         * Description: <b>Return all dispenses with the specified responsible party</b><br>
467         * Type: <b>reference</b><br>
468         * Path: <b>MedicationDispense.substitution.responsibleParty</b><br>
469         * </p>
470         */
471        @SearchParamDefinition(name="responsibleparty", path="MedicationDispense.substitution.responsibleParty", description="Return all dispenses with the specified responsible party", type="reference" 
472, providesMembershipIn={
473 @Compartment(name="Encounter")         }
474 )
475        public static final String SP_RESPONSIBLEPARTY = "responsibleparty";
476
477        /**
478         * <b>Fluent Client</b> search parameter constant for <b>responsibleparty</b>
479         * <p>
480         * Description: <b>Return all dispenses with the specified responsible party</b><br>
481         * Type: <b>reference</b><br>
482         * Path: <b>MedicationDispense.substitution.responsibleParty</b><br>
483         * </p>
484         */
485        public static final ReferenceClientParam RESPONSIBLEPARTY = new ReferenceClientParam(SP_RESPONSIBLEPARTY);
486
487        /**
488         * Search parameter constant for <b>status</b>
489         * <p>
490         * Description: <b>Status of the dispense</b><br>
491         * Type: <b>token</b><br>
492         * Path: <b>MedicationDispense.status</b><br>
493         * </p>
494         */
495        @SearchParamDefinition(name="status", path="MedicationDispense.status", description="Status of the dispense", type="token" 
496 )
497        public static final String SP_STATUS = "status";
498
499        /**
500         * <b>Fluent Client</b> search parameter constant for <b>status</b>
501         * <p>
502         * Description: <b>Status of the dispense</b><br>
503         * Type: <b>token</b><br>
504         * Path: <b>MedicationDispense.status</b><br>
505         * </p>
506         */
507        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
508
509        /**
510         * Search parameter constant for <b>type</b>
511         * <p>
512         * Description: <b>Return all dispenses of a specific type</b><br>
513         * Type: <b>token</b><br>
514         * Path: <b>MedicationDispense.type</b><br>
515         * </p>
516         */
517        @SearchParamDefinition(name="type", path="MedicationDispense.type", description="Return all dispenses of a specific type", type="token" 
518 )
519        public static final String SP_TYPE = "type";
520
521        /**
522         * <b>Fluent Client</b> search parameter constant for <b>type</b>
523         * <p>
524         * Description: <b>Return all dispenses of a specific type</b><br>
525         * Type: <b>token</b><br>
526         * Path: <b>MedicationDispense.type</b><br>
527         * </p>
528         */
529        public static final TokenClientParam TYPE = new TokenClientParam(SP_TYPE);
530
531        /**
532         * Search parameter constant for <b>whenhandedover</b>
533         * <p>
534         * Description: <b>Date when medication handed over to patient (outpatient setting), or supplied to ward or clinic (inpatient setting)</b><br>
535         * Type: <b>date</b><br>
536         * Path: <b>MedicationDispense.whenHandedOver</b><br>
537         * </p>
538         */
539        @SearchParamDefinition(name="whenhandedover", path="MedicationDispense.whenHandedOver", description="Date when medication handed over to patient (outpatient setting), or supplied to ward or clinic (inpatient setting)", type="date" 
540 )
541        public static final String SP_WHENHANDEDOVER = "whenhandedover";
542
543        /**
544         * <b>Fluent Client</b> search parameter constant for <b>whenhandedover</b>
545         * <p>
546         * Description: <b>Date when medication handed over to patient (outpatient setting), or supplied to ward or clinic (inpatient setting)</b><br>
547         * Type: <b>date</b><br>
548         * Path: <b>MedicationDispense.whenHandedOver</b><br>
549         * </p>
550         */
551        public static final DateClientParam WHENHANDEDOVER = new DateClientParam(SP_WHENHANDEDOVER);
552
553        /**
554         * Search parameter constant for <b>whenprepared</b>
555         * <p>
556         * Description: <b>Date when medication prepared</b><br>
557         * Type: <b>date</b><br>
558         * Path: <b>MedicationDispense.whenPrepared</b><br>
559         * </p>
560         */
561        @SearchParamDefinition(name="whenprepared", path="MedicationDispense.whenPrepared", description="Date when medication prepared", type="date" 
562 )
563        public static final String SP_WHENPREPARED = "whenprepared";
564
565        /**
566         * <b>Fluent Client</b> search parameter constant for <b>whenprepared</b>
567         * <p>
568         * Description: <b>Date when medication prepared</b><br>
569         * Type: <b>date</b><br>
570         * Path: <b>MedicationDispense.whenPrepared</b><br>
571         * </p>
572         */
573        public static final DateClientParam WHENPREPARED = new DateClientParam(SP_WHENPREPARED);
574
575        /**
576         * Search parameter constant for <b>receiver</b>
577         * <p>
578         * Description: <b></b><br>
579         * Type: <b>reference</b><br>
580         * Path: <b>MedicationDispense.receiver</b><br>
581         * </p>
582         */
583        @SearchParamDefinition(name="receiver", path="MedicationDispense.receiver", description="", type="reference" 
584, providesMembershipIn={
585 @Compartment(name="Encounter")         }
586 )
587        public static final String SP_RECEIVER = "receiver";
588
589        /**
590         * <b>Fluent Client</b> search parameter constant for <b>receiver</b>
591         * <p>
592         * Description: <b></b><br>
593         * Type: <b>reference</b><br>
594         * Path: <b>MedicationDispense.receiver</b><br>
595         * </p>
596         */
597        public static final ReferenceClientParam RECEIVER = new ReferenceClientParam(SP_RECEIVER);
598
599
600        /**
601         * Constant for fluent queries to be used to add include statements. Specifies
602         * the path value of "<b>MedicationDispense:destination</b>".
603         */
604        public static final Include INCLUDE_DESTINATION = new Include("MedicationDispense:destination");
605
606        /**
607         * Constant for fluent queries to be used to add include statements. Specifies
608         * the path value of "<b>MedicationDispense:dispenser</b>".
609         */
610        public static final Include INCLUDE_DISPENSER = new Include("MedicationDispense:dispenser");
611
612        /**
613         * Constant for fluent queries to be used to add include statements. Specifies
614         * the path value of "<b>MedicationDispense:medication</b>".
615         */
616        public static final Include INCLUDE_MEDICATION = new Include("MedicationDispense:medication");
617
618        /**
619         * Constant for fluent queries to be used to add include statements. Specifies
620         * the path value of "<b>MedicationDispense:patient</b>".
621         */
622        public static final Include INCLUDE_PATIENT = new Include("MedicationDispense:patient");
623
624        /**
625         * Constant for fluent queries to be used to add include statements. Specifies
626         * the path value of "<b>MedicationDispense:prescription</b>".
627         */
628        public static final Include INCLUDE_PRESCRIPTION = new Include("MedicationDispense:prescription");
629
630        /**
631         * Constant for fluent queries to be used to add include statements. Specifies
632         * the path value of "<b>MedicationDispense:receiver</b>".
633         */
634        public static final Include INCLUDE_RECEIVER = new Include("MedicationDispense:receiver");
635
636        /**
637         * Constant for fluent queries to be used to add include statements. Specifies
638         * the path value of "<b>MedicationDispense:responsibleparty</b>".
639         */
640        public static final Include INCLUDE_RESPONSIBLEPARTY = new Include("MedicationDispense:responsibleparty");
641
642
643        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=1, summary=false, modifier=false)        
644        @Description(
645                shortDefinition="id",
646                formalDefinition="Identifier assigned by the dispensing facility - this is an identifier assigned outside FHIR."
647        )
648        private IdentifierDt myIdentifier;
649        
650        @Child(name="status", type=CodeDt.class, order=1, min=0, max=1, summary=false, modifier=true)   
651        @Description(
652                shortDefinition="status",
653                formalDefinition="A code specifying the state of the set of dispense events."
654        )
655        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/medication-dispense-status")
656        private BoundCodeDt<MedicationDispenseStatusEnum> myStatus;
657        
658        @Child(name="patient", order=2, min=0, max=1, summary=false, modifier=false, type={
659                ca.uhn.fhir.model.dstu2.resource.Patient.class
660        })
661        @Description(
662                shortDefinition="who.focus",
663                formalDefinition="A link to a resource representing the person to whom the medication will be given."
664        )
665        private ResourceReferenceDt myPatient;
666        
667        @Child(name="dispenser", order=3, min=0, max=1, summary=false, modifier=false, type={
668                ca.uhn.fhir.model.dstu2.resource.Practitioner.class
669        })
670        @Description(
671                shortDefinition="who.actor",
672                formalDefinition="The individual responsible for dispensing the medication"
673        )
674        private ResourceReferenceDt myDispenser;
675        
676        @Child(name="authorizingPrescription", order=4, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
677                ca.uhn.fhir.model.dstu2.resource.MedicationOrder.class
678        })
679        @Description(
680                shortDefinition="",
681                formalDefinition="Indicates the medication order that is being dispensed against."
682        )
683        private java.util.List<ResourceReferenceDt> myAuthorizingPrescription;
684        
685        @Child(name="type", type=CodeableConceptDt.class, order=5, min=0, max=1, summary=false, modifier=false) 
686        @Description(
687                shortDefinition="",
688                formalDefinition="Indicates the type of dispensing event that is performed. For example, Trial Fill, Completion of Trial, Partial Fill, Emergency Fill, Samples, etc."
689        )
690        private CodeableConceptDt myType;
691        
692        @Child(name="quantity", type=SimpleQuantityDt.class, order=6, min=0, max=1, summary=false, modifier=false)      
693        @Description(
694                shortDefinition="",
695                formalDefinition="The amount of medication that has been dispensed. Includes unit of measure."
696        )
697        private SimpleQuantityDt myQuantity;
698        
699        @Child(name="daysSupply", type=SimpleQuantityDt.class, order=7, min=0, max=1, summary=false, modifier=false)    
700        @Description(
701                shortDefinition="",
702                formalDefinition="The amount of medication expressed as a timing amount."
703        )
704        private SimpleQuantityDt myDaysSupply;
705        
706        @Child(name="medication", order=8, min=1, max=1, summary=false, modifier=false, type={
707                CodeableConceptDt.class, 
708                Medication.class
709        })
710        @Description(
711                shortDefinition="",
712                formalDefinition="Identifies the medication being administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications."
713        )
714        private IDatatype myMedication;
715        
716        @Child(name="whenPrepared", type=DateTimeDt.class, order=9, min=0, max=1, summary=false, modifier=false)        
717        @Description(
718                shortDefinition="",
719                formalDefinition="The time when the dispensed product was packaged and reviewed."
720        )
721        private DateTimeDt myWhenPrepared;
722        
723        @Child(name="whenHandedOver", type=DateTimeDt.class, order=10, min=0, max=1, summary=false, modifier=false)     
724        @Description(
725                shortDefinition="",
726                formalDefinition="The time the dispensed product was provided to the patient or their representative."
727        )
728        private DateTimeDt myWhenHandedOver;
729        
730        @Child(name="destination", order=11, min=0, max=1, summary=false, modifier=false, type={
731                ca.uhn.fhir.model.dstu2.resource.Location.class
732        })
733        @Description(
734                shortDefinition="",
735                formalDefinition="Identification of the facility/location where the medication was shipped to, as part of the dispense event."
736        )
737        private ResourceReferenceDt myDestination;
738        
739        @Child(name="receiver", order=12, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
740                ca.uhn.fhir.model.dstu2.resource.Patient.class, 
741                ca.uhn.fhir.model.dstu2.resource.Practitioner.class
742        })
743        @Description(
744                shortDefinition="",
745                formalDefinition="Identifies the person who picked up the medication.  This will usually be a patient or their caregiver, but some cases exist where it can be a healthcare professional"
746        )
747        private java.util.List<ResourceReferenceDt> myReceiver;
748        
749        @Child(name="note", type=StringDt.class, order=13, min=0, max=1, summary=false, modifier=false) 
750        @Description(
751                shortDefinition="",
752                formalDefinition="Extra information about the dispense that could not be conveyed in the other attributes."
753        )
754        private StringDt myNote;
755        
756        @Child(name="dosageInstruction", order=14, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
757        @Description(
758                shortDefinition="",
759                formalDefinition="Indicates how the medication is to be used by the patient"
760        )
761        private java.util.List<DosageInstruction> myDosageInstruction;
762        
763        @Child(name="substitution", order=15, min=0, max=1, summary=false, modifier=false)      
764        @Description(
765                shortDefinition="",
766                formalDefinition="Indicates whether or not substitution was made as part of the dispense.  In some cases substitution will be expected but does not happen, in other cases substitution is not expected but does happen.  This block explains what substitution did or did not happen and why."
767        )
768        private Substitution mySubstitution;
769        
770
771        @Override
772        public boolean isEmpty() {
773                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myStatus,  myPatient,  myDispenser,  myAuthorizingPrescription,  myType,  myQuantity,  myDaysSupply,  myMedication,  myWhenPrepared,  myWhenHandedOver,  myDestination,  myReceiver,  myNote,  myDosageInstruction,  mySubstitution);
774        }
775        
776        @Override
777        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
778                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myStatus, myPatient, myDispenser, myAuthorizingPrescription, myType, myQuantity, myDaysSupply, myMedication, myWhenPrepared, myWhenHandedOver, myDestination, myReceiver, myNote, myDosageInstruction, mySubstitution);
779        }
780
781        /**
782         * Gets the value(s) for <b>identifier</b> (id).
783         * creating it if it does
784         * not exist. Will not return <code>null</code>.
785         *
786     * <p>
787     * <b>Definition:</b>
788     * Identifier assigned by the dispensing facility - this is an identifier assigned outside FHIR.
789     * </p> 
790         */
791        public IdentifierDt getIdentifier() {  
792                if (myIdentifier == null) {
793                        myIdentifier = new IdentifierDt();
794                }
795                return myIdentifier;
796        }
797
798        /**
799         * Sets the value(s) for <b>identifier</b> (id)
800         *
801     * <p>
802     * <b>Definition:</b>
803     * Identifier assigned by the dispensing facility - this is an identifier assigned outside FHIR.
804     * </p> 
805         */
806        public MedicationDispense setIdentifier(IdentifierDt theValue) {
807                myIdentifier = theValue;
808                return this;
809        }
810        
811        
812
813  
814        /**
815         * Gets the value(s) for <b>status</b> (status).
816         * creating it if it does
817         * not exist. Will not return <code>null</code>.
818         *
819     * <p>
820     * <b>Definition:</b>
821     * A code specifying the state of the set of dispense events.
822     * </p> 
823         */
824        public BoundCodeDt<MedicationDispenseStatusEnum> getStatusElement() {  
825                if (myStatus == null) {
826                        myStatus = new BoundCodeDt<MedicationDispenseStatusEnum>(MedicationDispenseStatusEnum.VALUESET_BINDER);
827                }
828                return myStatus;
829        }
830
831        
832        /**
833         * Gets the value(s) for <b>status</b> (status).
834         * creating it if it does
835         * not exist. This method may return <code>null</code>.
836         *
837     * <p>
838     * <b>Definition:</b>
839     * A code specifying the state of the set of dispense events.
840     * </p> 
841         */
842        public String getStatus() {  
843                return getStatusElement().getValue();
844        }
845
846        /**
847         * Sets the value(s) for <b>status</b> (status)
848         *
849     * <p>
850     * <b>Definition:</b>
851     * A code specifying the state of the set of dispense events.
852     * </p> 
853         */
854        public MedicationDispense setStatus(BoundCodeDt<MedicationDispenseStatusEnum> theValue) {
855                myStatus = theValue;
856                return this;
857        }
858        
859        
860
861        /**
862         * Sets the value(s) for <b>status</b> (status)
863         *
864     * <p>
865     * <b>Definition:</b>
866     * A code specifying the state of the set of dispense events.
867     * </p> 
868         */
869        public MedicationDispense setStatus(MedicationDispenseStatusEnum theValue) {
870                setStatus(new BoundCodeDt<MedicationDispenseStatusEnum>(MedicationDispenseStatusEnum.VALUESET_BINDER, theValue));
871                
872/*
873                getStatusElement().setValueAsEnum(theValue);
874*/
875                return this;
876        }
877
878  
879        /**
880         * Gets the value(s) for <b>patient</b> (who.focus).
881         * creating it if it does
882         * not exist. Will not return <code>null</code>.
883         *
884     * <p>
885     * <b>Definition:</b>
886     * A link to a resource representing the person to whom the medication will be given.
887     * </p> 
888         */
889        public ResourceReferenceDt getPatient() {  
890                if (myPatient == null) {
891                        myPatient = new ResourceReferenceDt();
892                }
893                return myPatient;
894        }
895
896        /**
897         * Sets the value(s) for <b>patient</b> (who.focus)
898         *
899     * <p>
900     * <b>Definition:</b>
901     * A link to a resource representing the person to whom the medication will be given.
902     * </p> 
903         */
904        public MedicationDispense setPatient(ResourceReferenceDt theValue) {
905                myPatient = theValue;
906                return this;
907        }
908        
909        
910
911  
912        /**
913         * Gets the value(s) for <b>dispenser</b> (who.actor).
914         * creating it if it does
915         * not exist. Will not return <code>null</code>.
916         *
917     * <p>
918     * <b>Definition:</b>
919     * The individual responsible for dispensing the medication
920     * </p> 
921         */
922        public ResourceReferenceDt getDispenser() {  
923                if (myDispenser == null) {
924                        myDispenser = new ResourceReferenceDt();
925                }
926                return myDispenser;
927        }
928
929        /**
930         * Sets the value(s) for <b>dispenser</b> (who.actor)
931         *
932     * <p>
933     * <b>Definition:</b>
934     * The individual responsible for dispensing the medication
935     * </p> 
936         */
937        public MedicationDispense setDispenser(ResourceReferenceDt theValue) {
938                myDispenser = theValue;
939                return this;
940        }
941        
942        
943
944  
945        /**
946         * Gets the value(s) for <b>authorizingPrescription</b> ().
947         * creating it if it does
948         * not exist. Will not return <code>null</code>.
949         *
950     * <p>
951     * <b>Definition:</b>
952     * Indicates the medication order that is being dispensed against.
953     * </p> 
954         */
955        public java.util.List<ResourceReferenceDt> getAuthorizingPrescription() {  
956                if (myAuthorizingPrescription == null) {
957                        myAuthorizingPrescription = new java.util.ArrayList<ResourceReferenceDt>();
958                }
959                return myAuthorizingPrescription;
960        }
961
962        /**
963         * Sets the value(s) for <b>authorizingPrescription</b> ()
964         *
965     * <p>
966     * <b>Definition:</b>
967     * Indicates the medication order that is being dispensed against.
968     * </p> 
969         */
970        public MedicationDispense setAuthorizingPrescription(java.util.List<ResourceReferenceDt> theValue) {
971                myAuthorizingPrescription = theValue;
972                return this;
973        }
974        
975        
976
977        /**
978         * Adds and returns a new value for <b>authorizingPrescription</b> ()
979         *
980     * <p>
981     * <b>Definition:</b>
982     * Indicates the medication order that is being dispensed against.
983     * </p> 
984         */
985        public ResourceReferenceDt addAuthorizingPrescription() {
986                ResourceReferenceDt newType = new ResourceReferenceDt();
987                getAuthorizingPrescription().add(newType);
988                return newType; 
989        }
990  
991        /**
992         * Gets the value(s) for <b>type</b> ().
993         * creating it if it does
994         * not exist. Will not return <code>null</code>.
995         *
996     * <p>
997     * <b>Definition:</b>
998     * Indicates the type of dispensing event that is performed. For example, Trial Fill, Completion of Trial, Partial Fill, Emergency Fill, Samples, etc.
999     * </p> 
1000         */
1001        public CodeableConceptDt getType() {  
1002                if (myType == null) {
1003                        myType = new CodeableConceptDt();
1004                }
1005                return myType;
1006        }
1007
1008        /**
1009         * Sets the value(s) for <b>type</b> ()
1010         *
1011     * <p>
1012     * <b>Definition:</b>
1013     * Indicates the type of dispensing event that is performed. For example, Trial Fill, Completion of Trial, Partial Fill, Emergency Fill, Samples, etc.
1014     * </p> 
1015         */
1016        public MedicationDispense setType(CodeableConceptDt theValue) {
1017                myType = theValue;
1018                return this;
1019        }
1020        
1021        
1022
1023  
1024        /**
1025         * Gets the value(s) for <b>quantity</b> ().
1026         * creating it if it does
1027         * not exist. Will not return <code>null</code>.
1028         *
1029     * <p>
1030     * <b>Definition:</b>
1031     * The amount of medication that has been dispensed. Includes unit of measure.
1032     * </p> 
1033         */
1034        public SimpleQuantityDt getQuantity() {  
1035                if (myQuantity == null) {
1036                        myQuantity = new SimpleQuantityDt();
1037                }
1038                return myQuantity;
1039        }
1040
1041        /**
1042         * Sets the value(s) for <b>quantity</b> ()
1043         *
1044     * <p>
1045     * <b>Definition:</b>
1046     * The amount of medication that has been dispensed. Includes unit of measure.
1047     * </p> 
1048         */
1049        public MedicationDispense setQuantity(SimpleQuantityDt theValue) {
1050                myQuantity = theValue;
1051                return this;
1052        }
1053        
1054        
1055
1056  
1057        /**
1058         * Gets the value(s) for <b>daysSupply</b> ().
1059         * creating it if it does
1060         * not exist. Will not return <code>null</code>.
1061         *
1062     * <p>
1063     * <b>Definition:</b>
1064     * The amount of medication expressed as a timing amount.
1065     * </p> 
1066         */
1067        public SimpleQuantityDt getDaysSupply() {  
1068                if (myDaysSupply == null) {
1069                        myDaysSupply = new SimpleQuantityDt();
1070                }
1071                return myDaysSupply;
1072        }
1073
1074        /**
1075         * Sets the value(s) for <b>daysSupply</b> ()
1076         *
1077     * <p>
1078     * <b>Definition:</b>
1079     * The amount of medication expressed as a timing amount.
1080     * </p> 
1081         */
1082        public MedicationDispense setDaysSupply(SimpleQuantityDt theValue) {
1083                myDaysSupply = theValue;
1084                return this;
1085        }
1086        
1087        
1088
1089  
1090        /**
1091         * Gets the value(s) for <b>medication[x]</b> ().
1092         * creating it if it does
1093         * not exist. Will not return <code>null</code>.
1094         *
1095     * <p>
1096     * <b>Definition:</b>
1097     * Identifies the medication being administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications.
1098     * </p> 
1099         */
1100        public IDatatype getMedication() {  
1101                return myMedication;
1102        }
1103
1104        /**
1105         * Sets the value(s) for <b>medication[x]</b> ()
1106         *
1107     * <p>
1108     * <b>Definition:</b>
1109     * Identifies the medication being administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications.
1110     * </p> 
1111         */
1112        public MedicationDispense setMedication(IDatatype theValue) {
1113                myMedication = theValue;
1114                return this;
1115        }
1116        
1117        
1118
1119  
1120        /**
1121         * Gets the value(s) for <b>whenPrepared</b> ().
1122         * creating it if it does
1123         * not exist. Will not return <code>null</code>.
1124         *
1125     * <p>
1126     * <b>Definition:</b>
1127     * The time when the dispensed product was packaged and reviewed.
1128     * </p> 
1129         */
1130        public DateTimeDt getWhenPreparedElement() {  
1131                if (myWhenPrepared == null) {
1132                        myWhenPrepared = new DateTimeDt();
1133                }
1134                return myWhenPrepared;
1135        }
1136
1137        
1138        /**
1139         * Gets the value(s) for <b>whenPrepared</b> ().
1140         * creating it if it does
1141         * not exist. This method may return <code>null</code>.
1142         *
1143     * <p>
1144     * <b>Definition:</b>
1145     * The time when the dispensed product was packaged and reviewed.
1146     * </p> 
1147         */
1148        public Date getWhenPrepared() {  
1149                return getWhenPreparedElement().getValue();
1150        }
1151
1152        /**
1153         * Sets the value(s) for <b>whenPrepared</b> ()
1154         *
1155     * <p>
1156     * <b>Definition:</b>
1157     * The time when the dispensed product was packaged and reviewed.
1158     * </p> 
1159         */
1160        public MedicationDispense setWhenPrepared(DateTimeDt theValue) {
1161                myWhenPrepared = theValue;
1162                return this;
1163        }
1164        
1165        
1166
1167        /**
1168         * Sets the value for <b>whenPrepared</b> ()
1169         *
1170     * <p>
1171     * <b>Definition:</b>
1172     * The time when the dispensed product was packaged and reviewed.
1173     * </p> 
1174         */
1175        public MedicationDispense setWhenPrepared( Date theDate,  TemporalPrecisionEnum thePrecision) {
1176                myWhenPrepared = new DateTimeDt(theDate, thePrecision); 
1177                return this; 
1178        }
1179
1180        /**
1181         * Sets the value for <b>whenPrepared</b> ()
1182         *
1183     * <p>
1184     * <b>Definition:</b>
1185     * The time when the dispensed product was packaged and reviewed.
1186     * </p> 
1187         */
1188        public MedicationDispense setWhenPreparedWithSecondsPrecision( Date theDate) {
1189                myWhenPrepared = new DateTimeDt(theDate); 
1190                return this; 
1191        }
1192
1193 
1194        /**
1195         * Gets the value(s) for <b>whenHandedOver</b> ().
1196         * creating it if it does
1197         * not exist. Will not return <code>null</code>.
1198         *
1199     * <p>
1200     * <b>Definition:</b>
1201     * The time the dispensed product was provided to the patient or their representative.
1202     * </p> 
1203         */
1204        public DateTimeDt getWhenHandedOverElement() {  
1205                if (myWhenHandedOver == null) {
1206                        myWhenHandedOver = new DateTimeDt();
1207                }
1208                return myWhenHandedOver;
1209        }
1210
1211        
1212        /**
1213         * Gets the value(s) for <b>whenHandedOver</b> ().
1214         * creating it if it does
1215         * not exist. This method may return <code>null</code>.
1216         *
1217     * <p>
1218     * <b>Definition:</b>
1219     * The time the dispensed product was provided to the patient or their representative.
1220     * </p> 
1221         */
1222        public Date getWhenHandedOver() {  
1223                return getWhenHandedOverElement().getValue();
1224        }
1225
1226        /**
1227         * Sets the value(s) for <b>whenHandedOver</b> ()
1228         *
1229     * <p>
1230     * <b>Definition:</b>
1231     * The time the dispensed product was provided to the patient or their representative.
1232     * </p> 
1233         */
1234        public MedicationDispense setWhenHandedOver(DateTimeDt theValue) {
1235                myWhenHandedOver = theValue;
1236                return this;
1237        }
1238        
1239        
1240
1241        /**
1242         * Sets the value for <b>whenHandedOver</b> ()
1243         *
1244     * <p>
1245     * <b>Definition:</b>
1246     * The time the dispensed product was provided to the patient or their representative.
1247     * </p> 
1248         */
1249        public MedicationDispense setWhenHandedOver( Date theDate,  TemporalPrecisionEnum thePrecision) {
1250                myWhenHandedOver = new DateTimeDt(theDate, thePrecision); 
1251                return this; 
1252        }
1253
1254        /**
1255         * Sets the value for <b>whenHandedOver</b> ()
1256         *
1257     * <p>
1258     * <b>Definition:</b>
1259     * The time the dispensed product was provided to the patient or their representative.
1260     * </p> 
1261         */
1262        public MedicationDispense setWhenHandedOverWithSecondsPrecision( Date theDate) {
1263                myWhenHandedOver = new DateTimeDt(theDate); 
1264                return this; 
1265        }
1266
1267 
1268        /**
1269         * Gets the value(s) for <b>destination</b> ().
1270         * creating it if it does
1271         * not exist. Will not return <code>null</code>.
1272         *
1273     * <p>
1274     * <b>Definition:</b>
1275     * Identification of the facility/location where the medication was shipped to, as part of the dispense event.
1276     * </p> 
1277         */
1278        public ResourceReferenceDt getDestination() {  
1279                if (myDestination == null) {
1280                        myDestination = new ResourceReferenceDt();
1281                }
1282                return myDestination;
1283        }
1284
1285        /**
1286         * Sets the value(s) for <b>destination</b> ()
1287         *
1288     * <p>
1289     * <b>Definition:</b>
1290     * Identification of the facility/location where the medication was shipped to, as part of the dispense event.
1291     * </p> 
1292         */
1293        public MedicationDispense setDestination(ResourceReferenceDt theValue) {
1294                myDestination = theValue;
1295                return this;
1296        }
1297        
1298        
1299
1300  
1301        /**
1302         * Gets the value(s) for <b>receiver</b> ().
1303         * creating it if it does
1304         * not exist. Will not return <code>null</code>.
1305         *
1306     * <p>
1307     * <b>Definition:</b>
1308     * Identifies the person who picked up the medication.  This will usually be a patient or their caregiver, but some cases exist where it can be a healthcare professional
1309     * </p> 
1310         */
1311        public java.util.List<ResourceReferenceDt> getReceiver() {  
1312                if (myReceiver == null) {
1313                        myReceiver = new java.util.ArrayList<ResourceReferenceDt>();
1314                }
1315                return myReceiver;
1316        }
1317
1318        /**
1319         * Sets the value(s) for <b>receiver</b> ()
1320         *
1321     * <p>
1322     * <b>Definition:</b>
1323     * Identifies the person who picked up the medication.  This will usually be a patient or their caregiver, but some cases exist where it can be a healthcare professional
1324     * </p> 
1325         */
1326        public MedicationDispense setReceiver(java.util.List<ResourceReferenceDt> theValue) {
1327                myReceiver = theValue;
1328                return this;
1329        }
1330        
1331        
1332
1333        /**
1334         * Adds and returns a new value for <b>receiver</b> ()
1335         *
1336     * <p>
1337     * <b>Definition:</b>
1338     * Identifies the person who picked up the medication.  This will usually be a patient or their caregiver, but some cases exist where it can be a healthcare professional
1339     * </p> 
1340         */
1341        public ResourceReferenceDt addReceiver() {
1342                ResourceReferenceDt newType = new ResourceReferenceDt();
1343                getReceiver().add(newType);
1344                return newType; 
1345        }
1346  
1347        /**
1348         * Gets the value(s) for <b>note</b> ().
1349         * creating it if it does
1350         * not exist. Will not return <code>null</code>.
1351         *
1352     * <p>
1353     * <b>Definition:</b>
1354     * Extra information about the dispense that could not be conveyed in the other attributes.
1355     * </p> 
1356         */
1357        public StringDt getNoteElement() {  
1358                if (myNote == null) {
1359                        myNote = new StringDt();
1360                }
1361                return myNote;
1362        }
1363
1364        
1365        /**
1366         * Gets the value(s) for <b>note</b> ().
1367         * creating it if it does
1368         * not exist. This method may return <code>null</code>.
1369         *
1370     * <p>
1371     * <b>Definition:</b>
1372     * Extra information about the dispense that could not be conveyed in the other attributes.
1373     * </p> 
1374         */
1375        public String getNote() {  
1376                return getNoteElement().getValue();
1377        }
1378
1379        /**
1380         * Sets the value(s) for <b>note</b> ()
1381         *
1382     * <p>
1383     * <b>Definition:</b>
1384     * Extra information about the dispense that could not be conveyed in the other attributes.
1385     * </p> 
1386         */
1387        public MedicationDispense setNote(StringDt theValue) {
1388                myNote = theValue;
1389                return this;
1390        }
1391        
1392        
1393
1394        /**
1395         * Sets the value for <b>note</b> ()
1396         *
1397     * <p>
1398     * <b>Definition:</b>
1399     * Extra information about the dispense that could not be conveyed in the other attributes.
1400     * </p> 
1401         */
1402        public MedicationDispense setNote( String theString) {
1403                myNote = new StringDt(theString); 
1404                return this; 
1405        }
1406
1407 
1408        /**
1409         * Gets the value(s) for <b>dosageInstruction</b> ().
1410         * creating it if it does
1411         * not exist. Will not return <code>null</code>.
1412         *
1413     * <p>
1414     * <b>Definition:</b>
1415     * Indicates how the medication is to be used by the patient
1416     * </p> 
1417         */
1418        public java.util.List<DosageInstruction> getDosageInstruction() {  
1419                if (myDosageInstruction == null) {
1420                        myDosageInstruction = new java.util.ArrayList<DosageInstruction>();
1421                }
1422                return myDosageInstruction;
1423        }
1424
1425        /**
1426         * Sets the value(s) for <b>dosageInstruction</b> ()
1427         *
1428     * <p>
1429     * <b>Definition:</b>
1430     * Indicates how the medication is to be used by the patient
1431     * </p> 
1432         */
1433        public MedicationDispense setDosageInstruction(java.util.List<DosageInstruction> theValue) {
1434                myDosageInstruction = theValue;
1435                return this;
1436        }
1437        
1438        
1439
1440        /**
1441         * Adds and returns a new value for <b>dosageInstruction</b> ()
1442         *
1443     * <p>
1444     * <b>Definition:</b>
1445     * Indicates how the medication is to be used by the patient
1446     * </p> 
1447         */
1448        public DosageInstruction addDosageInstruction() {
1449                DosageInstruction newType = new DosageInstruction();
1450                getDosageInstruction().add(newType);
1451                return newType; 
1452        }
1453
1454        /**
1455         * Adds a given new value for <b>dosageInstruction</b> ()
1456         *
1457         * <p>
1458         * <b>Definition:</b>
1459         * Indicates how the medication is to be used by the patient
1460         * </p>
1461         * @param theValue The dosageInstruction to add (must not be <code>null</code>)
1462         */
1463        public MedicationDispense addDosageInstruction(DosageInstruction theValue) {
1464                if (theValue == null) {
1465                        throw new NullPointerException("theValue must not be null");
1466                }
1467                getDosageInstruction().add(theValue);
1468                return this;
1469        }
1470
1471        /**
1472         * Gets the first repetition for <b>dosageInstruction</b> (),
1473         * creating it if it does not already exist.
1474         *
1475     * <p>
1476     * <b>Definition:</b>
1477     * Indicates how the medication is to be used by the patient
1478     * </p> 
1479         */
1480        public DosageInstruction getDosageInstructionFirstRep() {
1481                if (getDosageInstruction().isEmpty()) {
1482                        return addDosageInstruction();
1483                }
1484                return getDosageInstruction().get(0); 
1485        }
1486  
1487        /**
1488         * Gets the value(s) for <b>substitution</b> ().
1489         * creating it if it does
1490         * not exist. Will not return <code>null</code>.
1491         *
1492     * <p>
1493     * <b>Definition:</b>
1494     * Indicates whether or not substitution was made as part of the dispense.  In some cases substitution will be expected but does not happen, in other cases substitution is not expected but does happen.  This block explains what substitution did or did not happen and why.
1495     * </p> 
1496         */
1497        public Substitution getSubstitution() {  
1498                if (mySubstitution == null) {
1499                        mySubstitution = new Substitution();
1500                }
1501                return mySubstitution;
1502        }
1503
1504        /**
1505         * Sets the value(s) for <b>substitution</b> ()
1506         *
1507     * <p>
1508     * <b>Definition:</b>
1509     * Indicates whether or not substitution was made as part of the dispense.  In some cases substitution will be expected but does not happen, in other cases substitution is not expected but does happen.  This block explains what substitution did or did not happen and why.
1510     * </p> 
1511         */
1512        public MedicationDispense setSubstitution(Substitution theValue) {
1513                mySubstitution = theValue;
1514                return this;
1515        }
1516        
1517        
1518
1519  
1520        /**
1521         * Block class for child element: <b>MedicationDispense.dosageInstruction</b> ()
1522         *
1523     * <p>
1524     * <b>Definition:</b>
1525     * Indicates how the medication is to be used by the patient
1526     * </p> 
1527         */
1528        @Block()        
1529        public static class DosageInstruction 
1530            extends  BaseIdentifiableElement  
1531            implements IResourceBlock {
1532        
1533        @Child(name="text", type=StringDt.class, order=0, min=0, max=1, summary=false, modifier=false)  
1534        @Description(
1535                shortDefinition="",
1536                formalDefinition="Free text dosage instructions can be used for cases where the instructions are too complex to code. When coded instructions are present, the free text instructions may still be present for display to humans taking or administering the medication."
1537        )
1538        private StringDt myText;
1539        
1540        @Child(name="additionalInstructions", type=CodeableConceptDt.class, order=1, min=0, max=1, summary=false, modifier=false)       
1541        @Description(
1542                shortDefinition="",
1543                formalDefinition="Additional instructions such as \"Swallow with plenty of water\" which may or may not be coded."
1544        )
1545        private CodeableConceptDt myAdditionalInstructions;
1546        
1547        @Child(name="timing", type=TimingDt.class, order=2, min=0, max=1, summary=false, modifier=false)        
1548        @Description(
1549                shortDefinition="",
1550                formalDefinition="The timing schedule for giving the medication to the patient.  The Schedule data type allows many different expressions.  For example, \"Every  8 hours\"; \"Three times a day\"; \"1/2 an hour before breakfast for 10 days from 23-Dec 2011:\";  \"15 Oct 2013, 17 Oct 2013 and 1 Nov 2013\""
1551        )
1552        private TimingDt myTiming;
1553        
1554        @Child(name="asNeeded", order=3, min=0, max=1, summary=false, modifier=false, type={
1555                BooleanDt.class, 
1556                CodeableConceptDt.class
1557        })
1558        @Description(
1559                shortDefinition="",
1560                formalDefinition="Indicates whether the Medication is only taken when needed within a specific dosing schedule (Boolean option), or it indicates the precondition for taking the Medication (CodeableConcept).  Specifically if 'boolean' datatype is selected, then the following logic applies:  If set to True, this indicates that the medication is only taken when needed, within the specified schedule."
1561        )
1562        private IDatatype myAsNeeded;
1563        
1564        @Child(name="site", order=4, min=0, max=1, summary=false, modifier=false, type={
1565                CodeableConceptDt.class, 
1566                BodySite.class
1567        })
1568        @Description(
1569                shortDefinition="",
1570                formalDefinition="A coded specification of the anatomic site where the medication first enters the body"
1571        )
1572        private IDatatype mySite;
1573        
1574        @Child(name="route", type=CodeableConceptDt.class, order=5, min=0, max=1, summary=false, modifier=false)        
1575        @Description(
1576                shortDefinition="",
1577                formalDefinition="A code specifying the route or physiological path of administration of a therapeutic agent into or onto a subject."
1578        )
1579        private CodeableConceptDt myRoute;
1580        
1581        @Child(name="method", type=CodeableConceptDt.class, order=6, min=0, max=1, summary=false, modifier=false)       
1582        @Description(
1583                shortDefinition="",
1584                formalDefinition="A coded value indicating the method by which the medication is intended to be or was introduced into or on the body."
1585        )
1586        private CodeableConceptDt myMethod;
1587        
1588        @Child(name="dose", order=7, min=0, max=1, summary=false, modifier=false, type={
1589                RangeDt.class, 
1590                SimpleQuantityDt.class
1591        })
1592        @Description(
1593                shortDefinition="",
1594                formalDefinition="The amount of therapeutic or other substance given at one administration event."
1595        )
1596        private IDatatype myDose;
1597        
1598        @Child(name="rate", order=8, min=0, max=1, summary=false, modifier=false, type={
1599                RatioDt.class, 
1600                RangeDt.class
1601        })
1602        @Description(
1603                shortDefinition="",
1604                formalDefinition="Identifies the speed with which the medication was or will be introduced into the patient. Typically the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr.  May also be expressed as a rate per unit of time e.g. 500 ml per 2 hours.   Currently we do not specify a default of '1' in the denominator, but this is being discussed. Other examples: 200 mcg/min or 200 mcg/1 minute; 1 liter/8 hours"
1605        )
1606        private IDatatype myRate;
1607        
1608        @Child(name="maxDosePerPeriod", type=RatioDt.class, order=9, min=0, max=1, summary=false, modifier=false)       
1609        @Description(
1610                shortDefinition="",
1611                formalDefinition="The maximum total quantity of a therapeutic substance that may be administered to a subject over the period of time,  e.g. 1000mg in 24 hours."
1612        )
1613        private RatioDt myMaxDosePerPeriod;
1614        
1615
1616        @Override
1617        public boolean isEmpty() {
1618                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myText,  myAdditionalInstructions,  myTiming,  myAsNeeded,  mySite,  myRoute,  myMethod,  myDose,  myRate,  myMaxDosePerPeriod);
1619        }
1620        
1621        @Override
1622        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1623                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myText, myAdditionalInstructions, myTiming, myAsNeeded, mySite, myRoute, myMethod, myDose, myRate, myMaxDosePerPeriod);
1624        }
1625
1626        /**
1627         * Gets the value(s) for <b>text</b> ().
1628         * creating it if it does
1629         * not exist. Will not return <code>null</code>.
1630         *
1631     * <p>
1632     * <b>Definition:</b>
1633     * Free text dosage instructions can be used for cases where the instructions are too complex to code. When coded instructions are present, the free text instructions may still be present for display to humans taking or administering the medication.
1634     * </p> 
1635         */
1636        public StringDt getTextElement() {  
1637                if (myText == null) {
1638                        myText = new StringDt();
1639                }
1640                return myText;
1641        }
1642
1643        
1644        /**
1645         * Gets the value(s) for <b>text</b> ().
1646         * creating it if it does
1647         * not exist. This method may return <code>null</code>.
1648         *
1649     * <p>
1650     * <b>Definition:</b>
1651     * Free text dosage instructions can be used for cases where the instructions are too complex to code. When coded instructions are present, the free text instructions may still be present for display to humans taking or administering the medication.
1652     * </p> 
1653         */
1654        public String getText() {  
1655                return getTextElement().getValue();
1656        }
1657
1658        /**
1659         * Sets the value(s) for <b>text</b> ()
1660         *
1661     * <p>
1662     * <b>Definition:</b>
1663     * Free text dosage instructions can be used for cases where the instructions are too complex to code. When coded instructions are present, the free text instructions may still be present for display to humans taking or administering the medication.
1664     * </p> 
1665         */
1666        public DosageInstruction setText(StringDt theValue) {
1667                myText = theValue;
1668                return this;
1669        }
1670        
1671        
1672
1673        /**
1674         * Sets the value for <b>text</b> ()
1675         *
1676     * <p>
1677     * <b>Definition:</b>
1678     * Free text dosage instructions can be used for cases where the instructions are too complex to code. When coded instructions are present, the free text instructions may still be present for display to humans taking or administering the medication.
1679     * </p> 
1680         */
1681        public DosageInstruction setText( String theString) {
1682                myText = new StringDt(theString); 
1683                return this; 
1684        }
1685
1686 
1687        /**
1688         * Gets the value(s) for <b>additionalInstructions</b> ().
1689         * creating it if it does
1690         * not exist. Will not return <code>null</code>.
1691         *
1692     * <p>
1693     * <b>Definition:</b>
1694     * Additional instructions such as \&quot;Swallow with plenty of water\&quot; which may or may not be coded.
1695     * </p> 
1696         */
1697        public CodeableConceptDt getAdditionalInstructions() {  
1698                if (myAdditionalInstructions == null) {
1699                        myAdditionalInstructions = new CodeableConceptDt();
1700                }
1701                return myAdditionalInstructions;
1702        }
1703
1704        /**
1705         * Sets the value(s) for <b>additionalInstructions</b> ()
1706         *
1707     * <p>
1708     * <b>Definition:</b>
1709     * Additional instructions such as \&quot;Swallow with plenty of water\&quot; which may or may not be coded.
1710     * </p> 
1711         */
1712        public DosageInstruction setAdditionalInstructions(CodeableConceptDt theValue) {
1713                myAdditionalInstructions = theValue;
1714                return this;
1715        }
1716        
1717        
1718
1719  
1720        /**
1721         * Gets the value(s) for <b>timing</b> ().
1722         * creating it if it does
1723         * not exist. Will not return <code>null</code>.
1724         *
1725     * <p>
1726     * <b>Definition:</b>
1727     * The timing schedule for giving the medication to the patient.  The Schedule data type allows many different expressions.  For example, \&quot;Every  8 hours\&quot;; \&quot;Three times a day\&quot;; \&quot;1/2 an hour before breakfast for 10 days from 23-Dec 2011:\&quot;;  \&quot;15 Oct 2013, 17 Oct 2013 and 1 Nov 2013\&quot;
1728     * </p> 
1729         */
1730        public TimingDt getTiming() {  
1731                if (myTiming == null) {
1732                        myTiming = new TimingDt();
1733                }
1734                return myTiming;
1735        }
1736
1737        /**
1738         * Sets the value(s) for <b>timing</b> ()
1739         *
1740     * <p>
1741     * <b>Definition:</b>
1742     * The timing schedule for giving the medication to the patient.  The Schedule data type allows many different expressions.  For example, \&quot;Every  8 hours\&quot;; \&quot;Three times a day\&quot;; \&quot;1/2 an hour before breakfast for 10 days from 23-Dec 2011:\&quot;;  \&quot;15 Oct 2013, 17 Oct 2013 and 1 Nov 2013\&quot;
1743     * </p> 
1744         */
1745        public DosageInstruction setTiming(TimingDt theValue) {
1746                myTiming = theValue;
1747                return this;
1748        }
1749        
1750        
1751
1752  
1753        /**
1754         * Gets the value(s) for <b>asNeeded[x]</b> ().
1755         * creating it if it does
1756         * not exist. Will not return <code>null</code>.
1757         *
1758     * <p>
1759     * <b>Definition:</b>
1760     * Indicates whether the Medication is only taken when needed within a specific dosing schedule (Boolean option), or it indicates the precondition for taking the Medication (CodeableConcept).  Specifically if 'boolean' datatype is selected, then the following logic applies:  If set to True, this indicates that the medication is only taken when needed, within the specified schedule.
1761     * </p> 
1762         */
1763        public IDatatype getAsNeeded() {  
1764                return myAsNeeded;
1765        }
1766
1767        /**
1768         * Sets the value(s) for <b>asNeeded[x]</b> ()
1769         *
1770     * <p>
1771     * <b>Definition:</b>
1772     * Indicates whether the Medication is only taken when needed within a specific dosing schedule (Boolean option), or it indicates the precondition for taking the Medication (CodeableConcept).  Specifically if 'boolean' datatype is selected, then the following logic applies:  If set to True, this indicates that the medication is only taken when needed, within the specified schedule.
1773     * </p> 
1774         */
1775        public DosageInstruction setAsNeeded(IDatatype theValue) {
1776                myAsNeeded = theValue;
1777                return this;
1778        }
1779        
1780        
1781
1782  
1783        /**
1784         * Gets the value(s) for <b>site[x]</b> ().
1785         * creating it if it does
1786         * not exist. Will not return <code>null</code>.
1787         *
1788     * <p>
1789     * <b>Definition:</b>
1790     * A coded specification of the anatomic site where the medication first enters the body
1791     * </p> 
1792         */
1793        public IDatatype getSite() {  
1794                return mySite;
1795        }
1796
1797        /**
1798         * Sets the value(s) for <b>site[x]</b> ()
1799         *
1800     * <p>
1801     * <b>Definition:</b>
1802     * A coded specification of the anatomic site where the medication first enters the body
1803     * </p> 
1804         */
1805        public DosageInstruction setSite(IDatatype theValue) {
1806                mySite = theValue;
1807                return this;
1808        }
1809        
1810        
1811
1812  
1813        /**
1814         * Gets the value(s) for <b>route</b> ().
1815         * creating it if it does
1816         * not exist. Will not return <code>null</code>.
1817         *
1818     * <p>
1819     * <b>Definition:</b>
1820     * A code specifying the route or physiological path of administration of a therapeutic agent into or onto a subject.
1821     * </p> 
1822         */
1823        public CodeableConceptDt getRoute() {  
1824                if (myRoute == null) {
1825                        myRoute = new CodeableConceptDt();
1826                }
1827                return myRoute;
1828        }
1829
1830        /**
1831         * Sets the value(s) for <b>route</b> ()
1832         *
1833     * <p>
1834     * <b>Definition:</b>
1835     * A code specifying the route or physiological path of administration of a therapeutic agent into or onto a subject.
1836     * </p> 
1837         */
1838        public DosageInstruction setRoute(CodeableConceptDt theValue) {
1839                myRoute = theValue;
1840                return this;
1841        }
1842        
1843        
1844
1845  
1846        /**
1847         * Gets the value(s) for <b>method</b> ().
1848         * creating it if it does
1849         * not exist. Will not return <code>null</code>.
1850         *
1851     * <p>
1852     * <b>Definition:</b>
1853     * A coded value indicating the method by which the medication is intended to be or was introduced into or on the body.
1854     * </p> 
1855         */
1856        public CodeableConceptDt getMethod() {  
1857                if (myMethod == null) {
1858                        myMethod = new CodeableConceptDt();
1859                }
1860                return myMethod;
1861        }
1862
1863        /**
1864         * Sets the value(s) for <b>method</b> ()
1865         *
1866     * <p>
1867     * <b>Definition:</b>
1868     * A coded value indicating the method by which the medication is intended to be or was introduced into or on the body.
1869     * </p> 
1870         */
1871        public DosageInstruction setMethod(CodeableConceptDt theValue) {
1872                myMethod = theValue;
1873                return this;
1874        }
1875        
1876        
1877
1878  
1879        /**
1880         * Gets the value(s) for <b>dose[x]</b> ().
1881         * creating it if it does
1882         * not exist. Will not return <code>null</code>.
1883         *
1884     * <p>
1885     * <b>Definition:</b>
1886     * The amount of therapeutic or other substance given at one administration event.
1887     * </p> 
1888         */
1889        public IDatatype getDose() {  
1890                return myDose;
1891        }
1892
1893        /**
1894         * Sets the value(s) for <b>dose[x]</b> ()
1895         *
1896     * <p>
1897     * <b>Definition:</b>
1898     * The amount of therapeutic or other substance given at one administration event.
1899     * </p> 
1900         */
1901        public DosageInstruction setDose(IDatatype theValue) {
1902                myDose = theValue;
1903                return this;
1904        }
1905        
1906        
1907
1908  
1909        /**
1910         * Gets the value(s) for <b>rate[x]</b> ().
1911         * creating it if it does
1912         * not exist. Will not return <code>null</code>.
1913         *
1914     * <p>
1915     * <b>Definition:</b>
1916     * Identifies the speed with which the medication was or will be introduced into the patient. Typically the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr.  May also be expressed as a rate per unit of time e.g. 500 ml per 2 hours.   Currently we do not specify a default of '1' in the denominator, but this is being discussed. Other examples: 200 mcg/min or 200 mcg/1 minute; 1 liter/8 hours
1917     * </p> 
1918         */
1919        public IDatatype getRate() {  
1920                return myRate;
1921        }
1922
1923        /**
1924         * Sets the value(s) for <b>rate[x]</b> ()
1925         *
1926     * <p>
1927     * <b>Definition:</b>
1928     * Identifies the speed with which the medication was or will be introduced into the patient. Typically the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr.  May also be expressed as a rate per unit of time e.g. 500 ml per 2 hours.   Currently we do not specify a default of '1' in the denominator, but this is being discussed. Other examples: 200 mcg/min or 200 mcg/1 minute; 1 liter/8 hours
1929     * </p> 
1930         */
1931        public DosageInstruction setRate(IDatatype theValue) {
1932                myRate = theValue;
1933                return this;
1934        }
1935        
1936        
1937
1938  
1939        /**
1940         * Gets the value(s) for <b>maxDosePerPeriod</b> ().
1941         * creating it if it does
1942         * not exist. Will not return <code>null</code>.
1943         *
1944     * <p>
1945     * <b>Definition:</b>
1946     * The maximum total quantity of a therapeutic substance that may be administered to a subject over the period of time,  e.g. 1000mg in 24 hours.
1947     * </p> 
1948         */
1949        public RatioDt getMaxDosePerPeriod() {  
1950                if (myMaxDosePerPeriod == null) {
1951                        myMaxDosePerPeriod = new RatioDt();
1952                }
1953                return myMaxDosePerPeriod;
1954        }
1955
1956        /**
1957         * Sets the value(s) for <b>maxDosePerPeriod</b> ()
1958         *
1959     * <p>
1960     * <b>Definition:</b>
1961     * The maximum total quantity of a therapeutic substance that may be administered to a subject over the period of time,  e.g. 1000mg in 24 hours.
1962     * </p> 
1963         */
1964        public DosageInstruction setMaxDosePerPeriod(RatioDt theValue) {
1965                myMaxDosePerPeriod = theValue;
1966                return this;
1967        }
1968        
1969        
1970
1971  
1972
1973
1974        }
1975
1976
1977        /**
1978         * Block class for child element: <b>MedicationDispense.substitution</b> ()
1979         *
1980     * <p>
1981     * <b>Definition:</b>
1982     * Indicates whether or not substitution was made as part of the dispense.  In some cases substitution will be expected but does not happen, in other cases substitution is not expected but does happen.  This block explains what substitution did or did not happen and why.
1983     * </p> 
1984         */
1985        @Block()        
1986        public static class Substitution 
1987            extends  BaseIdentifiableElement  
1988            implements IResourceBlock {
1989        
1990        @Child(name="type", type=CodeableConceptDt.class, order=0, min=1, max=1, summary=false, modifier=false) 
1991        @Description(
1992                shortDefinition="",
1993                formalDefinition="A code signifying whether a different drug was dispensed from what was prescribed."
1994        )
1995        private CodeableConceptDt myType;
1996        
1997        @Child(name="reason", type=CodeableConceptDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
1998        @Description(
1999                shortDefinition="",
2000                formalDefinition="Indicates the reason for the substitution of (or lack of substitution) from what was prescribed."
2001        )
2002        private java.util.List<CodeableConceptDt> myReason;
2003        
2004        @Child(name="responsibleParty", order=2, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
2005                ca.uhn.fhir.model.dstu2.resource.Practitioner.class
2006        })
2007        @Description(
2008                shortDefinition="",
2009                formalDefinition="The person or organization that has primary responsibility for the substitution"
2010        )
2011        private java.util.List<ResourceReferenceDt> myResponsibleParty;
2012        
2013
2014        @Override
2015        public boolean isEmpty() {
2016                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myType,  myReason,  myResponsibleParty);
2017        }
2018        
2019        @Override
2020        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2021                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myType, myReason, myResponsibleParty);
2022        }
2023
2024        /**
2025         * Gets the value(s) for <b>type</b> ().
2026         * creating it if it does
2027         * not exist. Will not return <code>null</code>.
2028         *
2029     * <p>
2030     * <b>Definition:</b>
2031     * A code signifying whether a different drug was dispensed from what was prescribed.
2032     * </p> 
2033         */
2034        public CodeableConceptDt getType() {  
2035                if (myType == null) {
2036                        myType = new CodeableConceptDt();
2037                }
2038                return myType;
2039        }
2040
2041        /**
2042         * Sets the value(s) for <b>type</b> ()
2043         *
2044     * <p>
2045     * <b>Definition:</b>
2046     * A code signifying whether a different drug was dispensed from what was prescribed.
2047     * </p> 
2048         */
2049        public Substitution setType(CodeableConceptDt theValue) {
2050                myType = theValue;
2051                return this;
2052        }
2053        
2054        
2055
2056  
2057        /**
2058         * Gets the value(s) for <b>reason</b> ().
2059         * creating it if it does
2060         * not exist. Will not return <code>null</code>.
2061         *
2062     * <p>
2063     * <b>Definition:</b>
2064     * Indicates the reason for the substitution of (or lack of substitution) from what was prescribed.
2065     * </p> 
2066         */
2067        public java.util.List<CodeableConceptDt> getReason() {  
2068                if (myReason == null) {
2069                        myReason = new java.util.ArrayList<CodeableConceptDt>();
2070                }
2071                return myReason;
2072        }
2073
2074        /**
2075         * Sets the value(s) for <b>reason</b> ()
2076         *
2077     * <p>
2078     * <b>Definition:</b>
2079     * Indicates the reason for the substitution of (or lack of substitution) from what was prescribed.
2080     * </p> 
2081         */
2082        public Substitution setReason(java.util.List<CodeableConceptDt> theValue) {
2083                myReason = theValue;
2084                return this;
2085        }
2086        
2087        
2088
2089        /**
2090         * Adds and returns a new value for <b>reason</b> ()
2091         *
2092     * <p>
2093     * <b>Definition:</b>
2094     * Indicates the reason for the substitution of (or lack of substitution) from what was prescribed.
2095     * </p> 
2096         */
2097        public CodeableConceptDt addReason() {
2098                CodeableConceptDt newType = new CodeableConceptDt();
2099                getReason().add(newType);
2100                return newType; 
2101        }
2102
2103        /**
2104         * Adds a given new value for <b>reason</b> ()
2105         *
2106         * <p>
2107         * <b>Definition:</b>
2108         * Indicates the reason for the substitution of (or lack of substitution) from what was prescribed.
2109         * </p>
2110         * @param theValue The reason to add (must not be <code>null</code>)
2111         */
2112        public Substitution addReason(CodeableConceptDt theValue) {
2113                if (theValue == null) {
2114                        throw new NullPointerException("theValue must not be null");
2115                }
2116                getReason().add(theValue);
2117                return this;
2118        }
2119
2120        /**
2121         * Gets the first repetition for <b>reason</b> (),
2122         * creating it if it does not already exist.
2123         *
2124     * <p>
2125     * <b>Definition:</b>
2126     * Indicates the reason for the substitution of (or lack of substitution) from what was prescribed.
2127     * </p> 
2128         */
2129        public CodeableConceptDt getReasonFirstRep() {
2130                if (getReason().isEmpty()) {
2131                        return addReason();
2132                }
2133                return getReason().get(0); 
2134        }
2135  
2136        /**
2137         * Gets the value(s) for <b>responsibleParty</b> ().
2138         * creating it if it does
2139         * not exist. Will not return <code>null</code>.
2140         *
2141     * <p>
2142     * <b>Definition:</b>
2143     * The person or organization that has primary responsibility for the substitution
2144     * </p> 
2145         */
2146        public java.util.List<ResourceReferenceDt> getResponsibleParty() {  
2147                if (myResponsibleParty == null) {
2148                        myResponsibleParty = new java.util.ArrayList<ResourceReferenceDt>();
2149                }
2150                return myResponsibleParty;
2151        }
2152
2153        /**
2154         * Sets the value(s) for <b>responsibleParty</b> ()
2155         *
2156     * <p>
2157     * <b>Definition:</b>
2158     * The person or organization that has primary responsibility for the substitution
2159     * </p> 
2160         */
2161        public Substitution setResponsibleParty(java.util.List<ResourceReferenceDt> theValue) {
2162                myResponsibleParty = theValue;
2163                return this;
2164        }
2165        
2166        
2167
2168        /**
2169         * Adds and returns a new value for <b>responsibleParty</b> ()
2170         *
2171     * <p>
2172     * <b>Definition:</b>
2173     * The person or organization that has primary responsibility for the substitution
2174     * </p> 
2175         */
2176        public ResourceReferenceDt addResponsibleParty() {
2177                ResourceReferenceDt newType = new ResourceReferenceDt();
2178                getResponsibleParty().add(newType);
2179                return newType; 
2180        }
2181  
2182
2183
2184        }
2185
2186
2187
2188
2189    @Override
2190    public String getResourceName() {
2191        return "MedicationDispense";
2192    }
2193    
2194    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
2195        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
2196    }
2197
2198
2199}