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>MedicationOrder</b> Resource
282 * (clinical.medication)
283 *
284 * <p>
285 * <b>Definition:</b>
286 * An order for both supply of the medication and the instructions for administration of the medication to a patient. The resource is called \"MedicationOrder\" rather than \"MedicationPrescription\" to generalize the use across inpatient and outpatient settings as well as for care plans, etc.
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/MedicationOrder">http://hl7.org/fhir/profiles/MedicationOrder</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="MedicationOrder", profile="http://hl7.org/fhir/profiles/MedicationOrder", id="medicationorder")
301public class MedicationOrder extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource 
303    {
304
305        /**
306         * Search parameter constant for <b>datewritten</b>
307         * <p>
308         * Description: <b>Return prescriptions written on this date</b><br>
309         * Type: <b>date</b><br>
310         * Path: <b>MedicationOrder.dateWritten</b><br>
311         * </p>
312         */
313        @SearchParamDefinition(name="datewritten", path="MedicationOrder.dateWritten", description="Return prescriptions written on this date", type="date" 
314 )
315        public static final String SP_DATEWRITTEN = "datewritten";
316
317        /**
318         * <b>Fluent Client</b> search parameter constant for <b>datewritten</b>
319         * <p>
320         * Description: <b>Return prescriptions written on this date</b><br>
321         * Type: <b>date</b><br>
322         * Path: <b>MedicationOrder.dateWritten</b><br>
323         * </p>
324         */
325        public static final DateClientParam DATEWRITTEN = new DateClientParam(SP_DATEWRITTEN);
326
327        /**
328         * Search parameter constant for <b>encounter</b>
329         * <p>
330         * Description: <b>Return prescriptions with this encounter identifier</b><br>
331         * Type: <b>reference</b><br>
332         * Path: <b>MedicationOrder.encounter</b><br>
333         * </p>
334         */
335        @SearchParamDefinition(name="encounter", path="MedicationOrder.encounter", description="Return prescriptions with this encounter identifier", type="reference" 
336, providesMembershipIn={
337 @Compartment(name="Encounter")         }
338 )
339        public static final String SP_ENCOUNTER = "encounter";
340
341        /**
342         * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
343         * <p>
344         * Description: <b>Return prescriptions with this encounter identifier</b><br>
345         * Type: <b>reference</b><br>
346         * Path: <b>MedicationOrder.encounter</b><br>
347         * </p>
348         */
349        public static final ReferenceClientParam ENCOUNTER = new ReferenceClientParam(SP_ENCOUNTER);
350
351        /**
352         * Search parameter constant for <b>identifier</b>
353         * <p>
354         * Description: <b>Return prescriptions with this external identifier</b><br>
355         * Type: <b>token</b><br>
356         * Path: <b>MedicationOrder.identifier</b><br>
357         * </p>
358         */
359        @SearchParamDefinition(name="identifier", path="MedicationOrder.identifier", description="Return prescriptions 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 prescriptions with this external identifier</b><br>
367         * Type: <b>token</b><br>
368         * Path: <b>MedicationOrder.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 administrations of this medication reference</b><br>
377         * Type: <b>reference</b><br>
378         * Path: <b>MedicationOrder.medicationReference</b><br>
379         * </p>
380         */
381        @SearchParamDefinition(name="medication", path="MedicationOrder.medicationReference", description="Return administrations of this medication reference", 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 administrations of this medication reference</b><br>
389         * Type: <b>reference</b><br>
390         * Path: <b>MedicationOrder.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 administrations of this medication code</b><br>
399         * Type: <b>token</b><br>
400         * Path: <b>MedicationOrder.medicationCodeableConcept</b><br>
401         * </p>
402         */
403        @SearchParamDefinition(name="code", path="MedicationOrder.medicationCodeableConcept", description="Return administrations of this medication 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 administrations of this medication code</b><br>
411         * Type: <b>token</b><br>
412         * Path: <b>MedicationOrder.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 orders  for</b><br>
421         * Type: <b>reference</b><br>
422         * Path: <b>MedicationOrder.patient</b><br>
423         * </p>
424         */
425        @SearchParamDefinition(name="patient", path="MedicationOrder.patient", description="The identity of a patient to list orders  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 orders  for</b><br>
435         * Type: <b>reference</b><br>
436         * Path: <b>MedicationOrder.patient</b><br>
437         * </p>
438         */
439        public static final ReferenceClientParam PATIENT = new ReferenceClientParam(SP_PATIENT);
440
441        /**
442         * Search parameter constant for <b>status</b>
443         * <p>
444         * Description: <b>Status of the prescription</b><br>
445         * Type: <b>token</b><br>
446         * Path: <b>MedicationOrder.status</b><br>
447         * </p>
448         */
449        @SearchParamDefinition(name="status", path="MedicationOrder.status", description="Status of the prescription", type="token" 
450 )
451        public static final String SP_STATUS = "status";
452
453        /**
454         * <b>Fluent Client</b> search parameter constant for <b>status</b>
455         * <p>
456         * Description: <b>Status of the prescription</b><br>
457         * Type: <b>token</b><br>
458         * Path: <b>MedicationOrder.status</b><br>
459         * </p>
460         */
461        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
462
463        /**
464         * Search parameter constant for <b>prescriber</b>
465         * <p>
466         * Description: <b></b><br>
467         * Type: <b>reference</b><br>
468         * Path: <b>MedicationOrder.prescriber</b><br>
469         * </p>
470         */
471        @SearchParamDefinition(name="prescriber", path="MedicationOrder.prescriber", description="", type="reference" 
472, providesMembershipIn={
473 @Compartment(name="RelatedPerson")     }
474 )
475        public static final String SP_PRESCRIBER = "prescriber";
476
477        /**
478         * <b>Fluent Client</b> search parameter constant for <b>prescriber</b>
479         * <p>
480         * Description: <b></b><br>
481         * Type: <b>reference</b><br>
482         * Path: <b>MedicationOrder.prescriber</b><br>
483         * </p>
484         */
485        public static final ReferenceClientParam PRESCRIBER = new ReferenceClientParam(SP_PRESCRIBER);
486
487
488        /**
489         * Constant for fluent queries to be used to add include statements. Specifies
490         * the path value of "<b>MedicationOrder:encounter</b>".
491         */
492        public static final Include INCLUDE_ENCOUNTER = new Include("MedicationOrder:encounter");
493
494        /**
495         * Constant for fluent queries to be used to add include statements. Specifies
496         * the path value of "<b>MedicationOrder:medication</b>".
497         */
498        public static final Include INCLUDE_MEDICATION = new Include("MedicationOrder:medication");
499
500        /**
501         * Constant for fluent queries to be used to add include statements. Specifies
502         * the path value of "<b>MedicationOrder:patient</b>".
503         */
504        public static final Include INCLUDE_PATIENT = new Include("MedicationOrder:patient");
505
506        /**
507         * Constant for fluent queries to be used to add include statements. Specifies
508         * the path value of "<b>MedicationOrder:prescriber</b>".
509         */
510        public static final Include INCLUDE_PRESCRIBER = new Include("MedicationOrder:prescriber");
511
512
513        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
514        @Description(
515                shortDefinition="id",
516                formalDefinition="External identifier - one that would be used by another non-FHIR system - for example a re-imbursement system might issue its own id for each prescription that is created.  This is particularly important where FHIR only provides part of an entire workflow process where records have to be tracked through an entire system."
517        )
518        private java.util.List<IdentifierDt> myIdentifier;
519        
520        @Child(name="dateWritten", type=DateTimeDt.class, order=1, min=0, max=1, summary=false, modifier=false) 
521        @Description(
522                shortDefinition="when.recorded",
523                formalDefinition="The date (and perhaps time) when the prescription was written"
524        )
525        private DateTimeDt myDateWritten;
526        
527        @Child(name="status", type=CodeDt.class, order=2, min=0, max=1, summary=false, modifier=true)   
528        @Description(
529                shortDefinition="status",
530                formalDefinition="A code specifying the state of the order.  Generally this will be active or completed state"
531        )
532        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/medication-order-status")
533        private BoundCodeDt<MedicationOrderStatusEnum> myStatus;
534        
535        @Child(name="dateEnded", type=DateTimeDt.class, order=3, min=0, max=1, summary=false, modifier=false)   
536        @Description(
537                shortDefinition="",
538                formalDefinition="The date (and perhaps time) when the prescription was stopped"
539        )
540        private DateTimeDt myDateEnded;
541        
542        @Child(name="reasonEnded", type=CodeableConceptDt.class, order=4, min=0, max=1, summary=false, modifier=false)  
543        @Description(
544                shortDefinition="",
545                formalDefinition="The reason why the prescription was stopped, if it was"
546        )
547        private CodeableConceptDt myReasonEnded;
548        
549        @Child(name="patient", order=5, min=0, max=1, summary=false, modifier=false, type={
550                ca.uhn.fhir.model.dstu2.resource.Patient.class
551        })
552        @Description(
553                shortDefinition="who.focus",
554                formalDefinition="A link to a resource representing the person to whom the medication will be given."
555        )
556        private ResourceReferenceDt myPatient;
557        
558        @Child(name="prescriber", order=6, min=0, max=1, summary=false, modifier=false, type={
559                ca.uhn.fhir.model.dstu2.resource.Practitioner.class
560        })
561        @Description(
562                shortDefinition="who.actor",
563                formalDefinition="The healthcare professional responsible for authorizing the prescription"
564        )
565        private ResourceReferenceDt myPrescriber;
566        
567        @Child(name="encounter", order=7, min=0, max=1, summary=false, modifier=false, type={
568                ca.uhn.fhir.model.dstu2.resource.Encounter.class
569        })
570        @Description(
571                shortDefinition="context",
572                formalDefinition="A link to a resource that identifies the particular occurrence of contact between patient and health care provider."
573        )
574        private ResourceReferenceDt myEncounter;
575        
576        @Child(name="reason", order=8, min=0, max=1, summary=false, modifier=false, type={
577                CodeableConceptDt.class, 
578                Condition.class
579        })
580        @Description(
581                shortDefinition="why",
582                formalDefinition="Can be the reason or the indication for writing the prescription."
583        )
584        private IDatatype myReason;
585        
586        @Child(name="note", type=StringDt.class, order=9, min=0, max=1, summary=false, modifier=false)  
587        @Description(
588                shortDefinition="",
589                formalDefinition="Extra information about the prescription that could not be conveyed by the other attributes."
590        )
591        private StringDt myNote;
592        
593        @Child(name="medication", order=10, min=1, max=1, summary=false, modifier=false, type={
594                CodeableConceptDt.class, 
595                Medication.class
596        })
597        @Description(
598                shortDefinition="what",
599                formalDefinition="Identifies the medication being administered. This is a link to a resource that represents the medication which may be the details of the medication or simply an attribute carrying a code that identifies the medication from a known list of medications."
600        )
601        private IDatatype myMedication;
602        
603        @Child(name="dosageInstruction", order=11, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
604        @Description(
605                shortDefinition="",
606                formalDefinition="Indicates how the medication is to be used by the patient"
607        )
608        private java.util.List<DosageInstruction> myDosageInstruction;
609        
610        @Child(name="dispenseRequest", order=12, min=0, max=1, summary=false, modifier=false)   
611        @Description(
612                shortDefinition="",
613                formalDefinition="Indicates the specific details for the dispense or medication supply part of a medication order (also known as a Medication Prescription).  Note that this information is NOT always sent with the order.  There may be in some settings (e.g. hospitals) institutional or system support for completing the dispense details in the pharmacy department."
614        )
615        private DispenseRequest myDispenseRequest;
616        
617        @Child(name="substitution", order=13, min=0, max=1, summary=false, modifier=false)      
618        @Description(
619                shortDefinition="",
620                formalDefinition="Indicates whether or not substitution can or should be part of the dispense. In some cases substitution must happen, in other cases substitution must not happen, and in others it does not matter. This block explains the prescriber's intent. If nothing is specified substitution may be done."
621        )
622        private Substitution mySubstitution;
623        
624        @Child(name="priorPrescription", order=14, min=0, max=1, summary=false, modifier=false, type={
625                ca.uhn.fhir.model.dstu2.resource.MedicationOrder.class
626        })
627        @Description(
628                shortDefinition="",
629                formalDefinition="A link to a resource representing an earlier order or prescription that this order supersedes"
630        )
631        private ResourceReferenceDt myPriorPrescription;
632        
633
634        @Override
635        public boolean isEmpty() {
636                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myDateWritten,  myStatus,  myDateEnded,  myReasonEnded,  myPatient,  myPrescriber,  myEncounter,  myReason,  myNote,  myMedication,  myDosageInstruction,  myDispenseRequest,  mySubstitution,  myPriorPrescription);
637        }
638        
639        @Override
640        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
641                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myDateWritten, myStatus, myDateEnded, myReasonEnded, myPatient, myPrescriber, myEncounter, myReason, myNote, myMedication, myDosageInstruction, myDispenseRequest, mySubstitution, myPriorPrescription);
642        }
643
644        /**
645         * Gets the value(s) for <b>identifier</b> (id).
646         * creating it if it does
647         * not exist. Will not return <code>null</code>.
648         *
649     * <p>
650     * <b>Definition:</b>
651     * External identifier - one that would be used by another non-FHIR system - for example a re-imbursement system might issue its own id for each prescription that is created.  This is particularly important where FHIR only provides part of an entire workflow process where records have to be tracked through an entire system.
652     * </p> 
653         */
654        public java.util.List<IdentifierDt> getIdentifier() {  
655                if (myIdentifier == null) {
656                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
657                }
658                return myIdentifier;
659        }
660
661        /**
662         * Sets the value(s) for <b>identifier</b> (id)
663         *
664     * <p>
665     * <b>Definition:</b>
666     * External identifier - one that would be used by another non-FHIR system - for example a re-imbursement system might issue its own id for each prescription that is created.  This is particularly important where FHIR only provides part of an entire workflow process where records have to be tracked through an entire system.
667     * </p> 
668         */
669        public MedicationOrder setIdentifier(java.util.List<IdentifierDt> theValue) {
670                myIdentifier = theValue;
671                return this;
672        }
673        
674        
675
676        /**
677         * Adds and returns a new value for <b>identifier</b> (id)
678         *
679     * <p>
680     * <b>Definition:</b>
681     * External identifier - one that would be used by another non-FHIR system - for example a re-imbursement system might issue its own id for each prescription that is created.  This is particularly important where FHIR only provides part of an entire workflow process where records have to be tracked through an entire system.
682     * </p> 
683         */
684        public IdentifierDt addIdentifier() {
685                IdentifierDt newType = new IdentifierDt();
686                getIdentifier().add(newType);
687                return newType; 
688        }
689
690        /**
691         * Adds a given new value for <b>identifier</b> (id)
692         *
693         * <p>
694         * <b>Definition:</b>
695         * External identifier - one that would be used by another non-FHIR system - for example a re-imbursement system might issue its own id for each prescription that is created.  This is particularly important where FHIR only provides part of an entire workflow process where records have to be tracked through an entire system.
696         * </p>
697         * @param theValue The identifier to add (must not be <code>null</code>)
698         */
699        public MedicationOrder addIdentifier(IdentifierDt theValue) {
700                if (theValue == null) {
701                        throw new NullPointerException("theValue must not be null");
702                }
703                getIdentifier().add(theValue);
704                return this;
705        }
706
707        /**
708         * Gets the first repetition for <b>identifier</b> (id),
709         * creating it if it does not already exist.
710         *
711     * <p>
712     * <b>Definition:</b>
713     * External identifier - one that would be used by another non-FHIR system - for example a re-imbursement system might issue its own id for each prescription that is created.  This is particularly important where FHIR only provides part of an entire workflow process where records have to be tracked through an entire system.
714     * </p> 
715         */
716        public IdentifierDt getIdentifierFirstRep() {
717                if (getIdentifier().isEmpty()) {
718                        return addIdentifier();
719                }
720                return getIdentifier().get(0); 
721        }
722  
723        /**
724         * Gets the value(s) for <b>dateWritten</b> (when.recorded).
725         * creating it if it does
726         * not exist. Will not return <code>null</code>.
727         *
728     * <p>
729     * <b>Definition:</b>
730     * The date (and perhaps time) when the prescription was written
731     * </p> 
732         */
733        public DateTimeDt getDateWrittenElement() {  
734                if (myDateWritten == null) {
735                        myDateWritten = new DateTimeDt();
736                }
737                return myDateWritten;
738        }
739
740        
741        /**
742         * Gets the value(s) for <b>dateWritten</b> (when.recorded).
743         * creating it if it does
744         * not exist. This method may return <code>null</code>.
745         *
746     * <p>
747     * <b>Definition:</b>
748     * The date (and perhaps time) when the prescription was written
749     * </p> 
750         */
751        public Date getDateWritten() {  
752                return getDateWrittenElement().getValue();
753        }
754
755        /**
756         * Sets the value(s) for <b>dateWritten</b> (when.recorded)
757         *
758     * <p>
759     * <b>Definition:</b>
760     * The date (and perhaps time) when the prescription was written
761     * </p> 
762         */
763        public MedicationOrder setDateWritten(DateTimeDt theValue) {
764                myDateWritten = theValue;
765                return this;
766        }
767        
768        
769
770        /**
771         * Sets the value for <b>dateWritten</b> (when.recorded)
772         *
773     * <p>
774     * <b>Definition:</b>
775     * The date (and perhaps time) when the prescription was written
776     * </p> 
777         */
778        public MedicationOrder setDateWrittenWithSecondsPrecision( Date theDate) {
779                myDateWritten = new DateTimeDt(theDate); 
780                return this; 
781        }
782
783        /**
784         * Sets the value for <b>dateWritten</b> (when.recorded)
785         *
786     * <p>
787     * <b>Definition:</b>
788     * The date (and perhaps time) when the prescription was written
789     * </p> 
790         */
791        public MedicationOrder setDateWritten( Date theDate,  TemporalPrecisionEnum thePrecision) {
792                myDateWritten = new DateTimeDt(theDate, thePrecision); 
793                return this; 
794        }
795
796 
797        /**
798         * Gets the value(s) for <b>status</b> (status).
799         * creating it if it does
800         * not exist. Will not return <code>null</code>.
801         *
802     * <p>
803     * <b>Definition:</b>
804     * A code specifying the state of the order.  Generally this will be active or completed state
805     * </p> 
806         */
807        public BoundCodeDt<MedicationOrderStatusEnum> getStatusElement() {  
808                if (myStatus == null) {
809                        myStatus = new BoundCodeDt<MedicationOrderStatusEnum>(MedicationOrderStatusEnum.VALUESET_BINDER);
810                }
811                return myStatus;
812        }
813
814        
815        /**
816         * Gets the value(s) for <b>status</b> (status).
817         * creating it if it does
818         * not exist. This method may return <code>null</code>.
819         *
820     * <p>
821     * <b>Definition:</b>
822     * A code specifying the state of the order.  Generally this will be active or completed state
823     * </p> 
824         */
825        public String getStatus() {  
826                return getStatusElement().getValue();
827        }
828
829        /**
830         * Sets the value(s) for <b>status</b> (status)
831         *
832     * <p>
833     * <b>Definition:</b>
834     * A code specifying the state of the order.  Generally this will be active or completed state
835     * </p> 
836         */
837        public MedicationOrder setStatus(BoundCodeDt<MedicationOrderStatusEnum> theValue) {
838                myStatus = theValue;
839                return this;
840        }
841        
842        
843
844        /**
845         * Sets the value(s) for <b>status</b> (status)
846         *
847     * <p>
848     * <b>Definition:</b>
849     * A code specifying the state of the order.  Generally this will be active or completed state
850     * </p> 
851         */
852        public MedicationOrder setStatus(MedicationOrderStatusEnum theValue) {
853                setStatus(new BoundCodeDt<MedicationOrderStatusEnum>(MedicationOrderStatusEnum.VALUESET_BINDER, theValue));
854                
855/*
856                getStatusElement().setValueAsEnum(theValue);
857*/
858                return this;
859        }
860
861  
862        /**
863         * Gets the value(s) for <b>dateEnded</b> ().
864         * creating it if it does
865         * not exist. Will not return <code>null</code>.
866         *
867     * <p>
868     * <b>Definition:</b>
869     * The date (and perhaps time) when the prescription was stopped
870     * </p> 
871         */
872        public DateTimeDt getDateEndedElement() {  
873                if (myDateEnded == null) {
874                        myDateEnded = new DateTimeDt();
875                }
876                return myDateEnded;
877        }
878
879        
880        /**
881         * Gets the value(s) for <b>dateEnded</b> ().
882         * creating it if it does
883         * not exist. This method may return <code>null</code>.
884         *
885     * <p>
886     * <b>Definition:</b>
887     * The date (and perhaps time) when the prescription was stopped
888     * </p> 
889         */
890        public Date getDateEnded() {  
891                return getDateEndedElement().getValue();
892        }
893
894        /**
895         * Sets the value(s) for <b>dateEnded</b> ()
896         *
897     * <p>
898     * <b>Definition:</b>
899     * The date (and perhaps time) when the prescription was stopped
900     * </p> 
901         */
902        public MedicationOrder setDateEnded(DateTimeDt theValue) {
903                myDateEnded = theValue;
904                return this;
905        }
906        
907        
908
909        /**
910         * Sets the value for <b>dateEnded</b> ()
911         *
912     * <p>
913     * <b>Definition:</b>
914     * The date (and perhaps time) when the prescription was stopped
915     * </p> 
916         */
917        public MedicationOrder setDateEndedWithSecondsPrecision( Date theDate) {
918                myDateEnded = new DateTimeDt(theDate); 
919                return this; 
920        }
921
922        /**
923         * Sets the value for <b>dateEnded</b> ()
924         *
925     * <p>
926     * <b>Definition:</b>
927     * The date (and perhaps time) when the prescription was stopped
928     * </p> 
929         */
930        public MedicationOrder setDateEnded( Date theDate,  TemporalPrecisionEnum thePrecision) {
931                myDateEnded = new DateTimeDt(theDate, thePrecision); 
932                return this; 
933        }
934
935 
936        /**
937         * Gets the value(s) for <b>reasonEnded</b> ().
938         * creating it if it does
939         * not exist. Will not return <code>null</code>.
940         *
941     * <p>
942     * <b>Definition:</b>
943     * The reason why the prescription was stopped, if it was
944     * </p> 
945         */
946        public CodeableConceptDt getReasonEnded() {  
947                if (myReasonEnded == null) {
948                        myReasonEnded = new CodeableConceptDt();
949                }
950                return myReasonEnded;
951        }
952
953        /**
954         * Sets the value(s) for <b>reasonEnded</b> ()
955         *
956     * <p>
957     * <b>Definition:</b>
958     * The reason why the prescription was stopped, if it was
959     * </p> 
960         */
961        public MedicationOrder setReasonEnded(CodeableConceptDt theValue) {
962                myReasonEnded = theValue;
963                return this;
964        }
965        
966        
967
968  
969        /**
970         * Gets the value(s) for <b>patient</b> (who.focus).
971         * creating it if it does
972         * not exist. Will not return <code>null</code>.
973         *
974     * <p>
975     * <b>Definition:</b>
976     * A link to a resource representing the person to whom the medication will be given.
977     * </p> 
978         */
979        public ResourceReferenceDt getPatient() {  
980                if (myPatient == null) {
981                        myPatient = new ResourceReferenceDt();
982                }
983                return myPatient;
984        }
985
986        /**
987         * Sets the value(s) for <b>patient</b> (who.focus)
988         *
989     * <p>
990     * <b>Definition:</b>
991     * A link to a resource representing the person to whom the medication will be given.
992     * </p> 
993         */
994        public MedicationOrder setPatient(ResourceReferenceDt theValue) {
995                myPatient = theValue;
996                return this;
997        }
998        
999        
1000
1001  
1002        /**
1003         * Gets the value(s) for <b>prescriber</b> (who.actor).
1004         * creating it if it does
1005         * not exist. Will not return <code>null</code>.
1006         *
1007     * <p>
1008     * <b>Definition:</b>
1009     * The healthcare professional responsible for authorizing the prescription
1010     * </p> 
1011         */
1012        public ResourceReferenceDt getPrescriber() {  
1013                if (myPrescriber == null) {
1014                        myPrescriber = new ResourceReferenceDt();
1015                }
1016                return myPrescriber;
1017        }
1018
1019        /**
1020         * Sets the value(s) for <b>prescriber</b> (who.actor)
1021         *
1022     * <p>
1023     * <b>Definition:</b>
1024     * The healthcare professional responsible for authorizing the prescription
1025     * </p> 
1026         */
1027        public MedicationOrder setPrescriber(ResourceReferenceDt theValue) {
1028                myPrescriber = theValue;
1029                return this;
1030        }
1031        
1032        
1033
1034  
1035        /**
1036         * Gets the value(s) for <b>encounter</b> (context).
1037         * creating it if it does
1038         * not exist. Will not return <code>null</code>.
1039         *
1040     * <p>
1041     * <b>Definition:</b>
1042     * A link to a resource that identifies the particular occurrence of contact between patient and health care provider.
1043     * </p> 
1044         */
1045        public ResourceReferenceDt getEncounter() {  
1046                if (myEncounter == null) {
1047                        myEncounter = new ResourceReferenceDt();
1048                }
1049                return myEncounter;
1050        }
1051
1052        /**
1053         * Sets the value(s) for <b>encounter</b> (context)
1054         *
1055     * <p>
1056     * <b>Definition:</b>
1057     * A link to a resource that identifies the particular occurrence of contact between patient and health care provider.
1058     * </p> 
1059         */
1060        public MedicationOrder setEncounter(ResourceReferenceDt theValue) {
1061                myEncounter = theValue;
1062                return this;
1063        }
1064        
1065        
1066
1067  
1068        /**
1069         * Gets the value(s) for <b>reason[x]</b> (why).
1070         * creating it if it does
1071         * not exist. Will not return <code>null</code>.
1072         *
1073     * <p>
1074     * <b>Definition:</b>
1075     * Can be the reason or the indication for writing the prescription.
1076     * </p> 
1077         */
1078        public IDatatype getReason() {  
1079                return myReason;
1080        }
1081
1082        /**
1083         * Sets the value(s) for <b>reason[x]</b> (why)
1084         *
1085     * <p>
1086     * <b>Definition:</b>
1087     * Can be the reason or the indication for writing the prescription.
1088     * </p> 
1089         */
1090        public MedicationOrder setReason(IDatatype theValue) {
1091                myReason = theValue;
1092                return this;
1093        }
1094        
1095        
1096
1097  
1098        /**
1099         * Gets the value(s) for <b>note</b> ().
1100         * creating it if it does
1101         * not exist. Will not return <code>null</code>.
1102         *
1103     * <p>
1104     * <b>Definition:</b>
1105     * Extra information about the prescription that could not be conveyed by the other attributes.
1106     * </p> 
1107         */
1108        public StringDt getNoteElement() {  
1109                if (myNote == null) {
1110                        myNote = new StringDt();
1111                }
1112                return myNote;
1113        }
1114
1115        
1116        /**
1117         * Gets the value(s) for <b>note</b> ().
1118         * creating it if it does
1119         * not exist. This method may return <code>null</code>.
1120         *
1121     * <p>
1122     * <b>Definition:</b>
1123     * Extra information about the prescription that could not be conveyed by the other attributes.
1124     * </p> 
1125         */
1126        public String getNote() {  
1127                return getNoteElement().getValue();
1128        }
1129
1130        /**
1131         * Sets the value(s) for <b>note</b> ()
1132         *
1133     * <p>
1134     * <b>Definition:</b>
1135     * Extra information about the prescription that could not be conveyed by the other attributes.
1136     * </p> 
1137         */
1138        public MedicationOrder setNote(StringDt theValue) {
1139                myNote = theValue;
1140                return this;
1141        }
1142        
1143        
1144
1145        /**
1146         * Sets the value for <b>note</b> ()
1147         *
1148     * <p>
1149     * <b>Definition:</b>
1150     * Extra information about the prescription that could not be conveyed by the other attributes.
1151     * </p> 
1152         */
1153        public MedicationOrder setNote( String theString) {
1154                myNote = new StringDt(theString); 
1155                return this; 
1156        }
1157
1158 
1159        /**
1160         * Gets the value(s) for <b>medication[x]</b> (what).
1161         * creating it if it does
1162         * not exist. Will not return <code>null</code>.
1163         *
1164     * <p>
1165     * <b>Definition:</b>
1166     * Identifies the medication being administered. This is a link to a resource that represents the medication which may be the details of the medication or simply an attribute carrying a code that identifies the medication from a known list of medications.
1167     * </p> 
1168         */
1169        public IDatatype getMedication() {  
1170                return myMedication;
1171        }
1172
1173        /**
1174         * Sets the value(s) for <b>medication[x]</b> (what)
1175         *
1176     * <p>
1177     * <b>Definition:</b>
1178     * Identifies the medication being administered. This is a link to a resource that represents the medication which may be the details of the medication or simply an attribute carrying a code that identifies the medication from a known list of medications.
1179     * </p> 
1180         */
1181        public MedicationOrder setMedication(IDatatype theValue) {
1182                myMedication = theValue;
1183                return this;
1184        }
1185        
1186        
1187
1188  
1189        /**
1190         * Gets the value(s) for <b>dosageInstruction</b> ().
1191         * creating it if it does
1192         * not exist. Will not return <code>null</code>.
1193         *
1194     * <p>
1195     * <b>Definition:</b>
1196     * Indicates how the medication is to be used by the patient
1197     * </p> 
1198         */
1199        public java.util.List<DosageInstruction> getDosageInstruction() {  
1200                if (myDosageInstruction == null) {
1201                        myDosageInstruction = new java.util.ArrayList<DosageInstruction>();
1202                }
1203                return myDosageInstruction;
1204        }
1205
1206        /**
1207         * Sets the value(s) for <b>dosageInstruction</b> ()
1208         *
1209     * <p>
1210     * <b>Definition:</b>
1211     * Indicates how the medication is to be used by the patient
1212     * </p> 
1213         */
1214        public MedicationOrder setDosageInstruction(java.util.List<DosageInstruction> theValue) {
1215                myDosageInstruction = theValue;
1216                return this;
1217        }
1218        
1219        
1220
1221        /**
1222         * Adds and returns a new value for <b>dosageInstruction</b> ()
1223         *
1224     * <p>
1225     * <b>Definition:</b>
1226     * Indicates how the medication is to be used by the patient
1227     * </p> 
1228         */
1229        public DosageInstruction addDosageInstruction() {
1230                DosageInstruction newType = new DosageInstruction();
1231                getDosageInstruction().add(newType);
1232                return newType; 
1233        }
1234
1235        /**
1236         * Adds a given new value for <b>dosageInstruction</b> ()
1237         *
1238         * <p>
1239         * <b>Definition:</b>
1240         * Indicates how the medication is to be used by the patient
1241         * </p>
1242         * @param theValue The dosageInstruction to add (must not be <code>null</code>)
1243         */
1244        public MedicationOrder addDosageInstruction(DosageInstruction theValue) {
1245                if (theValue == null) {
1246                        throw new NullPointerException("theValue must not be null");
1247                }
1248                getDosageInstruction().add(theValue);
1249                return this;
1250        }
1251
1252        /**
1253         * Gets the first repetition for <b>dosageInstruction</b> (),
1254         * creating it if it does not already exist.
1255         *
1256     * <p>
1257     * <b>Definition:</b>
1258     * Indicates how the medication is to be used by the patient
1259     * </p> 
1260         */
1261        public DosageInstruction getDosageInstructionFirstRep() {
1262                if (getDosageInstruction().isEmpty()) {
1263                        return addDosageInstruction();
1264                }
1265                return getDosageInstruction().get(0); 
1266        }
1267  
1268        /**
1269         * Gets the value(s) for <b>dispenseRequest</b> ().
1270         * creating it if it does
1271         * not exist. Will not return <code>null</code>.
1272         *
1273     * <p>
1274     * <b>Definition:</b>
1275     * Indicates the specific details for the dispense or medication supply part of a medication order (also known as a Medication Prescription).  Note that this information is NOT always sent with the order.  There may be in some settings (e.g. hospitals) institutional or system support for completing the dispense details in the pharmacy department.
1276     * </p> 
1277         */
1278        public DispenseRequest getDispenseRequest() {  
1279                if (myDispenseRequest == null) {
1280                        myDispenseRequest = new DispenseRequest();
1281                }
1282                return myDispenseRequest;
1283        }
1284
1285        /**
1286         * Sets the value(s) for <b>dispenseRequest</b> ()
1287         *
1288     * <p>
1289     * <b>Definition:</b>
1290     * Indicates the specific details for the dispense or medication supply part of a medication order (also known as a Medication Prescription).  Note that this information is NOT always sent with the order.  There may be in some settings (e.g. hospitals) institutional or system support for completing the dispense details in the pharmacy department.
1291     * </p> 
1292         */
1293        public MedicationOrder setDispenseRequest(DispenseRequest theValue) {
1294                myDispenseRequest = theValue;
1295                return this;
1296        }
1297        
1298        
1299
1300  
1301        /**
1302         * Gets the value(s) for <b>substitution</b> ().
1303         * creating it if it does
1304         * not exist. Will not return <code>null</code>.
1305         *
1306     * <p>
1307     * <b>Definition:</b>
1308     * Indicates whether or not substitution can or should be part of the dispense. In some cases substitution must happen, in other cases substitution must not happen, and in others it does not matter. This block explains the prescriber's intent. If nothing is specified substitution may be done.
1309     * </p> 
1310         */
1311        public Substitution getSubstitution() {  
1312                if (mySubstitution == null) {
1313                        mySubstitution = new Substitution();
1314                }
1315                return mySubstitution;
1316        }
1317
1318        /**
1319         * Sets the value(s) for <b>substitution</b> ()
1320         *
1321     * <p>
1322     * <b>Definition:</b>
1323     * Indicates whether or not substitution can or should be part of the dispense. In some cases substitution must happen, in other cases substitution must not happen, and in others it does not matter. This block explains the prescriber's intent. If nothing is specified substitution may be done.
1324     * </p> 
1325         */
1326        public MedicationOrder setSubstitution(Substitution theValue) {
1327                mySubstitution = theValue;
1328                return this;
1329        }
1330        
1331        
1332
1333  
1334        /**
1335         * Gets the value(s) for <b>priorPrescription</b> ().
1336         * creating it if it does
1337         * not exist. Will not return <code>null</code>.
1338         *
1339     * <p>
1340     * <b>Definition:</b>
1341     * A link to a resource representing an earlier order or prescription that this order supersedes
1342     * </p> 
1343         */
1344        public ResourceReferenceDt getPriorPrescription() {  
1345                if (myPriorPrescription == null) {
1346                        myPriorPrescription = new ResourceReferenceDt();
1347                }
1348                return myPriorPrescription;
1349        }
1350
1351        /**
1352         * Sets the value(s) for <b>priorPrescription</b> ()
1353         *
1354     * <p>
1355     * <b>Definition:</b>
1356     * A link to a resource representing an earlier order or prescription that this order supersedes
1357     * </p> 
1358         */
1359        public MedicationOrder setPriorPrescription(ResourceReferenceDt theValue) {
1360                myPriorPrescription = theValue;
1361                return this;
1362        }
1363        
1364        
1365
1366  
1367        /**
1368         * Block class for child element: <b>MedicationOrder.dosageInstruction</b> ()
1369         *
1370     * <p>
1371     * <b>Definition:</b>
1372     * Indicates how the medication is to be used by the patient
1373     * </p> 
1374         */
1375        @Block()        
1376        public static class DosageInstruction 
1377            extends  BaseIdentifiableElement  
1378            implements IResourceBlock {
1379        
1380        @Child(name="text", type=StringDt.class, order=0, min=0, max=1, summary=false, modifier=false)  
1381        @Description(
1382                shortDefinition="",
1383                formalDefinition="Free text dosage instructions can be used for cases where the instructions are too complex to code.  The content of this attribute does not include the name or description of the medication. When coded instructions are present, the free text instructions may still be present for display to humans taking or administering the medication. It is expected that the text instructions will always be populated.  If the dosage.timing attribute is also populated, then the dosage.text should reflect the same information as the timing."
1384        )
1385        private StringDt myText;
1386        
1387        @Child(name="additionalInstructions", type=CodeableConceptDt.class, order=1, min=0, max=1, summary=false, modifier=false)       
1388        @Description(
1389                shortDefinition="",
1390                formalDefinition="Additional instructions such as \"Swallow with plenty of water\" which may or may not be coded."
1391        )
1392        private CodeableConceptDt myAdditionalInstructions;
1393        
1394        @Child(name="timing", type=TimingDt.class, order=2, min=0, max=1, summary=false, modifier=false)        
1395        @Description(
1396                shortDefinition="",
1397                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\"."
1398        )
1399        private TimingDt myTiming;
1400        
1401        @Child(name="asNeeded", order=3, min=0, max=1, summary=false, modifier=false, type={
1402                BooleanDt.class, 
1403                CodeableConceptDt.class
1404        })
1405        @Description(
1406                shortDefinition="",
1407                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)."
1408        )
1409        private IDatatype myAsNeeded;
1410        
1411        @Child(name="site", order=4, min=0, max=1, summary=false, modifier=false, type={
1412                CodeableConceptDt.class, 
1413                BodySite.class
1414        })
1415        @Description(
1416                shortDefinition="",
1417                formalDefinition="A coded specification of the anatomic site where the medication first enters the body"
1418        )
1419        private IDatatype mySite;
1420        
1421        @Child(name="route", type=CodeableConceptDt.class, order=5, min=0, max=1, summary=false, modifier=false)        
1422        @Description(
1423                shortDefinition="",
1424                formalDefinition="A code specifying the route or physiological path of administration of a therapeutic agent into or onto a patient's body."
1425        )
1426        private CodeableConceptDt myRoute;
1427        
1428        @Child(name="method", type=CodeableConceptDt.class, order=6, min=0, max=1, summary=false, modifier=false)       
1429        @Description(
1430                shortDefinition="",
1431                formalDefinition="A coded value indicating the method by which the medication is introduced into or onto the body. Most commonly used for injections.  For examples, Slow Push; Deep IV."
1432        )
1433        private CodeableConceptDt myMethod;
1434        
1435        @Child(name="dose", order=7, min=0, max=1, summary=false, modifier=false, type={
1436                RangeDt.class, 
1437                SimpleQuantityDt.class
1438        })
1439        @Description(
1440                shortDefinition="",
1441                formalDefinition="The amount of therapeutic or other substance given at one administration event."
1442        )
1443        private IDatatype myDose;
1444        
1445        @Child(name="rate", order=8, min=0, max=1, summary=false, modifier=false, type={
1446                RatioDt.class, 
1447                RangeDt.class
1448        })
1449        @Description(
1450                shortDefinition="",
1451                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"
1452        )
1453        private IDatatype myRate;
1454        
1455        @Child(name="maxDosePerPeriod", type=RatioDt.class, order=9, min=0, max=1, summary=false, modifier=false)       
1456        @Description(
1457                shortDefinition="",
1458                formalDefinition="The maximum total quantity of a therapeutic substance that may be administered to a subject over the period of time.  For example, 1000mg in 24 hours."
1459        )
1460        private RatioDt myMaxDosePerPeriod;
1461        
1462
1463        @Override
1464        public boolean isEmpty() {
1465                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myText,  myAdditionalInstructions,  myTiming,  myAsNeeded,  mySite,  myRoute,  myMethod,  myDose,  myRate,  myMaxDosePerPeriod);
1466        }
1467        
1468        @Override
1469        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1470                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myText, myAdditionalInstructions, myTiming, myAsNeeded, mySite, myRoute, myMethod, myDose, myRate, myMaxDosePerPeriod);
1471        }
1472
1473        /**
1474         * Gets the value(s) for <b>text</b> ().
1475         * creating it if it does
1476         * not exist. Will not return <code>null</code>.
1477         *
1478     * <p>
1479     * <b>Definition:</b>
1480     * Free text dosage instructions can be used for cases where the instructions are too complex to code.  The content of this attribute does not include the name or description of the medication. When coded instructions are present, the free text instructions may still be present for display to humans taking or administering the medication. It is expected that the text instructions will always be populated.  If the dosage.timing attribute is also populated, then the dosage.text should reflect the same information as the timing.
1481     * </p> 
1482         */
1483        public StringDt getTextElement() {  
1484                if (myText == null) {
1485                        myText = new StringDt();
1486                }
1487                return myText;
1488        }
1489
1490        
1491        /**
1492         * Gets the value(s) for <b>text</b> ().
1493         * creating it if it does
1494         * not exist. This method may return <code>null</code>.
1495         *
1496     * <p>
1497     * <b>Definition:</b>
1498     * Free text dosage instructions can be used for cases where the instructions are too complex to code.  The content of this attribute does not include the name or description of the medication. When coded instructions are present, the free text instructions may still be present for display to humans taking or administering the medication. It is expected that the text instructions will always be populated.  If the dosage.timing attribute is also populated, then the dosage.text should reflect the same information as the timing.
1499     * </p> 
1500         */
1501        public String getText() {  
1502                return getTextElement().getValue();
1503        }
1504
1505        /**
1506         * Sets the value(s) for <b>text</b> ()
1507         *
1508     * <p>
1509     * <b>Definition:</b>
1510     * Free text dosage instructions can be used for cases where the instructions are too complex to code.  The content of this attribute does not include the name or description of the medication. When coded instructions are present, the free text instructions may still be present for display to humans taking or administering the medication. It is expected that the text instructions will always be populated.  If the dosage.timing attribute is also populated, then the dosage.text should reflect the same information as the timing.
1511     * </p> 
1512         */
1513        public DosageInstruction setText(StringDt theValue) {
1514                myText = theValue;
1515                return this;
1516        }
1517        
1518        
1519
1520        /**
1521         * Sets the value for <b>text</b> ()
1522         *
1523     * <p>
1524     * <b>Definition:</b>
1525     * Free text dosage instructions can be used for cases where the instructions are too complex to code.  The content of this attribute does not include the name or description of the medication. When coded instructions are present, the free text instructions may still be present for display to humans taking or administering the medication. It is expected that the text instructions will always be populated.  If the dosage.timing attribute is also populated, then the dosage.text should reflect the same information as the timing.
1526     * </p> 
1527         */
1528        public DosageInstruction setText( String theString) {
1529                myText = new StringDt(theString); 
1530                return this; 
1531        }
1532
1533 
1534        /**
1535         * Gets the value(s) for <b>additionalInstructions</b> ().
1536         * creating it if it does
1537         * not exist. Will not return <code>null</code>.
1538         *
1539     * <p>
1540     * <b>Definition:</b>
1541     * Additional instructions such as \&quot;Swallow with plenty of water\&quot; which may or may not be coded.
1542     * </p> 
1543         */
1544        public CodeableConceptDt getAdditionalInstructions() {  
1545                if (myAdditionalInstructions == null) {
1546                        myAdditionalInstructions = new CodeableConceptDt();
1547                }
1548                return myAdditionalInstructions;
1549        }
1550
1551        /**
1552         * Sets the value(s) for <b>additionalInstructions</b> ()
1553         *
1554     * <p>
1555     * <b>Definition:</b>
1556     * Additional instructions such as \&quot;Swallow with plenty of water\&quot; which may or may not be coded.
1557     * </p> 
1558         */
1559        public DosageInstruction setAdditionalInstructions(CodeableConceptDt theValue) {
1560                myAdditionalInstructions = theValue;
1561                return this;
1562        }
1563        
1564        
1565
1566  
1567        /**
1568         * Gets the value(s) for <b>timing</b> ().
1569         * creating it if it does
1570         * not exist. Will not return <code>null</code>.
1571         *
1572     * <p>
1573     * <b>Definition:</b>
1574     * 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;.
1575     * </p> 
1576         */
1577        public TimingDt getTiming() {  
1578                if (myTiming == null) {
1579                        myTiming = new TimingDt();
1580                }
1581                return myTiming;
1582        }
1583
1584        /**
1585         * Sets the value(s) for <b>timing</b> ()
1586         *
1587     * <p>
1588     * <b>Definition:</b>
1589     * 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;.
1590     * </p> 
1591         */
1592        public DosageInstruction setTiming(TimingDt theValue) {
1593                myTiming = theValue;
1594                return this;
1595        }
1596        
1597        
1598
1599  
1600        /**
1601         * Gets the value(s) for <b>asNeeded[x]</b> ().
1602         * creating it if it does
1603         * not exist. Will not return <code>null</code>.
1604         *
1605     * <p>
1606     * <b>Definition:</b>
1607     * 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).
1608     * </p> 
1609         */
1610        public IDatatype getAsNeeded() {  
1611                return myAsNeeded;
1612        }
1613
1614        /**
1615         * Sets the value(s) for <b>asNeeded[x]</b> ()
1616         *
1617     * <p>
1618     * <b>Definition:</b>
1619     * 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).
1620     * </p> 
1621         */
1622        public DosageInstruction setAsNeeded(IDatatype theValue) {
1623                myAsNeeded = theValue;
1624                return this;
1625        }
1626        
1627        
1628
1629  
1630        /**
1631         * Gets the value(s) for <b>site[x]</b> ().
1632         * creating it if it does
1633         * not exist. Will not return <code>null</code>.
1634         *
1635     * <p>
1636     * <b>Definition:</b>
1637     * A coded specification of the anatomic site where the medication first enters the body
1638     * </p> 
1639         */
1640        public IDatatype getSite() {  
1641                return mySite;
1642        }
1643
1644        /**
1645         * Sets the value(s) for <b>site[x]</b> ()
1646         *
1647     * <p>
1648     * <b>Definition:</b>
1649     * A coded specification of the anatomic site where the medication first enters the body
1650     * </p> 
1651         */
1652        public DosageInstruction setSite(IDatatype theValue) {
1653                mySite = theValue;
1654                return this;
1655        }
1656        
1657        
1658
1659  
1660        /**
1661         * Gets the value(s) for <b>route</b> ().
1662         * creating it if it does
1663         * not exist. Will not return <code>null</code>.
1664         *
1665     * <p>
1666     * <b>Definition:</b>
1667     * A code specifying the route or physiological path of administration of a therapeutic agent into or onto a patient's body.
1668     * </p> 
1669         */
1670        public CodeableConceptDt getRoute() {  
1671                if (myRoute == null) {
1672                        myRoute = new CodeableConceptDt();
1673                }
1674                return myRoute;
1675        }
1676
1677        /**
1678         * Sets the value(s) for <b>route</b> ()
1679         *
1680     * <p>
1681     * <b>Definition:</b>
1682     * A code specifying the route or physiological path of administration of a therapeutic agent into or onto a patient's body.
1683     * </p> 
1684         */
1685        public DosageInstruction setRoute(CodeableConceptDt theValue) {
1686                myRoute = theValue;
1687                return this;
1688        }
1689        
1690        
1691
1692  
1693        /**
1694         * Gets the value(s) for <b>method</b> ().
1695         * creating it if it does
1696         * not exist. Will not return <code>null</code>.
1697         *
1698     * <p>
1699     * <b>Definition:</b>
1700     * A coded value indicating the method by which the medication is introduced into or onto the body. Most commonly used for injections.  For examples, Slow Push; Deep IV.
1701     * </p> 
1702         */
1703        public CodeableConceptDt getMethod() {  
1704                if (myMethod == null) {
1705                        myMethod = new CodeableConceptDt();
1706                }
1707                return myMethod;
1708        }
1709
1710        /**
1711         * Sets the value(s) for <b>method</b> ()
1712         *
1713     * <p>
1714     * <b>Definition:</b>
1715     * A coded value indicating the method by which the medication is introduced into or onto the body. Most commonly used for injections.  For examples, Slow Push; Deep IV.
1716     * </p> 
1717         */
1718        public DosageInstruction setMethod(CodeableConceptDt theValue) {
1719                myMethod = theValue;
1720                return this;
1721        }
1722        
1723        
1724
1725  
1726        /**
1727         * Gets the value(s) for <b>dose[x]</b> ().
1728         * creating it if it does
1729         * not exist. Will not return <code>null</code>.
1730         *
1731     * <p>
1732     * <b>Definition:</b>
1733     * The amount of therapeutic or other substance given at one administration event.
1734     * </p> 
1735         */
1736        public IDatatype getDose() {  
1737                return myDose;
1738        }
1739
1740        /**
1741         * Sets the value(s) for <b>dose[x]</b> ()
1742         *
1743     * <p>
1744     * <b>Definition:</b>
1745     * The amount of therapeutic or other substance given at one administration event.
1746     * </p> 
1747         */
1748        public DosageInstruction setDose(IDatatype theValue) {
1749                myDose = theValue;
1750                return this;
1751        }
1752        
1753        
1754
1755  
1756        /**
1757         * Gets the value(s) for <b>rate[x]</b> ().
1758         * creating it if it does
1759         * not exist. Will not return <code>null</code>.
1760         *
1761     * <p>
1762     * <b>Definition:</b>
1763     * 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
1764     * </p> 
1765         */
1766        public IDatatype getRate() {  
1767                return myRate;
1768        }
1769
1770        /**
1771         * Sets the value(s) for <b>rate[x]</b> ()
1772         *
1773     * <p>
1774     * <b>Definition:</b>
1775     * 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
1776     * </p> 
1777         */
1778        public DosageInstruction setRate(IDatatype theValue) {
1779                myRate = theValue;
1780                return this;
1781        }
1782        
1783        
1784
1785  
1786        /**
1787         * Gets the value(s) for <b>maxDosePerPeriod</b> ().
1788         * creating it if it does
1789         * not exist. Will not return <code>null</code>.
1790         *
1791     * <p>
1792     * <b>Definition:</b>
1793     * The maximum total quantity of a therapeutic substance that may be administered to a subject over the period of time.  For example, 1000mg in 24 hours.
1794     * </p> 
1795         */
1796        public RatioDt getMaxDosePerPeriod() {  
1797                if (myMaxDosePerPeriod == null) {
1798                        myMaxDosePerPeriod = new RatioDt();
1799                }
1800                return myMaxDosePerPeriod;
1801        }
1802
1803        /**
1804         * Sets the value(s) for <b>maxDosePerPeriod</b> ()
1805         *
1806     * <p>
1807     * <b>Definition:</b>
1808     * The maximum total quantity of a therapeutic substance that may be administered to a subject over the period of time.  For example, 1000mg in 24 hours.
1809     * </p> 
1810         */
1811        public DosageInstruction setMaxDosePerPeriod(RatioDt theValue) {
1812                myMaxDosePerPeriod = theValue;
1813                return this;
1814        }
1815        
1816        
1817
1818  
1819
1820
1821        }
1822
1823
1824        /**
1825         * Block class for child element: <b>MedicationOrder.dispenseRequest</b> ()
1826         *
1827     * <p>
1828     * <b>Definition:</b>
1829     * Indicates the specific details for the dispense or medication supply part of a medication order (also known as a Medication Prescription).  Note that this information is NOT always sent with the order.  There may be in some settings (e.g. hospitals) institutional or system support for completing the dispense details in the pharmacy department.
1830     * </p> 
1831         */
1832        @Block()        
1833        public static class DispenseRequest 
1834            extends  BaseIdentifiableElement  
1835            implements IResourceBlock {
1836        
1837        @Child(name="medication", order=0, min=0, max=1, summary=false, modifier=false, type={
1838                CodeableConceptDt.class, 
1839                Medication.class
1840        })
1841        @Description(
1842                shortDefinition="",
1843                formalDefinition="Identifies the medication being administered. This is a link to a resource that represents the medication which may be the details of the medication or simply an attribute carrying a code that identifies the medication from a known list of medications."
1844        )
1845        private IDatatype myMedication;
1846        
1847        @Child(name="validityPeriod", type=PeriodDt.class, order=1, min=0, max=1, summary=false, modifier=false)        
1848        @Description(
1849                shortDefinition="",
1850                formalDefinition="This indicates the validity period of a prescription (stale dating the Prescription)"
1851        )
1852        private PeriodDt myValidityPeriod;
1853        
1854        @Child(name="numberOfRepeatsAllowed", type=PositiveIntDt.class, order=2, min=0, max=1, summary=false, modifier=false)   
1855        @Description(
1856                shortDefinition="",
1857                formalDefinition="An integer indicating the number of additional times (aka refills or repeats) the patient can receive the prescribed medication.   Usage Notes: This integer does NOT include the original order dispense.   This means that if an order indicates dispense 30 tablets plus  \"3 repeats\", then the order can be dispensed a total of 4 times and the patient can receive a total of 120 tablets."
1858        )
1859        private PositiveIntDt myNumberOfRepeatsAllowed;
1860        
1861        @Child(name="quantity", type=SimpleQuantityDt.class, order=3, min=0, max=1, summary=false, modifier=false)      
1862        @Description(
1863                shortDefinition="",
1864                formalDefinition="The amount that is to be dispensed for one fill."
1865        )
1866        private SimpleQuantityDt myQuantity;
1867        
1868        @Child(name="expectedSupplyDuration", type=DurationDt.class, order=4, min=0, max=1, summary=false, modifier=false)      
1869        @Description(
1870                shortDefinition="",
1871                formalDefinition="Identifies the period time over which the supplied product is expected to be used, or the length of time the dispense is expected to last."
1872        )
1873        private DurationDt myExpectedSupplyDuration;
1874        
1875
1876        @Override
1877        public boolean isEmpty() {
1878                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myMedication,  myValidityPeriod,  myNumberOfRepeatsAllowed,  myQuantity,  myExpectedSupplyDuration);
1879        }
1880        
1881        @Override
1882        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1883                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myMedication, myValidityPeriod, myNumberOfRepeatsAllowed, myQuantity, myExpectedSupplyDuration);
1884        }
1885
1886        /**
1887         * Gets the value(s) for <b>medication[x]</b> ().
1888         * creating it if it does
1889         * not exist. Will not return <code>null</code>.
1890         *
1891     * <p>
1892     * <b>Definition:</b>
1893     * Identifies the medication being administered. This is a link to a resource that represents the medication which may be the details of the medication or simply an attribute carrying a code that identifies the medication from a known list of medications.
1894     * </p> 
1895         */
1896        public IDatatype getMedication() {  
1897                return myMedication;
1898        }
1899
1900        /**
1901         * Sets the value(s) for <b>medication[x]</b> ()
1902         *
1903     * <p>
1904     * <b>Definition:</b>
1905     * Identifies the medication being administered. This is a link to a resource that represents the medication which may be the details of the medication or simply an attribute carrying a code that identifies the medication from a known list of medications.
1906     * </p> 
1907         */
1908        public DispenseRequest setMedication(IDatatype theValue) {
1909                myMedication = theValue;
1910                return this;
1911        }
1912        
1913        
1914
1915  
1916        /**
1917         * Gets the value(s) for <b>validityPeriod</b> ().
1918         * creating it if it does
1919         * not exist. Will not return <code>null</code>.
1920         *
1921     * <p>
1922     * <b>Definition:</b>
1923     * This indicates the validity period of a prescription (stale dating the Prescription)
1924     * </p> 
1925         */
1926        public PeriodDt getValidityPeriod() {  
1927                if (myValidityPeriod == null) {
1928                        myValidityPeriod = new PeriodDt();
1929                }
1930                return myValidityPeriod;
1931        }
1932
1933        /**
1934         * Sets the value(s) for <b>validityPeriod</b> ()
1935         *
1936     * <p>
1937     * <b>Definition:</b>
1938     * This indicates the validity period of a prescription (stale dating the Prescription)
1939     * </p> 
1940         */
1941        public DispenseRequest setValidityPeriod(PeriodDt theValue) {
1942                myValidityPeriod = theValue;
1943                return this;
1944        }
1945        
1946        
1947
1948  
1949        /**
1950         * Gets the value(s) for <b>numberOfRepeatsAllowed</b> ().
1951         * creating it if it does
1952         * not exist. Will not return <code>null</code>.
1953         *
1954     * <p>
1955     * <b>Definition:</b>
1956     * An integer indicating the number of additional times (aka refills or repeats) the patient can receive the prescribed medication.   Usage Notes: This integer does NOT include the original order dispense.   This means that if an order indicates dispense 30 tablets plus  \&quot;3 repeats\&quot;, then the order can be dispensed a total of 4 times and the patient can receive a total of 120 tablets.
1957     * </p> 
1958         */
1959        public PositiveIntDt getNumberOfRepeatsAllowedElement() {  
1960                if (myNumberOfRepeatsAllowed == null) {
1961                        myNumberOfRepeatsAllowed = new PositiveIntDt();
1962                }
1963                return myNumberOfRepeatsAllowed;
1964        }
1965
1966        
1967        /**
1968         * Gets the value(s) for <b>numberOfRepeatsAllowed</b> ().
1969         * creating it if it does
1970         * not exist. This method may return <code>null</code>.
1971         *
1972     * <p>
1973     * <b>Definition:</b>
1974     * An integer indicating the number of additional times (aka refills or repeats) the patient can receive the prescribed medication.   Usage Notes: This integer does NOT include the original order dispense.   This means that if an order indicates dispense 30 tablets plus  \&quot;3 repeats\&quot;, then the order can be dispensed a total of 4 times and the patient can receive a total of 120 tablets.
1975     * </p> 
1976         */
1977        public Integer getNumberOfRepeatsAllowed() {  
1978                return getNumberOfRepeatsAllowedElement().getValue();
1979        }
1980
1981        /**
1982         * Sets the value(s) for <b>numberOfRepeatsAllowed</b> ()
1983         *
1984     * <p>
1985     * <b>Definition:</b>
1986     * An integer indicating the number of additional times (aka refills or repeats) the patient can receive the prescribed medication.   Usage Notes: This integer does NOT include the original order dispense.   This means that if an order indicates dispense 30 tablets plus  \&quot;3 repeats\&quot;, then the order can be dispensed a total of 4 times and the patient can receive a total of 120 tablets.
1987     * </p> 
1988         */
1989        public DispenseRequest setNumberOfRepeatsAllowed(PositiveIntDt theValue) {
1990                myNumberOfRepeatsAllowed = theValue;
1991                return this;
1992        }
1993        
1994        
1995
1996        /**
1997         * Sets the value for <b>numberOfRepeatsAllowed</b> ()
1998         *
1999     * <p>
2000     * <b>Definition:</b>
2001     * An integer indicating the number of additional times (aka refills or repeats) the patient can receive the prescribed medication.   Usage Notes: This integer does NOT include the original order dispense.   This means that if an order indicates dispense 30 tablets plus  \&quot;3 repeats\&quot;, then the order can be dispensed a total of 4 times and the patient can receive a total of 120 tablets.
2002     * </p> 
2003         */
2004        public DispenseRequest setNumberOfRepeatsAllowed( int theInteger) {
2005                myNumberOfRepeatsAllowed = new PositiveIntDt(theInteger); 
2006                return this; 
2007        }
2008
2009 
2010        /**
2011         * Gets the value(s) for <b>quantity</b> ().
2012         * creating it if it does
2013         * not exist. Will not return <code>null</code>.
2014         *
2015     * <p>
2016     * <b>Definition:</b>
2017     * The amount that is to be dispensed for one fill.
2018     * </p> 
2019         */
2020        public SimpleQuantityDt getQuantity() {  
2021                if (myQuantity == null) {
2022                        myQuantity = new SimpleQuantityDt();
2023                }
2024                return myQuantity;
2025        }
2026
2027        /**
2028         * Sets the value(s) for <b>quantity</b> ()
2029         *
2030     * <p>
2031     * <b>Definition:</b>
2032     * The amount that is to be dispensed for one fill.
2033     * </p> 
2034         */
2035        public DispenseRequest setQuantity(SimpleQuantityDt theValue) {
2036                myQuantity = theValue;
2037                return this;
2038        }
2039        
2040        
2041
2042  
2043        /**
2044         * Gets the value(s) for <b>expectedSupplyDuration</b> ().
2045         * creating it if it does
2046         * not exist. Will not return <code>null</code>.
2047         *
2048     * <p>
2049     * <b>Definition:</b>
2050     * Identifies the period time over which the supplied product is expected to be used, or the length of time the dispense is expected to last.
2051     * </p> 
2052         */
2053        public DurationDt getExpectedSupplyDuration() {  
2054                if (myExpectedSupplyDuration == null) {
2055                        myExpectedSupplyDuration = new DurationDt();
2056                }
2057                return myExpectedSupplyDuration;
2058        }
2059
2060        /**
2061         * Sets the value(s) for <b>expectedSupplyDuration</b> ()
2062         *
2063     * <p>
2064     * <b>Definition:</b>
2065     * Identifies the period time over which the supplied product is expected to be used, or the length of time the dispense is expected to last.
2066     * </p> 
2067         */
2068        public DispenseRequest setExpectedSupplyDuration(DurationDt theValue) {
2069                myExpectedSupplyDuration = theValue;
2070                return this;
2071        }
2072        
2073        
2074
2075  
2076
2077
2078        }
2079
2080
2081        /**
2082         * Block class for child element: <b>MedicationOrder.substitution</b> ()
2083         *
2084     * <p>
2085     * <b>Definition:</b>
2086     * Indicates whether or not substitution can or should be part of the dispense. In some cases substitution must happen, in other cases substitution must not happen, and in others it does not matter. This block explains the prescriber's intent. If nothing is specified substitution may be done.
2087     * </p> 
2088         */
2089        @Block()        
2090        public static class Substitution 
2091            extends  BaseIdentifiableElement  
2092            implements IResourceBlock {
2093        
2094        @Child(name="type", type=CodeableConceptDt.class, order=0, min=1, max=1, summary=false, modifier=false) 
2095        @Description(
2096                shortDefinition="",
2097                formalDefinition="A code signifying whether a different drug should be dispensed from what was prescribed."
2098        )
2099        private CodeableConceptDt myType;
2100        
2101        @Child(name="reason", type=CodeableConceptDt.class, order=1, min=0, max=1, summary=false, modifier=false)       
2102        @Description(
2103                shortDefinition="",
2104                formalDefinition="Indicates the reason for the substitution, or why substitution must or must not be performed."
2105        )
2106        private CodeableConceptDt myReason;
2107        
2108
2109        @Override
2110        public boolean isEmpty() {
2111                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myType,  myReason);
2112        }
2113        
2114        @Override
2115        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2116                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myType, myReason);
2117        }
2118
2119        /**
2120         * Gets the value(s) for <b>type</b> ().
2121         * creating it if it does
2122         * not exist. Will not return <code>null</code>.
2123         *
2124     * <p>
2125     * <b>Definition:</b>
2126     * A code signifying whether a different drug should be dispensed from what was prescribed.
2127     * </p> 
2128         */
2129        public CodeableConceptDt getType() {  
2130                if (myType == null) {
2131                        myType = new CodeableConceptDt();
2132                }
2133                return myType;
2134        }
2135
2136        /**
2137         * Sets the value(s) for <b>type</b> ()
2138         *
2139     * <p>
2140     * <b>Definition:</b>
2141     * A code signifying whether a different drug should be dispensed from what was prescribed.
2142     * </p> 
2143         */
2144        public Substitution setType(CodeableConceptDt theValue) {
2145                myType = theValue;
2146                return this;
2147        }
2148        
2149        
2150
2151  
2152        /**
2153         * Gets the value(s) for <b>reason</b> ().
2154         * creating it if it does
2155         * not exist. Will not return <code>null</code>.
2156         *
2157     * <p>
2158     * <b>Definition:</b>
2159     * Indicates the reason for the substitution, or why substitution must or must not be performed.
2160     * </p> 
2161         */
2162        public CodeableConceptDt getReason() {  
2163                if (myReason == null) {
2164                        myReason = new CodeableConceptDt();
2165                }
2166                return myReason;
2167        }
2168
2169        /**
2170         * Sets the value(s) for <b>reason</b> ()
2171         *
2172     * <p>
2173     * <b>Definition:</b>
2174     * Indicates the reason for the substitution, or why substitution must or must not be performed.
2175     * </p> 
2176         */
2177        public Substitution setReason(CodeableConceptDt theValue) {
2178                myReason = theValue;
2179                return this;
2180        }
2181        
2182        
2183
2184  
2185
2186
2187        }
2188
2189
2190
2191
2192    @Override
2193    public String getResourceName() {
2194        return "MedicationOrder";
2195    }
2196    
2197    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
2198        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
2199    }
2200
2201
2202}