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>MedicationStatement</b> Resource
282 * (clinical.medication)
283 *
284 * <p>
285 * <b>Definition:</b>
286 * A record of a medication that is being consumed by a patient.   A MedicationStatement may indicate that the patient may be taking the medication now, or has taken the medication in the past or will be taking the medication in the future.  The source of this information can be the patient, significant other (such as a family member or spouse), or a clinician.  A common scenario where this information is captured is during the history taking process during a patient visit or stay.   The medication information may come from e.g. the patient's memory, from a prescription bottle,  or from a list of medications the patient, clinician or other party maintains The primary difference between a medication statement and a medication administration is that the medication administration has complete administration information and is based on actual administration information from the person who administered the medication.  A medication statement is often, if not always, less specific.  There is no required date/time when the medication was administered, in fact we only know that a source has reported the patient is taking this medication, where details such as time, quantity, or rate or even medication product may be incomplete or missing or less precise.  As stated earlier, the medication statement information may come from the patient's memory, from a prescription bottle or from a list of medications the patient, clinician or other party maintains.  Medication administration is more formal and is not missing detailed information.
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/MedicationStatement">http://hl7.org/fhir/profiles/MedicationStatement</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="MedicationStatement", profile="http://hl7.org/fhir/profiles/MedicationStatement", id="medicationstatement")
301public class MedicationStatement extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource 
303    {
304
305        /**
306         * Search parameter constant for <b>identifier</b>
307         * <p>
308         * Description: <b>Return statements with this external identifier</b><br>
309         * Type: <b>token</b><br>
310         * Path: <b>MedicationStatement.identifier</b><br>
311         * </p>
312         */
313        @SearchParamDefinition(name="identifier", path="MedicationStatement.identifier", description="Return statements with this external identifier", type="token" 
314 )
315        public static final String SP_IDENTIFIER = "identifier";
316
317        /**
318         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
319         * <p>
320         * Description: <b>Return statements with this external identifier</b><br>
321         * Type: <b>token</b><br>
322         * Path: <b>MedicationStatement.identifier</b><br>
323         * </p>
324         */
325        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
326
327        /**
328         * Search parameter constant for <b>medication</b>
329         * <p>
330         * Description: <b>Return administrations of this medication reference</b><br>
331         * Type: <b>reference</b><br>
332         * Path: <b>MedicationStatement.medicationReference</b><br>
333         * </p>
334         */
335        @SearchParamDefinition(name="medication", path="MedicationStatement.medicationReference", description="Return administrations of this medication reference", type="reference" 
336 )
337        public static final String SP_MEDICATION = "medication";
338
339        /**
340         * <b>Fluent Client</b> search parameter constant for <b>medication</b>
341         * <p>
342         * Description: <b>Return administrations of this medication reference</b><br>
343         * Type: <b>reference</b><br>
344         * Path: <b>MedicationStatement.medicationReference</b><br>
345         * </p>
346         */
347        public static final ReferenceClientParam MEDICATION = new ReferenceClientParam(SP_MEDICATION);
348
349        /**
350         * Search parameter constant for <b>code</b>
351         * <p>
352         * Description: <b>Return administrations of this medication code</b><br>
353         * Type: <b>token</b><br>
354         * Path: <b>MedicationStatement.medicationCodeableConcept</b><br>
355         * </p>
356         */
357        @SearchParamDefinition(name="code", path="MedicationStatement.medicationCodeableConcept", description="Return administrations of this medication code", type="token" 
358 )
359        public static final String SP_CODE = "code";
360
361        /**
362         * <b>Fluent Client</b> search parameter constant for <b>code</b>
363         * <p>
364         * Description: <b>Return administrations of this medication code</b><br>
365         * Type: <b>token</b><br>
366         * Path: <b>MedicationStatement.medicationCodeableConcept</b><br>
367         * </p>
368         */
369        public static final TokenClientParam CODE = new TokenClientParam(SP_CODE);
370
371        /**
372         * Search parameter constant for <b>patient</b>
373         * <p>
374         * Description: <b>The identity of a patient to list statements  for</b><br>
375         * Type: <b>reference</b><br>
376         * Path: <b>MedicationStatement.patient</b><br>
377         * </p>
378         */
379        @SearchParamDefinition(name="patient", path="MedicationStatement.patient", description="The identity of a patient to list statements  for", type="reference" 
380, providesMembershipIn={
381 @Compartment(name="Patient")   }
382 )
383        public static final String SP_PATIENT = "patient";
384
385        /**
386         * <b>Fluent Client</b> search parameter constant for <b>patient</b>
387         * <p>
388         * Description: <b>The identity of a patient to list statements  for</b><br>
389         * Type: <b>reference</b><br>
390         * Path: <b>MedicationStatement.patient</b><br>
391         * </p>
392         */
393        public static final ReferenceClientParam PATIENT = new ReferenceClientParam(SP_PATIENT);
394
395        /**
396         * Search parameter constant for <b>effectivedate</b>
397         * <p>
398         * Description: <b>Date when patient was taking (or not taking) the medication</b><br>
399         * Type: <b>date</b><br>
400         * Path: <b>MedicationStatement.effective[x]</b><br>
401         * </p>
402         */
403        @SearchParamDefinition(name="effectivedate", path="MedicationStatement.effective[x]", description="Date when patient was taking (or not taking) the medication", type="date" 
404 )
405        public static final String SP_EFFECTIVEDATE = "effectivedate";
406
407        /**
408         * <b>Fluent Client</b> search parameter constant for <b>effectivedate</b>
409         * <p>
410         * Description: <b>Date when patient was taking (or not taking) the medication</b><br>
411         * Type: <b>date</b><br>
412         * Path: <b>MedicationStatement.effective[x]</b><br>
413         * </p>
414         */
415        public static final DateClientParam EFFECTIVEDATE = new DateClientParam(SP_EFFECTIVEDATE);
416
417        /**
418         * Search parameter constant for <b>status</b>
419         * <p>
420         * Description: <b>Return statements that match the given status</b><br>
421         * Type: <b>token</b><br>
422         * Path: <b>MedicationStatement.status</b><br>
423         * </p>
424         */
425        @SearchParamDefinition(name="status", path="MedicationStatement.status", description="Return statements that match the given status", type="token" 
426 )
427        public static final String SP_STATUS = "status";
428
429        /**
430         * <b>Fluent Client</b> search parameter constant for <b>status</b>
431         * <p>
432         * Description: <b>Return statements that match the given status</b><br>
433         * Type: <b>token</b><br>
434         * Path: <b>MedicationStatement.status</b><br>
435         * </p>
436         */
437        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
438
439        /**
440         * Search parameter constant for <b>source</b>
441         * <p>
442         * Description: <b>Who the information in the statement came from</b><br>
443         * Type: <b>reference</b><br>
444         * Path: <b>MedicationStatement.informationSource</b><br>
445         * </p>
446         */
447        @SearchParamDefinition(name="source", path="MedicationStatement.informationSource", description="Who the information in the statement came from", type="reference" 
448, providesMembershipIn={
449 @Compartment(name="Patient") ,  @Compartment(name="Encounter") ,  @Compartment(name="RelatedPerson")   }
450 )
451        public static final String SP_SOURCE = "source";
452
453        /**
454         * <b>Fluent Client</b> search parameter constant for <b>source</b>
455         * <p>
456         * Description: <b>Who the information in the statement came from</b><br>
457         * Type: <b>reference</b><br>
458         * Path: <b>MedicationStatement.informationSource</b><br>
459         * </p>
460         */
461        public static final ReferenceClientParam SOURCE = new ReferenceClientParam(SP_SOURCE);
462
463
464        /**
465         * Constant for fluent queries to be used to add include statements. Specifies
466         * the path value of "<b>MedicationStatement:medication</b>".
467         */
468        public static final Include INCLUDE_MEDICATION = new Include("MedicationStatement:medication");
469
470        /**
471         * Constant for fluent queries to be used to add include statements. Specifies
472         * the path value of "<b>MedicationStatement:patient</b>".
473         */
474        public static final Include INCLUDE_PATIENT = new Include("MedicationStatement:patient");
475
476        /**
477         * Constant for fluent queries to be used to add include statements. Specifies
478         * the path value of "<b>MedicationStatement:source</b>".
479         */
480        public static final Include INCLUDE_SOURCE = new Include("MedicationStatement:source");
481
482
483        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
484        @Description(
485                shortDefinition="id",
486                formalDefinition="External identifier - FHIR will generate its own internal identifiers (probably URLs) which do not need to be explicitly managed by the resource.  The identifier here is one that would be used by another non-FHIR system - for example an automated medication pump would provide a record each time it operated; an administration while the patient was off the ward might be made with a different system and entered after the event.  Particularly important if these records have to be updated."
487        )
488        private java.util.List<IdentifierDt> myIdentifier;
489        
490        @Child(name="patient", order=1, min=1, max=1, summary=false, modifier=false, type={
491                ca.uhn.fhir.model.dstu2.resource.Patient.class
492        })
493        @Description(
494                shortDefinition="who.focus",
495                formalDefinition="The person or animal who is/was taking the medication."
496        )
497        private ResourceReferenceDt myPatient;
498        
499        @Child(name="informationSource", order=2, min=0, max=1, summary=false, modifier=false, type={
500                ca.uhn.fhir.model.dstu2.resource.Patient.class, 
501                ca.uhn.fhir.model.dstu2.resource.Practitioner.class, 
502                ca.uhn.fhir.model.dstu2.resource.RelatedPerson.class
503        })
504        @Description(
505                shortDefinition="who.source",
506                formalDefinition="The person who provided the information about the taking of this medication."
507        )
508        private ResourceReferenceDt myInformationSource;
509        
510        @Child(name="dateAsserted", type=DateTimeDt.class, order=3, min=0, max=1, summary=false, modifier=false)        
511        @Description(
512                shortDefinition="",
513                formalDefinition="The date when the medication statement was asserted by the information source."
514        )
515        private DateTimeDt myDateAsserted;
516        
517        @Child(name="status", type=CodeDt.class, order=4, min=1, max=1, summary=false, modifier=true)   
518        @Description(
519                shortDefinition="",
520                formalDefinition="A code representing the patient or other source's judgment about the state of the medication used that this statement is about.  Generally this will be active or completed."
521        )
522        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/medication-statement-status")
523        private BoundCodeDt<MedicationStatementStatusEnum> myStatus;
524        
525        @Child(name="wasNotTaken", type=BooleanDt.class, order=5, min=0, max=1, summary=false, modifier=true)   
526        @Description(
527                shortDefinition="status",
528                formalDefinition="Set this to true if the record is saying that the medication was NOT taken."
529        )
530        private BooleanDt myWasNotTaken;
531        
532        @Child(name="reasonNotTaken", type=CodeableConceptDt.class, order=6, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
533        @Description(
534                shortDefinition="",
535                formalDefinition="A code indicating why the medication was not taken."
536        )
537        private java.util.List<CodeableConceptDt> myReasonNotTaken;
538        
539        @Child(name="reasonForUse", order=7, min=0, max=1, summary=false, modifier=false, type={
540                CodeableConceptDt.class, 
541                Condition.class
542        })
543        @Description(
544                shortDefinition="",
545                formalDefinition="A reason for why the medication is being/was taken."
546        )
547        private IDatatype myReasonForUse;
548        
549        @Child(name="effective", order=8, min=0, max=1, summary=false, modifier=false, type={
550                DateTimeDt.class, 
551                PeriodDt.class
552        })
553        @Description(
554                shortDefinition="when.done",
555                formalDefinition="The interval of time during which it is being asserted that the patient was taking the medication (or was not taking, when the wasNotGiven element is true)."
556        )
557        private IDatatype myEffective;
558        
559        @Child(name="note", type=StringDt.class, order=9, min=0, max=1, summary=false, modifier=false)  
560        @Description(
561                shortDefinition="",
562                formalDefinition="Provides extra information about the medication statement that is not conveyed by the other attributes."
563        )
564        private StringDt myNote;
565        
566        @Child(name="supportingInformation", order=10, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
567                IResource.class
568        })
569        @Description(
570                shortDefinition="",
571                formalDefinition="Allows linking the MedicationStatement to the underlying MedicationOrder, or to other information that supports the MedicationStatement."
572        )
573        private java.util.List<ResourceReferenceDt> mySupportingInformation;
574        
575        @Child(name="medication", order=11, min=1, max=1, summary=false, modifier=false, type={
576                CodeableConceptDt.class, 
577                Medication.class
578        })
579        @Description(
580                shortDefinition="what",
581                formalDefinition="Identifies the medication being administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications."
582        )
583        private IDatatype myMedication;
584        
585        @Child(name="dosage", order=12, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
586        @Description(
587                shortDefinition="",
588                formalDefinition="Indicates how the medication is/was used by the patient"
589        )
590        private java.util.List<Dosage> myDosage;
591        
592
593        @Override
594        public boolean isEmpty() {
595                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myPatient,  myInformationSource,  myDateAsserted,  myStatus,  myWasNotTaken,  myReasonNotTaken,  myReasonForUse,  myEffective,  myNote,  mySupportingInformation,  myMedication,  myDosage);
596        }
597        
598        @Override
599        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
600                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myPatient, myInformationSource, myDateAsserted, myStatus, myWasNotTaken, myReasonNotTaken, myReasonForUse, myEffective, myNote, mySupportingInformation, myMedication, myDosage);
601        }
602
603        /**
604         * Gets the value(s) for <b>identifier</b> (id).
605         * creating it if it does
606         * not exist. Will not return <code>null</code>.
607         *
608     * <p>
609     * <b>Definition:</b>
610     * External identifier - FHIR will generate its own internal identifiers (probably URLs) which do not need to be explicitly managed by the resource.  The identifier here is one that would be used by another non-FHIR system - for example an automated medication pump would provide a record each time it operated; an administration while the patient was off the ward might be made with a different system and entered after the event.  Particularly important if these records have to be updated.
611     * </p> 
612         */
613        public java.util.List<IdentifierDt> getIdentifier() {  
614                if (myIdentifier == null) {
615                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
616                }
617                return myIdentifier;
618        }
619
620        /**
621         * Sets the value(s) for <b>identifier</b> (id)
622         *
623     * <p>
624     * <b>Definition:</b>
625     * External identifier - FHIR will generate its own internal identifiers (probably URLs) which do not need to be explicitly managed by the resource.  The identifier here is one that would be used by another non-FHIR system - for example an automated medication pump would provide a record each time it operated; an administration while the patient was off the ward might be made with a different system and entered after the event.  Particularly important if these records have to be updated.
626     * </p> 
627         */
628        public MedicationStatement setIdentifier(java.util.List<IdentifierDt> theValue) {
629                myIdentifier = theValue;
630                return this;
631        }
632        
633        
634
635        /**
636         * Adds and returns a new value for <b>identifier</b> (id)
637         *
638     * <p>
639     * <b>Definition:</b>
640     * External identifier - FHIR will generate its own internal identifiers (probably URLs) which do not need to be explicitly managed by the resource.  The identifier here is one that would be used by another non-FHIR system - for example an automated medication pump would provide a record each time it operated; an administration while the patient was off the ward might be made with a different system and entered after the event.  Particularly important if these records have to be updated.
641     * </p> 
642         */
643        public IdentifierDt addIdentifier() {
644                IdentifierDt newType = new IdentifierDt();
645                getIdentifier().add(newType);
646                return newType; 
647        }
648
649        /**
650         * Adds a given new value for <b>identifier</b> (id)
651         *
652         * <p>
653         * <b>Definition:</b>
654         * External identifier - FHIR will generate its own internal identifiers (probably URLs) which do not need to be explicitly managed by the resource.  The identifier here is one that would be used by another non-FHIR system - for example an automated medication pump would provide a record each time it operated; an administration while the patient was off the ward might be made with a different system and entered after the event.  Particularly important if these records have to be updated.
655         * </p>
656         * @param theValue The identifier to add (must not be <code>null</code>)
657         */
658        public MedicationStatement addIdentifier(IdentifierDt theValue) {
659                if (theValue == null) {
660                        throw new NullPointerException("theValue must not be null");
661                }
662                getIdentifier().add(theValue);
663                return this;
664        }
665
666        /**
667         * Gets the first repetition for <b>identifier</b> (id),
668         * creating it if it does not already exist.
669         *
670     * <p>
671     * <b>Definition:</b>
672     * External identifier - FHIR will generate its own internal identifiers (probably URLs) which do not need to be explicitly managed by the resource.  The identifier here is one that would be used by another non-FHIR system - for example an automated medication pump would provide a record each time it operated; an administration while the patient was off the ward might be made with a different system and entered after the event.  Particularly important if these records have to be updated.
673     * </p> 
674         */
675        public IdentifierDt getIdentifierFirstRep() {
676                if (getIdentifier().isEmpty()) {
677                        return addIdentifier();
678                }
679                return getIdentifier().get(0); 
680        }
681  
682        /**
683         * Gets the value(s) for <b>patient</b> (who.focus).
684         * creating it if it does
685         * not exist. Will not return <code>null</code>.
686         *
687     * <p>
688     * <b>Definition:</b>
689     * The person or animal who is/was taking the medication.
690     * </p> 
691         */
692        public ResourceReferenceDt getPatient() {  
693                if (myPatient == null) {
694                        myPatient = new ResourceReferenceDt();
695                }
696                return myPatient;
697        }
698
699        /**
700         * Sets the value(s) for <b>patient</b> (who.focus)
701         *
702     * <p>
703     * <b>Definition:</b>
704     * The person or animal who is/was taking the medication.
705     * </p> 
706         */
707        public MedicationStatement setPatient(ResourceReferenceDt theValue) {
708                myPatient = theValue;
709                return this;
710        }
711        
712        
713
714  
715        /**
716         * Gets the value(s) for <b>informationSource</b> (who.source).
717         * creating it if it does
718         * not exist. Will not return <code>null</code>.
719         *
720     * <p>
721     * <b>Definition:</b>
722     * The person who provided the information about the taking of this medication.
723     * </p> 
724         */
725        public ResourceReferenceDt getInformationSource() {  
726                if (myInformationSource == null) {
727                        myInformationSource = new ResourceReferenceDt();
728                }
729                return myInformationSource;
730        }
731
732        /**
733         * Sets the value(s) for <b>informationSource</b> (who.source)
734         *
735     * <p>
736     * <b>Definition:</b>
737     * The person who provided the information about the taking of this medication.
738     * </p> 
739         */
740        public MedicationStatement setInformationSource(ResourceReferenceDt theValue) {
741                myInformationSource = theValue;
742                return this;
743        }
744        
745        
746
747  
748        /**
749         * Gets the value(s) for <b>dateAsserted</b> ().
750         * creating it if it does
751         * not exist. Will not return <code>null</code>.
752         *
753     * <p>
754     * <b>Definition:</b>
755     * The date when the medication statement was asserted by the information source.
756     * </p> 
757         */
758        public DateTimeDt getDateAssertedElement() {  
759                if (myDateAsserted == null) {
760                        myDateAsserted = new DateTimeDt();
761                }
762                return myDateAsserted;
763        }
764
765        
766        /**
767         * Gets the value(s) for <b>dateAsserted</b> ().
768         * creating it if it does
769         * not exist. This method may return <code>null</code>.
770         *
771     * <p>
772     * <b>Definition:</b>
773     * The date when the medication statement was asserted by the information source.
774     * </p> 
775         */
776        public Date getDateAsserted() {  
777                return getDateAssertedElement().getValue();
778        }
779
780        /**
781         * Sets the value(s) for <b>dateAsserted</b> ()
782         *
783     * <p>
784     * <b>Definition:</b>
785     * The date when the medication statement was asserted by the information source.
786     * </p> 
787         */
788        public MedicationStatement setDateAsserted(DateTimeDt theValue) {
789                myDateAsserted = theValue;
790                return this;
791        }
792        
793        
794
795        /**
796         * Sets the value for <b>dateAsserted</b> ()
797         *
798     * <p>
799     * <b>Definition:</b>
800     * The date when the medication statement was asserted by the information source.
801     * </p> 
802         */
803        public MedicationStatement setDateAssertedWithSecondsPrecision( Date theDate) {
804                myDateAsserted = new DateTimeDt(theDate); 
805                return this; 
806        }
807
808        /**
809         * Sets the value for <b>dateAsserted</b> ()
810         *
811     * <p>
812     * <b>Definition:</b>
813     * The date when the medication statement was asserted by the information source.
814     * </p> 
815         */
816        public MedicationStatement setDateAsserted( Date theDate,  TemporalPrecisionEnum thePrecision) {
817                myDateAsserted = new DateTimeDt(theDate, thePrecision); 
818                return this; 
819        }
820
821 
822        /**
823         * Gets the value(s) for <b>status</b> ().
824         * creating it if it does
825         * not exist. Will not return <code>null</code>.
826         *
827     * <p>
828     * <b>Definition:</b>
829     * A code representing the patient or other source's judgment about the state of the medication used that this statement is about.  Generally this will be active or completed.
830     * </p> 
831         */
832        public BoundCodeDt<MedicationStatementStatusEnum> getStatusElement() {  
833                if (myStatus == null) {
834                        myStatus = new BoundCodeDt<MedicationStatementStatusEnum>(MedicationStatementStatusEnum.VALUESET_BINDER);
835                }
836                return myStatus;
837        }
838
839        
840        /**
841         * Gets the value(s) for <b>status</b> ().
842         * creating it if it does
843         * not exist. This method may return <code>null</code>.
844         *
845     * <p>
846     * <b>Definition:</b>
847     * A code representing the patient or other source's judgment about the state of the medication used that this statement is about.  Generally this will be active or completed.
848     * </p> 
849         */
850        public String getStatus() {  
851                return getStatusElement().getValue();
852        }
853
854        /**
855         * Sets the value(s) for <b>status</b> ()
856         *
857     * <p>
858     * <b>Definition:</b>
859     * A code representing the patient or other source's judgment about the state of the medication used that this statement is about.  Generally this will be active or completed.
860     * </p> 
861         */
862        public MedicationStatement setStatus(BoundCodeDt<MedicationStatementStatusEnum> theValue) {
863                myStatus = theValue;
864                return this;
865        }
866        
867        
868
869        /**
870         * Sets the value(s) for <b>status</b> ()
871         *
872     * <p>
873     * <b>Definition:</b>
874     * A code representing the patient or other source's judgment about the state of the medication used that this statement is about.  Generally this will be active or completed.
875     * </p> 
876         */
877        public MedicationStatement setStatus(MedicationStatementStatusEnum theValue) {
878                setStatus(new BoundCodeDt<MedicationStatementStatusEnum>(MedicationStatementStatusEnum.VALUESET_BINDER, theValue));
879                
880/*
881                getStatusElement().setValueAsEnum(theValue);
882*/
883                return this;
884        }
885
886  
887        /**
888         * Gets the value(s) for <b>wasNotTaken</b> (status).
889         * creating it if it does
890         * not exist. Will not return <code>null</code>.
891         *
892     * <p>
893     * <b>Definition:</b>
894     * Set this to true if the record is saying that the medication was NOT taken.
895     * </p> 
896         */
897        public BooleanDt getWasNotTakenElement() {  
898                if (myWasNotTaken == null) {
899                        myWasNotTaken = new BooleanDt();
900                }
901                return myWasNotTaken;
902        }
903
904        
905        /**
906         * Gets the value(s) for <b>wasNotTaken</b> (status).
907         * creating it if it does
908         * not exist. This method may return <code>null</code>.
909         *
910     * <p>
911     * <b>Definition:</b>
912     * Set this to true if the record is saying that the medication was NOT taken.
913     * </p> 
914         */
915        public Boolean getWasNotTaken() {  
916                return getWasNotTakenElement().getValue();
917        }
918
919        /**
920         * Sets the value(s) for <b>wasNotTaken</b> (status)
921         *
922     * <p>
923     * <b>Definition:</b>
924     * Set this to true if the record is saying that the medication was NOT taken.
925     * </p> 
926         */
927        public MedicationStatement setWasNotTaken(BooleanDt theValue) {
928                myWasNotTaken = theValue;
929                return this;
930        }
931        
932        
933
934        /**
935         * Sets the value for <b>wasNotTaken</b> (status)
936         *
937     * <p>
938     * <b>Definition:</b>
939     * Set this to true if the record is saying that the medication was NOT taken.
940     * </p> 
941         */
942        public MedicationStatement setWasNotTaken( boolean theBoolean) {
943                myWasNotTaken = new BooleanDt(theBoolean); 
944                return this; 
945        }
946
947 
948        /**
949         * Gets the value(s) for <b>reasonNotTaken</b> ().
950         * creating it if it does
951         * not exist. Will not return <code>null</code>.
952         *
953     * <p>
954     * <b>Definition:</b>
955     * A code indicating why the medication was not taken.
956     * </p> 
957         */
958        public java.util.List<CodeableConceptDt> getReasonNotTaken() {  
959                if (myReasonNotTaken == null) {
960                        myReasonNotTaken = new java.util.ArrayList<CodeableConceptDt>();
961                }
962                return myReasonNotTaken;
963        }
964
965        /**
966         * Sets the value(s) for <b>reasonNotTaken</b> ()
967         *
968     * <p>
969     * <b>Definition:</b>
970     * A code indicating why the medication was not taken.
971     * </p> 
972         */
973        public MedicationStatement setReasonNotTaken(java.util.List<CodeableConceptDt> theValue) {
974                myReasonNotTaken = theValue;
975                return this;
976        }
977        
978        
979
980        /**
981         * Adds and returns a new value for <b>reasonNotTaken</b> ()
982         *
983     * <p>
984     * <b>Definition:</b>
985     * A code indicating why the medication was not taken.
986     * </p> 
987         */
988        public CodeableConceptDt addReasonNotTaken() {
989                CodeableConceptDt newType = new CodeableConceptDt();
990                getReasonNotTaken().add(newType);
991                return newType; 
992        }
993
994        /**
995         * Adds a given new value for <b>reasonNotTaken</b> ()
996         *
997         * <p>
998         * <b>Definition:</b>
999         * A code indicating why the medication was not taken.
1000         * </p>
1001         * @param theValue The reasonNotTaken to add (must not be <code>null</code>)
1002         */
1003        public MedicationStatement addReasonNotTaken(CodeableConceptDt theValue) {
1004                if (theValue == null) {
1005                        throw new NullPointerException("theValue must not be null");
1006                }
1007                getReasonNotTaken().add(theValue);
1008                return this;
1009        }
1010
1011        /**
1012         * Gets the first repetition for <b>reasonNotTaken</b> (),
1013         * creating it if it does not already exist.
1014         *
1015     * <p>
1016     * <b>Definition:</b>
1017     * A code indicating why the medication was not taken.
1018     * </p> 
1019         */
1020        public CodeableConceptDt getReasonNotTakenFirstRep() {
1021                if (getReasonNotTaken().isEmpty()) {
1022                        return addReasonNotTaken();
1023                }
1024                return getReasonNotTaken().get(0); 
1025        }
1026  
1027        /**
1028         * Gets the value(s) for <b>reasonForUse[x]</b> ().
1029         * creating it if it does
1030         * not exist. Will not return <code>null</code>.
1031         *
1032     * <p>
1033     * <b>Definition:</b>
1034     * A reason for why the medication is being/was taken.
1035     * </p> 
1036         */
1037        public IDatatype getReasonForUse() {  
1038                return myReasonForUse;
1039        }
1040
1041        /**
1042         * Sets the value(s) for <b>reasonForUse[x]</b> ()
1043         *
1044     * <p>
1045     * <b>Definition:</b>
1046     * A reason for why the medication is being/was taken.
1047     * </p> 
1048         */
1049        public MedicationStatement setReasonForUse(IDatatype theValue) {
1050                myReasonForUse = theValue;
1051                return this;
1052        }
1053        
1054        
1055
1056  
1057        /**
1058         * Gets the value(s) for <b>effective[x]</b> (when.done).
1059         * creating it if it does
1060         * not exist. Will not return <code>null</code>.
1061         *
1062     * <p>
1063     * <b>Definition:</b>
1064     * The interval of time during which it is being asserted that the patient was taking the medication (or was not taking, when the wasNotGiven element is true).
1065     * </p> 
1066         */
1067        public IDatatype getEffective() {  
1068                return myEffective;
1069        }
1070
1071        /**
1072         * Sets the value(s) for <b>effective[x]</b> (when.done)
1073         *
1074     * <p>
1075     * <b>Definition:</b>
1076     * The interval of time during which it is being asserted that the patient was taking the medication (or was not taking, when the wasNotGiven element is true).
1077     * </p> 
1078         */
1079        public MedicationStatement setEffective(IDatatype theValue) {
1080                myEffective = theValue;
1081                return this;
1082        }
1083        
1084        
1085
1086  
1087        /**
1088         * Gets the value(s) for <b>note</b> ().
1089         * creating it if it does
1090         * not exist. Will not return <code>null</code>.
1091         *
1092     * <p>
1093     * <b>Definition:</b>
1094     * Provides extra information about the medication statement that is not conveyed by the other attributes.
1095     * </p> 
1096         */
1097        public StringDt getNoteElement() {  
1098                if (myNote == null) {
1099                        myNote = new StringDt();
1100                }
1101                return myNote;
1102        }
1103
1104        
1105        /**
1106         * Gets the value(s) for <b>note</b> ().
1107         * creating it if it does
1108         * not exist. This method may return <code>null</code>.
1109         *
1110     * <p>
1111     * <b>Definition:</b>
1112     * Provides extra information about the medication statement that is not conveyed by the other attributes.
1113     * </p> 
1114         */
1115        public String getNote() {  
1116                return getNoteElement().getValue();
1117        }
1118
1119        /**
1120         * Sets the value(s) for <b>note</b> ()
1121         *
1122     * <p>
1123     * <b>Definition:</b>
1124     * Provides extra information about the medication statement that is not conveyed by the other attributes.
1125     * </p> 
1126         */
1127        public MedicationStatement setNote(StringDt theValue) {
1128                myNote = theValue;
1129                return this;
1130        }
1131        
1132        
1133
1134        /**
1135         * Sets the value for <b>note</b> ()
1136         *
1137     * <p>
1138     * <b>Definition:</b>
1139     * Provides extra information about the medication statement that is not conveyed by the other attributes.
1140     * </p> 
1141         */
1142        public MedicationStatement setNote( String theString) {
1143                myNote = new StringDt(theString); 
1144                return this; 
1145        }
1146
1147 
1148        /**
1149         * Gets the value(s) for <b>supportingInformation</b> ().
1150         * creating it if it does
1151         * not exist. Will not return <code>null</code>.
1152         *
1153     * <p>
1154     * <b>Definition:</b>
1155     * Allows linking the MedicationStatement to the underlying MedicationOrder, or to other information that supports the MedicationStatement.
1156     * </p> 
1157         */
1158        public java.util.List<ResourceReferenceDt> getSupportingInformation() {  
1159                if (mySupportingInformation == null) {
1160                        mySupportingInformation = new java.util.ArrayList<ResourceReferenceDt>();
1161                }
1162                return mySupportingInformation;
1163        }
1164
1165        /**
1166         * Sets the value(s) for <b>supportingInformation</b> ()
1167         *
1168     * <p>
1169     * <b>Definition:</b>
1170     * Allows linking the MedicationStatement to the underlying MedicationOrder, or to other information that supports the MedicationStatement.
1171     * </p> 
1172         */
1173        public MedicationStatement setSupportingInformation(java.util.List<ResourceReferenceDt> theValue) {
1174                mySupportingInformation = theValue;
1175                return this;
1176        }
1177        
1178        
1179
1180        /**
1181         * Adds and returns a new value for <b>supportingInformation</b> ()
1182         *
1183     * <p>
1184     * <b>Definition:</b>
1185     * Allows linking the MedicationStatement to the underlying MedicationOrder, or to other information that supports the MedicationStatement.
1186     * </p> 
1187         */
1188        public ResourceReferenceDt addSupportingInformation() {
1189                ResourceReferenceDt newType = new ResourceReferenceDt();
1190                getSupportingInformation().add(newType);
1191                return newType; 
1192        }
1193  
1194        /**
1195         * Gets the value(s) for <b>medication[x]</b> (what).
1196         * creating it if it does
1197         * not exist. Will not return <code>null</code>.
1198         *
1199     * <p>
1200     * <b>Definition:</b>
1201     * Identifies the medication being administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications.
1202     * </p> 
1203         */
1204        public IDatatype getMedication() {  
1205                return myMedication;
1206        }
1207
1208        /**
1209         * Sets the value(s) for <b>medication[x]</b> (what)
1210         *
1211     * <p>
1212     * <b>Definition:</b>
1213     * Identifies the medication being administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications.
1214     * </p> 
1215         */
1216        public MedicationStatement setMedication(IDatatype theValue) {
1217                myMedication = theValue;
1218                return this;
1219        }
1220        
1221        
1222
1223  
1224        /**
1225         * Gets the value(s) for <b>dosage</b> ().
1226         * creating it if it does
1227         * not exist. Will not return <code>null</code>.
1228         *
1229     * <p>
1230     * <b>Definition:</b>
1231     * Indicates how the medication is/was used by the patient
1232     * </p> 
1233         */
1234        public java.util.List<Dosage> getDosage() {  
1235                if (myDosage == null) {
1236                        myDosage = new java.util.ArrayList<Dosage>();
1237                }
1238                return myDosage;
1239        }
1240
1241        /**
1242         * Sets the value(s) for <b>dosage</b> ()
1243         *
1244     * <p>
1245     * <b>Definition:</b>
1246     * Indicates how the medication is/was used by the patient
1247     * </p> 
1248         */
1249        public MedicationStatement setDosage(java.util.List<Dosage> theValue) {
1250                myDosage = theValue;
1251                return this;
1252        }
1253        
1254        
1255
1256        /**
1257         * Adds and returns a new value for <b>dosage</b> ()
1258         *
1259     * <p>
1260     * <b>Definition:</b>
1261     * Indicates how the medication is/was used by the patient
1262     * </p> 
1263         */
1264        public Dosage addDosage() {
1265                Dosage newType = new Dosage();
1266                getDosage().add(newType);
1267                return newType; 
1268        }
1269
1270        /**
1271         * Adds a given new value for <b>dosage</b> ()
1272         *
1273         * <p>
1274         * <b>Definition:</b>
1275         * Indicates how the medication is/was used by the patient
1276         * </p>
1277         * @param theValue The dosage to add (must not be <code>null</code>)
1278         */
1279        public MedicationStatement addDosage(Dosage theValue) {
1280                if (theValue == null) {
1281                        throw new NullPointerException("theValue must not be null");
1282                }
1283                getDosage().add(theValue);
1284                return this;
1285        }
1286
1287        /**
1288         * Gets the first repetition for <b>dosage</b> (),
1289         * creating it if it does not already exist.
1290         *
1291     * <p>
1292     * <b>Definition:</b>
1293     * Indicates how the medication is/was used by the patient
1294     * </p> 
1295         */
1296        public Dosage getDosageFirstRep() {
1297                if (getDosage().isEmpty()) {
1298                        return addDosage();
1299                }
1300                return getDosage().get(0); 
1301        }
1302  
1303        /**
1304         * Block class for child element: <b>MedicationStatement.dosage</b> ()
1305         *
1306     * <p>
1307     * <b>Definition:</b>
1308     * Indicates how the medication is/was used by the patient
1309     * </p> 
1310         */
1311        @Block()        
1312        public static class Dosage 
1313            extends  BaseIdentifiableElement  
1314            implements IResourceBlock {
1315        
1316        @Child(name="text", type=StringDt.class, order=0, min=0, max=1, summary=false, modifier=false)  
1317        @Description(
1318                shortDefinition="",
1319                formalDefinition="Free text dosage information as reported about a patient's medication use. When coded dosage information is present, the free text may still be present for display to humans."
1320        )
1321        private StringDt myText;
1322        
1323        @Child(name="timing", type=TimingDt.class, order=1, min=0, max=1, summary=false, modifier=false)        
1324        @Description(
1325                shortDefinition="",
1326                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\""
1327        )
1328        private TimingDt myTiming;
1329        
1330        @Child(name="asNeeded", order=2, min=0, max=1, summary=false, modifier=false, type={
1331                BooleanDt.class, 
1332                CodeableConceptDt.class
1333        })
1334        @Description(
1335                shortDefinition="",
1336                formalDefinition="Indicates whether the Medication is only taken when needed within a specific dosing schedule (Boolean option), or it indicates the precondition for taking the Medication (CodeableConcept).  Specifically if 'boolean' datatype is selected, then the following logic applies:  If set to True, this indicates that the medication is only taken when needed, within the specified schedule."
1337        )
1338        private IDatatype myAsNeeded;
1339        
1340        @Child(name="site", order=3, min=0, max=1, summary=false, modifier=false, type={
1341                CodeableConceptDt.class, 
1342                BodySite.class
1343        })
1344        @Description(
1345                shortDefinition="",
1346                formalDefinition="A coded specification of or a reference to the anatomic site where the medication first enters the body"
1347        )
1348        private IDatatype mySite;
1349        
1350        @Child(name="route", type=CodeableConceptDt.class, order=4, min=0, max=1, summary=false, modifier=false)        
1351        @Description(
1352                shortDefinition="",
1353                formalDefinition="A code specifying the route or physiological path of administration of a therapeutic agent into or onto a subject."
1354        )
1355        private CodeableConceptDt myRoute;
1356        
1357        @Child(name="method", type=CodeableConceptDt.class, order=5, min=0, max=1, summary=false, modifier=false)       
1358        @Description(
1359                shortDefinition="",
1360                formalDefinition="A coded value indicating the method by which the medication is intended to be or was introduced into or on the body.  This attribute will most often NOT be populated.  It is most commonly used for injections.  For example, Slow Push, Deep IV."
1361        )
1362        private CodeableConceptDt myMethod;
1363        
1364        @Child(name="quantity", order=6, min=0, max=1, summary=false, modifier=false, type={
1365                SimpleQuantityDt.class, 
1366                RangeDt.class
1367        })
1368        @Description(
1369                shortDefinition="",
1370                formalDefinition="The amount of therapeutic or other substance given at one administration event."
1371        )
1372        private IDatatype myQuantity;
1373        
1374        @Child(name="rate", order=7, min=0, max=1, summary=false, modifier=false, type={
1375                RatioDt.class, 
1376                RangeDt.class
1377        })
1378        @Description(
1379                shortDefinition="",
1380                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"
1381        )
1382        private IDatatype myRate;
1383        
1384        @Child(name="maxDosePerPeriod", type=RatioDt.class, order=8, min=0, max=1, summary=false, modifier=false)       
1385        @Description(
1386                shortDefinition="",
1387                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."
1388        )
1389        private RatioDt myMaxDosePerPeriod;
1390        
1391
1392        @Override
1393        public boolean isEmpty() {
1394                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myText,  myTiming,  myAsNeeded,  mySite,  myRoute,  myMethod,  myQuantity,  myRate,  myMaxDosePerPeriod);
1395        }
1396        
1397        @Override
1398        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1399                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myText, myTiming, myAsNeeded, mySite, myRoute, myMethod, myQuantity, myRate, myMaxDosePerPeriod);
1400        }
1401
1402        /**
1403         * Gets the value(s) for <b>text</b> ().
1404         * creating it if it does
1405         * not exist. Will not return <code>null</code>.
1406         *
1407     * <p>
1408     * <b>Definition:</b>
1409     * Free text dosage information as reported about a patient's medication use. When coded dosage information is present, the free text may still be present for display to humans.
1410     * </p> 
1411         */
1412        public StringDt getTextElement() {  
1413                if (myText == null) {
1414                        myText = new StringDt();
1415                }
1416                return myText;
1417        }
1418
1419        
1420        /**
1421         * Gets the value(s) for <b>text</b> ().
1422         * creating it if it does
1423         * not exist. This method may return <code>null</code>.
1424         *
1425     * <p>
1426     * <b>Definition:</b>
1427     * Free text dosage information as reported about a patient's medication use. When coded dosage information is present, the free text may still be present for display to humans.
1428     * </p> 
1429         */
1430        public String getText() {  
1431                return getTextElement().getValue();
1432        }
1433
1434        /**
1435         * Sets the value(s) for <b>text</b> ()
1436         *
1437     * <p>
1438     * <b>Definition:</b>
1439     * Free text dosage information as reported about a patient's medication use. When coded dosage information is present, the free text may still be present for display to humans.
1440     * </p> 
1441         */
1442        public Dosage setText(StringDt theValue) {
1443                myText = theValue;
1444                return this;
1445        }
1446        
1447        
1448
1449        /**
1450         * Sets the value for <b>text</b> ()
1451         *
1452     * <p>
1453     * <b>Definition:</b>
1454     * Free text dosage information as reported about a patient's medication use. When coded dosage information is present, the free text may still be present for display to humans.
1455     * </p> 
1456         */
1457        public Dosage setText( String theString) {
1458                myText = new StringDt(theString); 
1459                return this; 
1460        }
1461
1462 
1463        /**
1464         * Gets the value(s) for <b>timing</b> ().
1465         * creating it if it does
1466         * not exist. Will not return <code>null</code>.
1467         *
1468     * <p>
1469     * <b>Definition:</b>
1470     * 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;
1471     * </p> 
1472         */
1473        public TimingDt getTiming() {  
1474                if (myTiming == null) {
1475                        myTiming = new TimingDt();
1476                }
1477                return myTiming;
1478        }
1479
1480        /**
1481         * Sets the value(s) for <b>timing</b> ()
1482         *
1483     * <p>
1484     * <b>Definition:</b>
1485     * 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;
1486     * </p> 
1487         */
1488        public Dosage setTiming(TimingDt theValue) {
1489                myTiming = theValue;
1490                return this;
1491        }
1492        
1493        
1494
1495  
1496        /**
1497         * Gets the value(s) for <b>asNeeded[x]</b> ().
1498         * creating it if it does
1499         * not exist. Will not return <code>null</code>.
1500         *
1501     * <p>
1502     * <b>Definition:</b>
1503     * Indicates whether the Medication is only taken when needed within a specific dosing schedule (Boolean option), or it indicates the precondition for taking the Medication (CodeableConcept).  Specifically if 'boolean' datatype is selected, then the following logic applies:  If set to True, this indicates that the medication is only taken when needed, within the specified schedule.
1504     * </p> 
1505         */
1506        public IDatatype getAsNeeded() {  
1507                return myAsNeeded;
1508        }
1509
1510        /**
1511         * Sets the value(s) for <b>asNeeded[x]</b> ()
1512         *
1513     * <p>
1514     * <b>Definition:</b>
1515     * Indicates whether the Medication is only taken when needed within a specific dosing schedule (Boolean option), or it indicates the precondition for taking the Medication (CodeableConcept).  Specifically if 'boolean' datatype is selected, then the following logic applies:  If set to True, this indicates that the medication is only taken when needed, within the specified schedule.
1516     * </p> 
1517         */
1518        public Dosage setAsNeeded(IDatatype theValue) {
1519                myAsNeeded = theValue;
1520                return this;
1521        }
1522        
1523        
1524
1525  
1526        /**
1527         * Gets the value(s) for <b>site[x]</b> ().
1528         * creating it if it does
1529         * not exist. Will not return <code>null</code>.
1530         *
1531     * <p>
1532     * <b>Definition:</b>
1533     * A coded specification of or a reference to the anatomic site where the medication first enters the body
1534     * </p> 
1535         */
1536        public IDatatype getSite() {  
1537                return mySite;
1538        }
1539
1540        /**
1541         * Sets the value(s) for <b>site[x]</b> ()
1542         *
1543     * <p>
1544     * <b>Definition:</b>
1545     * A coded specification of or a reference to the anatomic site where the medication first enters the body
1546     * </p> 
1547         */
1548        public Dosage setSite(IDatatype theValue) {
1549                mySite = theValue;
1550                return this;
1551        }
1552        
1553        
1554
1555  
1556        /**
1557         * Gets the value(s) for <b>route</b> ().
1558         * creating it if it does
1559         * not exist. Will not return <code>null</code>.
1560         *
1561     * <p>
1562     * <b>Definition:</b>
1563     * A code specifying the route or physiological path of administration of a therapeutic agent into or onto a subject.
1564     * </p> 
1565         */
1566        public CodeableConceptDt getRoute() {  
1567                if (myRoute == null) {
1568                        myRoute = new CodeableConceptDt();
1569                }
1570                return myRoute;
1571        }
1572
1573        /**
1574         * Sets the value(s) for <b>route</b> ()
1575         *
1576     * <p>
1577     * <b>Definition:</b>
1578     * A code specifying the route or physiological path of administration of a therapeutic agent into or onto a subject.
1579     * </p> 
1580         */
1581        public Dosage setRoute(CodeableConceptDt theValue) {
1582                myRoute = theValue;
1583                return this;
1584        }
1585        
1586        
1587
1588  
1589        /**
1590         * Gets the value(s) for <b>method</b> ().
1591         * creating it if it does
1592         * not exist. Will not return <code>null</code>.
1593         *
1594     * <p>
1595     * <b>Definition:</b>
1596     * A coded value indicating the method by which the medication is intended to be or was introduced into or on the body.  This attribute will most often NOT be populated.  It is most commonly used for injections.  For example, Slow Push, Deep IV.
1597     * </p> 
1598         */
1599        public CodeableConceptDt getMethod() {  
1600                if (myMethod == null) {
1601                        myMethod = new CodeableConceptDt();
1602                }
1603                return myMethod;
1604        }
1605
1606        /**
1607         * Sets the value(s) for <b>method</b> ()
1608         *
1609     * <p>
1610     * <b>Definition:</b>
1611     * A coded value indicating the method by which the medication is intended to be or was introduced into or on the body.  This attribute will most often NOT be populated.  It is most commonly used for injections.  For example, Slow Push, Deep IV.
1612     * </p> 
1613         */
1614        public Dosage setMethod(CodeableConceptDt theValue) {
1615                myMethod = theValue;
1616                return this;
1617        }
1618        
1619        
1620
1621  
1622        /**
1623         * Gets the value(s) for <b>quantity[x]</b> ().
1624         * creating it if it does
1625         * not exist. Will not return <code>null</code>.
1626         *
1627     * <p>
1628     * <b>Definition:</b>
1629     * The amount of therapeutic or other substance given at one administration event.
1630     * </p> 
1631         */
1632        public IDatatype getQuantity() {  
1633                return myQuantity;
1634        }
1635
1636        /**
1637         * Sets the value(s) for <b>quantity[x]</b> ()
1638         *
1639     * <p>
1640     * <b>Definition:</b>
1641     * The amount of therapeutic or other substance given at one administration event.
1642     * </p> 
1643         */
1644        public Dosage setQuantity(IDatatype theValue) {
1645                myQuantity = theValue;
1646                return this;
1647        }
1648        
1649        
1650
1651  
1652        /**
1653         * Gets the value(s) for <b>rate[x]</b> ().
1654         * creating it if it does
1655         * not exist. Will not return <code>null</code>.
1656         *
1657     * <p>
1658     * <b>Definition:</b>
1659     * 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
1660     * </p> 
1661         */
1662        public IDatatype getRate() {  
1663                return myRate;
1664        }
1665
1666        /**
1667         * Sets the value(s) for <b>rate[x]</b> ()
1668         *
1669     * <p>
1670     * <b>Definition:</b>
1671     * 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
1672     * </p> 
1673         */
1674        public Dosage setRate(IDatatype theValue) {
1675                myRate = theValue;
1676                return this;
1677        }
1678        
1679        
1680
1681  
1682        /**
1683         * Gets the value(s) for <b>maxDosePerPeriod</b> ().
1684         * creating it if it does
1685         * not exist. Will not return <code>null</code>.
1686         *
1687     * <p>
1688     * <b>Definition:</b>
1689     * 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.
1690     * </p> 
1691         */
1692        public RatioDt getMaxDosePerPeriod() {  
1693                if (myMaxDosePerPeriod == null) {
1694                        myMaxDosePerPeriod = new RatioDt();
1695                }
1696                return myMaxDosePerPeriod;
1697        }
1698
1699        /**
1700         * Sets the value(s) for <b>maxDosePerPeriod</b> ()
1701         *
1702     * <p>
1703     * <b>Definition:</b>
1704     * 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.
1705     * </p> 
1706         */
1707        public Dosage setMaxDosePerPeriod(RatioDt theValue) {
1708                myMaxDosePerPeriod = theValue;
1709                return this;
1710        }
1711        
1712        
1713
1714  
1715
1716
1717        }
1718
1719
1720
1721
1722    @Override
1723    public String getResourceName() {
1724        return "MedicationStatement";
1725    }
1726    
1727    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
1728        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
1729    }
1730
1731
1732}