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.valueset.AnimalSpeciesEnum;
042import ca.uhn.fhir.model.dstu2.composite.AnnotationDt;
043import ca.uhn.fhir.model.dstu2.valueset.AnswerFormatEnum;
044import ca.uhn.fhir.model.dstu2.resource.Appointment;
045import ca.uhn.fhir.model.dstu2.valueset.AppointmentStatusEnum;
046import ca.uhn.fhir.model.dstu2.valueset.AssertionDirectionTypeEnum;
047import ca.uhn.fhir.model.dstu2.valueset.AssertionOperatorTypeEnum;
048import ca.uhn.fhir.model.dstu2.valueset.AssertionResponseTypesEnum;
049import ca.uhn.fhir.model.dstu2.composite.AttachmentDt;
050import ca.uhn.fhir.model.dstu2.valueset.AuditEventActionEnum;
051import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectLifecycleEnum;
052import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectRoleEnum;
053import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectTypeEnum;
054import ca.uhn.fhir.model.dstu2.valueset.AuditEventOutcomeEnum;
055import ca.uhn.fhir.model.dstu2.valueset.AuditEventParticipantNetworkTypeEnum;
056import ca.uhn.fhir.model.dstu2.valueset.AuditEventSourceTypeEnum;
057import ca.uhn.fhir.model.dstu2.valueset.BindingStrengthEnum;
058import ca.uhn.fhir.model.dstu2.resource.BodySite;
059import ca.uhn.fhir.model.dstu2.valueset.BundleTypeEnum;
060import ca.uhn.fhir.model.dstu2.resource.CarePlan;
061import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityCategoryEnum;
062import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityStatusEnum;
063import ca.uhn.fhir.model.dstu2.valueset.CarePlanRelationshipEnum;
064import ca.uhn.fhir.model.dstu2.valueset.CarePlanStatusEnum;
065import ca.uhn.fhir.model.dstu2.resource.Claim;
066import ca.uhn.fhir.model.dstu2.resource.ClaimResponse;
067import ca.uhn.fhir.model.dstu2.valueset.ClaimTypeEnum;
068import ca.uhn.fhir.model.dstu2.resource.ClinicalImpression;
069import ca.uhn.fhir.model.dstu2.valueset.ClinicalImpressionStatusEnum;
070import ca.uhn.fhir.model.dstu2.composite.CodeableConceptDt;
071import ca.uhn.fhir.model.dstu2.composite.CodingDt;
072import ca.uhn.fhir.model.dstu2.resource.CommunicationRequest;
073import ca.uhn.fhir.model.dstu2.valueset.CommunicationRequestStatusEnum;
074import ca.uhn.fhir.model.dstu2.valueset.CommunicationStatusEnum;
075import ca.uhn.fhir.model.dstu2.resource.Composition;
076import ca.uhn.fhir.model.dstu2.valueset.CompositionAttestationModeEnum;
077import ca.uhn.fhir.model.dstu2.valueset.CompositionStatusEnum;
078import ca.uhn.fhir.model.dstu2.valueset.ConceptMapEquivalenceEnum;
079import ca.uhn.fhir.model.dstu2.resource.Condition;
080import ca.uhn.fhir.model.dstu2.valueset.ConditionCategoryCodesEnum;
081import ca.uhn.fhir.model.dstu2.valueset.ConditionClinicalStatusCodesEnum;
082import ca.uhn.fhir.model.dstu2.valueset.ConditionVerificationStatusEnum;
083import ca.uhn.fhir.model.dstu2.valueset.ConditionalDeleteStatusEnum;
084import ca.uhn.fhir.model.dstu2.valueset.ConditionsCodesEnum;
085import ca.uhn.fhir.model.dstu2.resource.Conformance;
086import ca.uhn.fhir.model.dstu2.valueset.ConformanceEventModeEnum;
087import ca.uhn.fhir.model.dstu2.valueset.ConformanceResourceStatusEnum;
088import ca.uhn.fhir.model.dstu2.valueset.ConformanceStatementKindEnum;
089import ca.uhn.fhir.model.dstu2.composite.ContactPointDt;
090import ca.uhn.fhir.model.dstu2.valueset.ContentTypeEnum;
091import ca.uhn.fhir.model.dstu2.resource.Contract;
092import ca.uhn.fhir.model.dstu2.valueset.ContractActionCodesEnum;
093import ca.uhn.fhir.model.dstu2.valueset.ContractActorRoleCodesEnum;
094import ca.uhn.fhir.model.dstu2.valueset.ContractSubtypeCodesEnum;
095import ca.uhn.fhir.model.dstu2.valueset.ContractTermTypeCodesEnum;
096import ca.uhn.fhir.model.dstu2.valueset.ContractTypeCodesEnum;
097import ca.uhn.fhir.model.dstu2.resource.Coverage;
098import ca.uhn.fhir.model.dstu2.valueset.DataElementStringencyEnum;
099import ca.uhn.fhir.model.dstu2.valueset.DaysOfWeekEnum;
100import ca.uhn.fhir.model.dstu2.valueset.DetectedIssueSeverityEnum;
101import ca.uhn.fhir.model.dstu2.resource.Device;
102import ca.uhn.fhir.model.dstu2.resource.DeviceComponent;
103import ca.uhn.fhir.model.dstu2.resource.DeviceMetric;
104import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationStateEnum;
105import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationTypeEnum;
106import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCategoryEnum;
107import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricColorEnum;
108import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricOperationalStatusEnum;
109import ca.uhn.fhir.model.dstu2.valueset.DeviceStatusEnum;
110import ca.uhn.fhir.model.dstu2.resource.DeviceUseRequest;
111import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestPriorityEnum;
112import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestStatusEnum;
113import ca.uhn.fhir.model.dstu2.resource.DiagnosticOrder;
114import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderPriorityEnum;
115import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderStatusEnum;
116import ca.uhn.fhir.model.dstu2.resource.DiagnosticReport;
117import ca.uhn.fhir.model.dstu2.valueset.DiagnosticReportStatusEnum;
118import ca.uhn.fhir.model.dstu2.valueset.DigitalMediaTypeEnum;
119import ca.uhn.fhir.model.dstu2.valueset.DocumentModeEnum;
120import ca.uhn.fhir.model.dstu2.resource.DocumentReference;
121import ca.uhn.fhir.model.dstu2.valueset.DocumentReferenceStatusEnum;
122import ca.uhn.fhir.model.dstu2.valueset.DocumentRelationshipTypeEnum;
123import ca.uhn.fhir.model.dstu2.composite.ElementDefinitionDt;
124import ca.uhn.fhir.model.dstu2.resource.EligibilityRequest;
125import ca.uhn.fhir.model.dstu2.resource.Encounter;
126import ca.uhn.fhir.model.dstu2.valueset.EncounterClassEnum;
127import ca.uhn.fhir.model.dstu2.valueset.EncounterLocationStatusEnum;
128import ca.uhn.fhir.model.dstu2.valueset.EncounterStateEnum;
129import ca.uhn.fhir.model.dstu2.valueset.EncounterTypeEnum;
130import ca.uhn.fhir.model.dstu2.resource.EnrollmentRequest;
131import ca.uhn.fhir.model.dstu2.valueset.EnteralFormulaTypeCodesEnum;
132import ca.uhn.fhir.model.dstu2.resource.EpisodeOfCare;
133import ca.uhn.fhir.model.dstu2.valueset.EpisodeOfCareStatusEnum;
134import ca.uhn.fhir.model.dstu2.valueset.ExceptionCodesEnum;
135import ca.uhn.fhir.model.dstu2.valueset.ExtensionContextEnum;
136import ca.uhn.fhir.model.dstu2.valueset.FamilyHistoryStatusEnum;
137import ca.uhn.fhir.model.dstu2.resource.FamilyMemberHistory;
138import ca.uhn.fhir.model.dstu2.valueset.FilterOperatorEnum;
139import ca.uhn.fhir.model.dstu2.valueset.FlagCategoryCodesEnum;
140import ca.uhn.fhir.model.dstu2.valueset.FlagStatusEnum;
141import ca.uhn.fhir.model.dstu2.valueset.FluidConsistencyTypeCodesEnum;
142import ca.uhn.fhir.model.dstu2.resource.Goal;
143import ca.uhn.fhir.model.dstu2.valueset.GoalCategoryEnum;
144import ca.uhn.fhir.model.dstu2.valueset.GoalPriorityEnum;
145import ca.uhn.fhir.model.dstu2.valueset.GoalStartEventEnum;
146import ca.uhn.fhir.model.dstu2.valueset.GoalStatusEnum;
147import ca.uhn.fhir.model.dstu2.valueset.GoalStatusReasonEnum;
148import ca.uhn.fhir.model.dstu2.resource.Group;
149import ca.uhn.fhir.model.dstu2.valueset.GroupTypeEnum;
150import ca.uhn.fhir.model.dstu2.valueset.GuideDependencyTypeEnum;
151import ca.uhn.fhir.model.dstu2.valueset.GuidePageKindEnum;
152import ca.uhn.fhir.model.dstu2.valueset.GuideResourcePurposeEnum;
153import ca.uhn.fhir.model.dstu2.valueset.HTTPVerbEnum;
154import ca.uhn.fhir.model.dstu2.resource.HealthcareService;
155import ca.uhn.fhir.model.dstu2.composite.HumanNameDt;
156import ca.uhn.fhir.model.dstu2.composite.IdentifierDt;
157import ca.uhn.fhir.model.dstu2.valueset.IdentifierTypeCodesEnum;
158import ca.uhn.fhir.model.dstu2.valueset.IdentityAssuranceLevelEnum;
159import ca.uhn.fhir.model.dstu2.resource.ImagingObjectSelection;
160import ca.uhn.fhir.model.dstu2.resource.ImagingStudy;
161import ca.uhn.fhir.model.dstu2.resource.Immunization;
162import ca.uhn.fhir.model.dstu2.valueset.ImmunizationReasonCodesEnum;
163import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRecommendationDateCriterionCodesEnum;
164import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRecommendationStatusCodesEnum;
165import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRouteCodesEnum;
166import ca.uhn.fhir.model.dstu2.valueset.InstanceAvailabilityEnum;
167import ca.uhn.fhir.model.dstu2.valueset.InterventionCodesEnum;
168import ca.uhn.fhir.model.dstu2.valueset.IssueSeverityEnum;
169import ca.uhn.fhir.model.dstu2.valueset.IssueTypeEnum;
170import ca.uhn.fhir.model.dstu2.valueset.KOStitleEnum;
171import ca.uhn.fhir.model.dstu2.valueset.LateralityEnum;
172import ca.uhn.fhir.model.dstu2.valueset.LinkTypeEnum;
173import ca.uhn.fhir.model.dstu2.valueset.ListModeEnum;
174import ca.uhn.fhir.model.dstu2.valueset.ListOrderCodesEnum;
175import ca.uhn.fhir.model.dstu2.valueset.ListStatusEnum;
176import ca.uhn.fhir.model.dstu2.resource.Location;
177import ca.uhn.fhir.model.dstu2.valueset.LocationModeEnum;
178import ca.uhn.fhir.model.dstu2.valueset.LocationStatusEnum;
179import ca.uhn.fhir.model.dstu2.valueset.LocationTypeEnum;
180import ca.uhn.fhir.model.dstu2.valueset.MaritalStatusCodesEnum;
181import ca.uhn.fhir.model.dstu2.valueset.MeasmntPrincipleEnum;
182import ca.uhn.fhir.model.dstu2.resource.Media;
183import ca.uhn.fhir.model.dstu2.resource.Medication;
184import ca.uhn.fhir.model.dstu2.valueset.MedicationAdministrationStatusEnum;
185import ca.uhn.fhir.model.dstu2.valueset.MedicationDispenseStatusEnum;
186import ca.uhn.fhir.model.dstu2.resource.MedicationOrder;
187import ca.uhn.fhir.model.dstu2.valueset.MedicationOrderStatusEnum;
188import ca.uhn.fhir.model.dstu2.resource.MedicationStatement;
189import ca.uhn.fhir.model.dstu2.valueset.MedicationStatementStatusEnum;
190import ca.uhn.fhir.model.dstu2.valueset.MessageEventEnum;
191import ca.uhn.fhir.model.dstu2.valueset.MessageSignificanceCategoryEnum;
192import ca.uhn.fhir.model.dstu2.valueset.MessageTransportEnum;
193import ca.uhn.fhir.model.dstu2.resource.NamingSystem;
194import ca.uhn.fhir.model.dstu2.valueset.NamingSystemIdentifierTypeEnum;
195import ca.uhn.fhir.model.dstu2.valueset.NamingSystemTypeEnum;
196import ca.uhn.fhir.model.dstu2.valueset.NoteTypeEnum;
197import ca.uhn.fhir.model.dstu2.valueset.NutrientModifierCodesEnum;
198import ca.uhn.fhir.model.dstu2.resource.NutritionOrder;
199import ca.uhn.fhir.model.dstu2.valueset.NutritionOrderStatusEnum;
200import ca.uhn.fhir.model.dstu2.resource.Observation;
201import ca.uhn.fhir.model.dstu2.valueset.ObservationCategoryCodesEnum;
202import ca.uhn.fhir.model.dstu2.valueset.ObservationRelationshipTypeEnum;
203import ca.uhn.fhir.model.dstu2.valueset.ObservationStatusEnum;
204import ca.uhn.fhir.model.dstu2.resource.OperationDefinition;
205import ca.uhn.fhir.model.dstu2.valueset.OperationKindEnum;
206import ca.uhn.fhir.model.dstu2.resource.OperationOutcome;
207import ca.uhn.fhir.model.dstu2.valueset.OperationParameterUseEnum;
208import ca.uhn.fhir.model.dstu2.resource.Order;
209import ca.uhn.fhir.model.dstu2.valueset.OrderStatusEnum;
210import ca.uhn.fhir.model.dstu2.resource.Organization;
211import ca.uhn.fhir.model.dstu2.valueset.OrganizationTypeEnum;
212import ca.uhn.fhir.model.dstu2.valueset.ParticipantRequiredEnum;
213import ca.uhn.fhir.model.dstu2.valueset.ParticipantStatusEnum;
214import ca.uhn.fhir.model.dstu2.valueset.ParticipantTypeEnum;
215import ca.uhn.fhir.model.dstu2.valueset.ParticipationStatusEnum;
216import ca.uhn.fhir.model.dstu2.resource.Patient;
217import ca.uhn.fhir.model.dstu2.valueset.PayeeTypeCodesEnum;
218import ca.uhn.fhir.model.dstu2.valueset.PaymentStatusCodesEnum;
219import ca.uhn.fhir.model.dstu2.valueset.PaymentTypeCodesEnum;
220import ca.uhn.fhir.model.dstu2.composite.PeriodDt;
221import ca.uhn.fhir.model.dstu2.resource.Person;
222import ca.uhn.fhir.model.dstu2.resource.Practitioner;
223import ca.uhn.fhir.model.dstu2.valueset.PractitionerRoleEnum;
224import ca.uhn.fhir.model.dstu2.valueset.PractitionerSpecialtyEnum;
225import ca.uhn.fhir.model.dstu2.valueset.PriorityCodesEnum;
226import ca.uhn.fhir.model.dstu2.resource.Procedure;
227import ca.uhn.fhir.model.dstu2.resource.ProcedureRequest;
228import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestPriorityEnum;
229import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestStatusEnum;
230import ca.uhn.fhir.model.dstu2.valueset.ProcedureStatusEnum;
231import ca.uhn.fhir.model.dstu2.resource.ProcessRequest;
232import ca.uhn.fhir.model.dstu2.valueset.ProvenanceEntityRoleEnum;
233import ca.uhn.fhir.model.dstu2.composite.QuantityDt;
234import ca.uhn.fhir.model.dstu2.resource.Questionnaire;
235import ca.uhn.fhir.model.dstu2.resource.QuestionnaireResponse;
236import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireResponseStatusEnum;
237import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireStatusEnum;
238import ca.uhn.fhir.model.dstu2.composite.RangeDt;
239import ca.uhn.fhir.model.dstu2.composite.RatioDt;
240import ca.uhn.fhir.model.dstu2.valueset.ReferralMethodEnum;
241import ca.uhn.fhir.model.dstu2.resource.ReferralRequest;
242import ca.uhn.fhir.model.dstu2.valueset.ReferralStatusEnum;
243import ca.uhn.fhir.model.dstu2.resource.RelatedPerson;
244import ca.uhn.fhir.model.dstu2.valueset.RemittanceOutcomeEnum;
245import ca.uhn.fhir.model.dstu2.valueset.ResourceTypeEnum;
246import ca.uhn.fhir.model.dstu2.valueset.ResourceVersionPolicyEnum;
247import ca.uhn.fhir.model.dstu2.valueset.ResponseTypeEnum;
248import ca.uhn.fhir.model.dstu2.valueset.RestfulConformanceModeEnum;
249import ca.uhn.fhir.model.dstu2.valueset.RestfulSecurityServiceEnum;
250import ca.uhn.fhir.model.dstu2.resource.RiskAssessment;
251import ca.uhn.fhir.model.dstu2.valueset.RulesetCodesEnum;
252import ca.uhn.fhir.model.dstu2.composite.SampledDataDt;
253import ca.uhn.fhir.model.dstu2.resource.Schedule;
254import ca.uhn.fhir.model.dstu2.valueset.SearchEntryModeEnum;
255import ca.uhn.fhir.model.dstu2.valueset.SearchModifierCodeEnum;
256import ca.uhn.fhir.model.dstu2.valueset.SearchParamTypeEnum;
257import ca.uhn.fhir.model.dstu2.valueset.ServiceProvisionConditionsEnum;
258import ca.uhn.fhir.model.dstu2.composite.SignatureDt;
259import ca.uhn.fhir.model.dstu2.resource.Slot;
260import ca.uhn.fhir.model.dstu2.valueset.SlotStatusEnum;
261import ca.uhn.fhir.model.dstu2.resource.Specimen;
262import ca.uhn.fhir.model.dstu2.valueset.SpecimenCollectionMethodEnum;
263import ca.uhn.fhir.model.dstu2.valueset.SpecimenStatusEnum;
264import ca.uhn.fhir.model.dstu2.resource.StructureDefinition;
265import ca.uhn.fhir.model.dstu2.valueset.StructureDefinitionKindEnum;
266import ca.uhn.fhir.model.dstu2.valueset.SubscriptionChannelTypeEnum;
267import ca.uhn.fhir.model.dstu2.valueset.SubscriptionStatusEnum;
268import ca.uhn.fhir.model.dstu2.valueset.SubscriptionTagEnum;
269import ca.uhn.fhir.model.dstu2.resource.Substance;
270import ca.uhn.fhir.model.dstu2.valueset.SubstanceCategoryCodesEnum;
271import ca.uhn.fhir.model.dstu2.valueset.SupplementTypeCodesEnum;
272import ca.uhn.fhir.model.dstu2.valueset.SupplyDeliveryStatusEnum;
273import ca.uhn.fhir.model.dstu2.resource.SupplyRequest;
274import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestReasonEnum;
275import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestStatusEnum;
276import ca.uhn.fhir.model.dstu2.valueset.SurfaceCodesEnum;
277import ca.uhn.fhir.model.dstu2.valueset.SystemRestfulInteractionEnum;
278import ca.uhn.fhir.model.api.TemporalPrecisionEnum;
279import ca.uhn.fhir.model.dstu2.valueset.TextureModifiedFoodTypeCodesEnum;
280import ca.uhn.fhir.model.dstu2.valueset.TextureModifierCodesEnum;
281import ca.uhn.fhir.model.dstu2.composite.TimingDt;
282import ca.uhn.fhir.model.dstu2.valueset.TransactionModeEnum;
283import ca.uhn.fhir.model.dstu2.valueset.TypeRestfulInteractionEnum;
284import ca.uhn.fhir.model.dstu2.valueset.UDICodesEnum;
285import ca.uhn.fhir.model.dstu2.valueset.UnknownContentCodeEnum;
286import ca.uhn.fhir.model.dstu2.valueset.UseEnum;
287import ca.uhn.fhir.model.dstu2.resource.ValueSet;
288import ca.uhn.fhir.model.dstu2.valueset.VisionBaseEnum;
289import ca.uhn.fhir.model.dstu2.valueset.VisionEyesEnum;
290import ca.uhn.fhir.model.dstu2.resource.VisionPrescription;
291import ca.uhn.fhir.model.dstu2.valueset.XPathUsageTypeEnum;
292import ca.uhn.fhir.model.api.IResource;
293import ca.uhn.fhir.model.dstu2.composite.AgeDt;
294import ca.uhn.fhir.model.dstu2.composite.BoundCodeableConceptDt;
295import ca.uhn.fhir.model.dstu2.composite.DurationDt;
296import ca.uhn.fhir.model.dstu2.composite.MoneyDt;
297import ca.uhn.fhir.model.dstu2.composite.NarrativeDt;
298import ca.uhn.fhir.model.dstu2.composite.ResourceReferenceDt;
299import ca.uhn.fhir.model.dstu2.composite.SimpleQuantityDt;
300import ca.uhn.fhir.model.primitive.Base64BinaryDt;
301import ca.uhn.fhir.model.primitive.BooleanDt;
302import ca.uhn.fhir.model.primitive.BoundCodeDt;
303import ca.uhn.fhir.model.primitive.CodeDt;
304import ca.uhn.fhir.model.primitive.DateDt;
305import ca.uhn.fhir.model.primitive.DateTimeDt;
306import ca.uhn.fhir.model.primitive.DecimalDt;
307import ca.uhn.fhir.model.primitive.IdDt;
308import ca.uhn.fhir.model.primitive.InstantDt;
309import ca.uhn.fhir.model.primitive.IntegerDt;
310import ca.uhn.fhir.model.primitive.OidDt;
311import ca.uhn.fhir.model.primitive.PositiveIntDt;
312import ca.uhn.fhir.model.primitive.StringDt;
313import ca.uhn.fhir.model.primitive.TimeDt;
314import ca.uhn.fhir.model.primitive.UnsignedIntDt;
315import ca.uhn.fhir.model.primitive.UriDt;
316
317
318/**
319 * HAPI/FHIR <b>CarePlan</b> Resource
320 * ()
321 *
322 * <p>
323 * <b>Definition:</b>
324 * Describes the intention of how one or more practitioners intend to deliver care for a particular patient, group or community for a period of time, possibly limited to care for a specific condition or set of conditions.
325 * </p> 
326 *
327 * <p>
328 * <b>Requirements:</b>
329 * 
330 * </p> 
331 *
332 * <p>
333 * <b>Profile Definition:</b>
334 * <a href="http://hl7.org/fhir/profiles/CarePlan">http://hl7.org/fhir/profiles/CarePlan</a> 
335 * </p>
336 *
337 */
338@ResourceDef(name="CarePlan", profile="http://hl7.org/fhir/profiles/CarePlan", id="careplan")
339public class CarePlan extends ca.uhn.fhir.model.dstu2.resource.BaseResource
340    implements  IResource     {
341
342        /**
343         * Search parameter constant for <b>patient</b>
344         * <p>
345         * Description: <b></b><br>
346         * Type: <b>reference</b><br>
347         * Path: <b>CarePlan.subject</b><br>
348         * </p>
349         */
350        @SearchParamDefinition(name="patient", path="CarePlan.subject", description="", type="reference"  )
351        public static final String SP_PATIENT = "patient";
352
353        /**
354         * <b>Fluent Client</b> search parameter constant for <b>patient</b>
355         * <p>
356         * Description: <b></b><br>
357         * Type: <b>reference</b><br>
358         * Path: <b>CarePlan.subject</b><br>
359         * </p>
360         */
361        public static final ReferenceClientParam PATIENT = new ReferenceClientParam(SP_PATIENT);
362
363        /**
364         * Search parameter constant for <b>subject</b>
365         * <p>
366         * Description: <b></b><br>
367         * Type: <b>reference</b><br>
368         * Path: <b>CarePlan.subject</b><br>
369         * </p>
370         */
371        @SearchParamDefinition(name="subject", path="CarePlan.subject", description="", type="reference"  )
372        public static final String SP_SUBJECT = "subject";
373
374        /**
375         * <b>Fluent Client</b> search parameter constant for <b>subject</b>
376         * <p>
377         * Description: <b></b><br>
378         * Type: <b>reference</b><br>
379         * Path: <b>CarePlan.subject</b><br>
380         * </p>
381         */
382        public static final ReferenceClientParam SUBJECT = new ReferenceClientParam(SP_SUBJECT);
383
384        /**
385         * Search parameter constant for <b>condition</b>
386         * <p>
387         * Description: <b></b><br>
388         * Type: <b>reference</b><br>
389         * Path: <b>CarePlan.addresses</b><br>
390         * </p>
391         */
392        @SearchParamDefinition(name="condition", path="CarePlan.addresses", description="", type="reference"  )
393        public static final String SP_CONDITION = "condition";
394
395        /**
396         * <b>Fluent Client</b> search parameter constant for <b>condition</b>
397         * <p>
398         * Description: <b></b><br>
399         * Type: <b>reference</b><br>
400         * Path: <b>CarePlan.addresses</b><br>
401         * </p>
402         */
403        public static final ReferenceClientParam CONDITION = new ReferenceClientParam(SP_CONDITION);
404
405        /**
406         * Search parameter constant for <b>date</b>
407         * <p>
408         * Description: <b></b><br>
409         * Type: <b>date</b><br>
410         * Path: <b>CarePlan.period</b><br>
411         * </p>
412         */
413        @SearchParamDefinition(name="date", path="CarePlan.period", description="", type="date"  )
414        public static final String SP_DATE = "date";
415
416        /**
417         * <b>Fluent Client</b> search parameter constant for <b>date</b>
418         * <p>
419         * Description: <b></b><br>
420         * Type: <b>date</b><br>
421         * Path: <b>CarePlan.period</b><br>
422         * </p>
423         */
424        public static final DateClientParam DATE = new DateClientParam(SP_DATE);
425
426        /**
427         * Search parameter constant for <b>participant</b>
428         * <p>
429         * Description: <b></b><br>
430         * Type: <b>reference</b><br>
431         * Path: <b>CarePlan.participant.member</b><br>
432         * </p>
433         */
434        @SearchParamDefinition(name="participant", path="CarePlan.participant.member", description="", type="reference"  )
435        public static final String SP_PARTICIPANT = "participant";
436
437        /**
438         * <b>Fluent Client</b> search parameter constant for <b>participant</b>
439         * <p>
440         * Description: <b></b><br>
441         * Type: <b>reference</b><br>
442         * Path: <b>CarePlan.participant.member</b><br>
443         * </p>
444         */
445        public static final ReferenceClientParam PARTICIPANT = new ReferenceClientParam(SP_PARTICIPANT);
446
447        /**
448         * Search parameter constant for <b>activitycode</b>
449         * <p>
450         * Description: <b></b><br>
451         * Type: <b>token</b><br>
452         * Path: <b>CarePlan.activity.detail.code</b><br>
453         * </p>
454         */
455        @SearchParamDefinition(name="activitycode", path="CarePlan.activity.detail.code", description="", type="token"  )
456        public static final String SP_ACTIVITYCODE = "activitycode";
457
458        /**
459         * <b>Fluent Client</b> search parameter constant for <b>activitycode</b>
460         * <p>
461         * Description: <b></b><br>
462         * Type: <b>token</b><br>
463         * Path: <b>CarePlan.activity.detail.code</b><br>
464         * </p>
465         */
466        public static final TokenClientParam ACTIVITYCODE = new TokenClientParam(SP_ACTIVITYCODE);
467
468        /**
469         * Search parameter constant for <b>activitydate</b>
470         * <p>
471         * Description: <b>Specified date occurs within period specified by CarePlan.activity.timingSchedule</b><br>
472         * Type: <b>date</b><br>
473         * Path: <b>CarePlan.activity.detail.scheduled[x]</b><br>
474         * </p>
475         */
476        @SearchParamDefinition(name="activitydate", path="CarePlan.activity.detail.scheduled[x]", description="Specified date occurs within period specified by CarePlan.activity.timingSchedule", type="date"  )
477        public static final String SP_ACTIVITYDATE = "activitydate";
478
479        /**
480         * <b>Fluent Client</b> search parameter constant for <b>activitydate</b>
481         * <p>
482         * Description: <b>Specified date occurs within period specified by CarePlan.activity.timingSchedule</b><br>
483         * Type: <b>date</b><br>
484         * Path: <b>CarePlan.activity.detail.scheduled[x]</b><br>
485         * </p>
486         */
487        public static final DateClientParam ACTIVITYDATE = new DateClientParam(SP_ACTIVITYDATE);
488
489        /**
490         * Search parameter constant for <b>activityreference</b>
491         * <p>
492         * Description: <b></b><br>
493         * Type: <b>reference</b><br>
494         * Path: <b>CarePlan.activity.reference</b><br>
495         * </p>
496         */
497        @SearchParamDefinition(name="activityreference", path="CarePlan.activity.reference", description="", type="reference"  )
498        public static final String SP_ACTIVITYREFERENCE = "activityreference";
499
500        /**
501         * <b>Fluent Client</b> search parameter constant for <b>activityreference</b>
502         * <p>
503         * Description: <b></b><br>
504         * Type: <b>reference</b><br>
505         * Path: <b>CarePlan.activity.reference</b><br>
506         * </p>
507         */
508        public static final ReferenceClientParam ACTIVITYREFERENCE = new ReferenceClientParam(SP_ACTIVITYREFERENCE);
509
510        /**
511         * Search parameter constant for <b>performer</b>
512         * <p>
513         * Description: <b>Matches if the practitioner is listed as a performer in any of the \&quot;simple\&quot; activities.  (For performers of the detailed activities, chain through the activitydetail search parameter.)</b><br>
514         * Type: <b>reference</b><br>
515         * Path: <b>CarePlan.activity.detail.performer</b><br>
516         * </p>
517         */
518        @SearchParamDefinition(name="performer", path="CarePlan.activity.detail.performer", description="Matches if the practitioner is listed as a performer in any of the \"simple\" activities.  (For performers of the detailed activities, chain through the activitydetail search parameter.)", type="reference"  )
519        public static final String SP_PERFORMER = "performer";
520
521        /**
522         * <b>Fluent Client</b> search parameter constant for <b>performer</b>
523         * <p>
524         * Description: <b>Matches if the practitioner is listed as a performer in any of the \&quot;simple\&quot; activities.  (For performers of the detailed activities, chain through the activitydetail search parameter.)</b><br>
525         * Type: <b>reference</b><br>
526         * Path: <b>CarePlan.activity.detail.performer</b><br>
527         * </p>
528         */
529        public static final ReferenceClientParam PERFORMER = new ReferenceClientParam(SP_PERFORMER);
530
531        /**
532         * Search parameter constant for <b>goal</b>
533         * <p>
534         * Description: <b></b><br>
535         * Type: <b>reference</b><br>
536         * Path: <b>CarePlan.goal</b><br>
537         * </p>
538         */
539        @SearchParamDefinition(name="goal", path="CarePlan.goal", description="", type="reference"  )
540        public static final String SP_GOAL = "goal";
541
542        /**
543         * <b>Fluent Client</b> search parameter constant for <b>goal</b>
544         * <p>
545         * Description: <b></b><br>
546         * Type: <b>reference</b><br>
547         * Path: <b>CarePlan.goal</b><br>
548         * </p>
549         */
550        public static final ReferenceClientParam GOAL = new ReferenceClientParam(SP_GOAL);
551
552        /**
553         * Search parameter constant for <b>relatedcode</b>
554         * <p>
555         * Description: <b></b><br>
556         * Type: <b>token</b><br>
557         * Path: <b>CarePlan.relatedPlan.code</b><br>
558         * </p>
559         */
560        @SearchParamDefinition(name="relatedcode", path="CarePlan.relatedPlan.code", description="", type="token"  )
561        public static final String SP_RELATEDCODE = "relatedcode";
562
563        /**
564         * <b>Fluent Client</b> search parameter constant for <b>relatedcode</b>
565         * <p>
566         * Description: <b></b><br>
567         * Type: <b>token</b><br>
568         * Path: <b>CarePlan.relatedPlan.code</b><br>
569         * </p>
570         */
571        public static final TokenClientParam RELATEDCODE = new TokenClientParam(SP_RELATEDCODE);
572
573        /**
574         * Search parameter constant for <b>relatedplan</b>
575         * <p>
576         * Description: <b></b><br>
577         * Type: <b>reference</b><br>
578         * Path: <b>CarePlan.relatedPlan.plan</b><br>
579         * </p>
580         */
581        @SearchParamDefinition(name="relatedplan", path="CarePlan.relatedPlan.plan", description="", type="reference"  )
582        public static final String SP_RELATEDPLAN = "relatedplan";
583
584        /**
585         * <b>Fluent Client</b> search parameter constant for <b>relatedplan</b>
586         * <p>
587         * Description: <b></b><br>
588         * Type: <b>reference</b><br>
589         * Path: <b>CarePlan.relatedPlan.plan</b><br>
590         * </p>
591         */
592        public static final ReferenceClientParam RELATEDPLAN = new ReferenceClientParam(SP_RELATEDPLAN);
593
594        /**
595         * Search parameter constant for <b>relatedcode-relatedplan</b>
596         * <p>
597         * Description: <b>A combination of the type of relationship and the related plan</b><br>
598         * Type: <b>composite</b><br>
599         * Path: <b>relatedcode &amp; relatedplan</b><br>
600         * </p>
601         */
602        @SearchParamDefinition(name="relatedcode-relatedplan", path="relatedcode & relatedplan", description="A combination of the type of relationship and the related plan", type="composite"  , compositeOf={  "relatedcode",  "relatedplan" }  )
603        public static final String SP_RELATEDCODE_RELATEDPLAN = "relatedcode-relatedplan";
604
605        /**
606         * <b>Fluent Client</b> search parameter constant for <b>relatedcode-relatedplan</b>
607         * <p>
608         * Description: <b>A combination of the type of relationship and the related plan</b><br>
609         * Type: <b>composite</b><br>
610         * Path: <b>relatedcode &amp; relatedplan</b><br>
611         * </p>
612         */
613        public static final CompositeClientParam<TokenClientParam, ReferenceClientParam> RELATEDCODE_RELATEDPLAN = new CompositeClientParam<TokenClientParam, ReferenceClientParam>(SP_RELATEDCODE_RELATEDPLAN);
614
615
616        /**
617         * Constant for fluent queries to be used to add include statements. Specifies
618         * the path value of "<b>CarePlan:activityreference</b>".
619         */
620        public static final Include INCLUDE_ACTIVITYREFERENCE = new Include("CarePlan:activityreference");
621
622        /**
623         * Constant for fluent queries to be used to add include statements. Specifies
624         * the path value of "<b>CarePlan:condition</b>".
625         */
626        public static final Include INCLUDE_CONDITION = new Include("CarePlan:condition");
627
628        /**
629         * Constant for fluent queries to be used to add include statements. Specifies
630         * the path value of "<b>CarePlan:goal</b>".
631         */
632        public static final Include INCLUDE_GOAL = new Include("CarePlan:goal");
633
634        /**
635         * Constant for fluent queries to be used to add include statements. Specifies
636         * the path value of "<b>CarePlan:participant</b>".
637         */
638        public static final Include INCLUDE_PARTICIPANT = new Include("CarePlan:participant");
639
640        /**
641         * Constant for fluent queries to be used to add include statements. Specifies
642         * the path value of "<b>CarePlan:patient</b>".
643         */
644        public static final Include INCLUDE_PATIENT = new Include("CarePlan:patient");
645
646        /**
647         * Constant for fluent queries to be used to add include statements. Specifies
648         * the path value of "<b>CarePlan:performer</b>".
649         */
650        public static final Include INCLUDE_PERFORMER = new Include("CarePlan:performer");
651
652        /**
653         * Constant for fluent queries to be used to add include statements. Specifies
654         * the path value of "<b>CarePlan:relatedplan</b>".
655         */
656        public static final Include INCLUDE_RELATEDPLAN = new Include("CarePlan:relatedplan");
657
658        /**
659         * Constant for fluent queries to be used to add include statements. Specifies
660         * the path value of "<b>CarePlan:subject</b>".
661         */
662        public static final Include INCLUDE_SUBJECT = new Include("CarePlan:subject");
663
664
665        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)       
666        @Description(
667                shortDefinition="",
668                formalDefinition="This records identifiers associated with this care plan that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)"
669        )
670        private java.util.List<IdentifierDt> myIdentifier;
671        
672        @Child(name="subject", order=1, min=0, max=1, summary=true, modifier=false, type={
673                ca.uhn.fhir.model.dstu2.resource.Patient.class,                 ca.uhn.fhir.model.dstu2.resource.Group.class    })
674        @Description(
675                shortDefinition="",
676                formalDefinition="Identifies the patient or group whose intended care is described by the plan."
677        )
678        private ResourceReferenceDt mySubject;
679        
680        @Child(name="status", type=CodeDt.class, order=2, min=1, max=1, summary=true, modifier=true)    
681        @Description(
682                shortDefinition="",
683                formalDefinition="Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record."
684        )
685        private BoundCodeDt<CarePlanStatusEnum> myStatus;
686        
687        @Child(name="context", order=3, min=0, max=1, summary=true, modifier=false, type={
688                ca.uhn.fhir.model.dstu2.resource.Encounter.class,               ca.uhn.fhir.model.dstu2.resource.EpisodeOfCare.class    })
689        @Description(
690                shortDefinition="",
691                formalDefinition="Identifies the context in which this particular CarePlan is defined."
692        )
693        private ResourceReferenceDt myContext;
694        
695        @Child(name="period", type=PeriodDt.class, order=4, min=0, max=1, summary=true, modifier=false) 
696        @Description(
697                shortDefinition="",
698                formalDefinition="Indicates when the plan did (or is intended to) come into effect and end."
699        )
700        private PeriodDt myPeriod;
701        
702        @Child(name="author", order=5, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false, type={
703                ca.uhn.fhir.model.dstu2.resource.Patient.class,                 ca.uhn.fhir.model.dstu2.resource.Practitioner.class,            ca.uhn.fhir.model.dstu2.resource.RelatedPerson.class,           ca.uhn.fhir.model.dstu2.resource.Organization.class     })
704        @Description(
705                shortDefinition="",
706                formalDefinition="Identifies the individual(s) or ogranization who is responsible for the content of the care plan."
707        )
708        private java.util.List<ResourceReferenceDt> myAuthor;
709        
710        @Child(name="modified", type=DateTimeDt.class, order=6, min=0, max=1, summary=true, modifier=false)     
711        @Description(
712                shortDefinition="",
713                formalDefinition="Identifies the most recent date on which the plan has been revised."
714        )
715        private DateTimeDt myModified;
716        
717        @Child(name="category", type=CodeableConceptDt.class, order=7, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)    
718        @Description(
719                shortDefinition="",
720                formalDefinition="Identifies what \"kind\" of plan this is to support differentiation between multiple co-existing plans; e.g. \"Home health\", \"psychiatric\", \"asthma\", \"disease management\", \"wellness plan\", etc."
721        )
722        private java.util.List<CodeableConceptDt> myCategory;
723        
724        @Child(name="description", type=StringDt.class, order=8, min=0, max=1, summary=true, modifier=false)    
725        @Description(
726                shortDefinition="",
727                formalDefinition="A description of the scope and nature of the plan"
728        )
729        private StringDt myDescription;
730        
731        @Child(name="addresses", order=9, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false, type={
732                ca.uhn.fhir.model.dstu2.resource.Condition.class        })
733        @Description(
734                shortDefinition="",
735                formalDefinition="Identifies the conditions/problems/concerns/diagnoses/etc. whose management and/or mitigation are handled by this plan."
736        )
737        private java.util.List<ResourceReferenceDt> myAddresses;
738        
739        @Child(name="support", order=10, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
740                IResource.class })
741        @Description(
742                shortDefinition="",
743                formalDefinition="Identifies portions of the patient's record that specifically influenced the formation of the plan.  These might include co-morbidities, recent procedures, limitations, recent assessments, etc."
744        )
745        private java.util.List<ResourceReferenceDt> mySupport;
746        
747        @Child(name="relatedPlan", order=11, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
748        @Description(
749                shortDefinition="",
750                formalDefinition="Identifies CarePlans with some sort of formal relationship to the current plan."
751        )
752        private java.util.List<RelatedPlan> myRelatedPlan;
753        
754        @Child(name="participant", order=12, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
755        @Description(
756                shortDefinition="",
757                formalDefinition="Identifies all people and organizations who are expected to be involved in the care envisioned by this plan."
758        )
759        private java.util.List<Participant> myParticipant;
760        
761        @Child(name="goal", order=13, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
762                ca.uhn.fhir.model.dstu2.resource.Goal.class     })
763        @Description(
764                shortDefinition="",
765                formalDefinition="Describes the intended objective(s) of carrying out the care plan."
766        )
767        private java.util.List<ResourceReferenceDt> myGoal;
768        
769        @Child(name="activity", order=14, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
770        @Description(
771                shortDefinition="",
772                formalDefinition="Identifies a planned action to occur as part of the plan.  For example, a medication to be used, lab tests to perform, self-monitoring, education, etc."
773        )
774        private java.util.List<Activity> myActivity;
775        
776        @Child(name="note", type=AnnotationDt.class, order=15, min=0, max=1, summary=false, modifier=false)     
777        @Description(
778                shortDefinition="",
779                formalDefinition="General notes about the care plan not covered elsewhere"
780        )
781        private AnnotationDt myNote;
782        
783
784        @Override
785        public boolean isEmpty() {
786                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  mySubject,  myStatus,  myContext,  myPeriod,  myAuthor,  myModified,  myCategory,  myDescription,  myAddresses,  mySupport,  myRelatedPlan,  myParticipant,  myGoal,  myActivity,  myNote);
787        }
788        
789        @Override
790        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
791                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, mySubject, myStatus, myContext, myPeriod, myAuthor, myModified, myCategory, myDescription, myAddresses, mySupport, myRelatedPlan, myParticipant, myGoal, myActivity, myNote);
792        }
793
794        /**
795         * Gets the value(s) for <b>identifier</b> ().
796         * creating it if it does
797         * not exist. Will not return <code>null</code>.
798         *
799     * <p>
800     * <b>Definition:</b>
801     * This records identifiers associated with this care plan that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)
802     * </p> 
803         */
804        public java.util.List<IdentifierDt> getIdentifier() {  
805                if (myIdentifier == null) {
806                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
807                }
808                return myIdentifier;
809        }
810
811        /**
812         * Sets the value(s) for <b>identifier</b> ()
813         *
814     * <p>
815     * <b>Definition:</b>
816     * This records identifiers associated with this care plan that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)
817     * </p> 
818         */
819        public CarePlan setIdentifier(java.util.List<IdentifierDt> theValue) {
820                myIdentifier = theValue;
821                return this;
822        }
823        
824        
825
826        /**
827         * Adds and returns a new value for <b>identifier</b> ()
828         *
829     * <p>
830     * <b>Definition:</b>
831     * This records identifiers associated with this care plan that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)
832     * </p> 
833         */
834        public IdentifierDt addIdentifier() {
835                IdentifierDt newType = new IdentifierDt();
836                getIdentifier().add(newType);
837                return newType; 
838        }
839
840        /**
841         * Adds a given new value for <b>identifier</b> ()
842         *
843         * <p>
844         * <b>Definition:</b>
845         * This records identifiers associated with this care plan that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)
846         * </p>
847         * @param theValue The identifier to add (must not be <code>null</code>)
848         */
849        public CarePlan addIdentifier(IdentifierDt theValue) {
850                if (theValue == null) {
851                        throw new NullPointerException("theValue must not be null");
852                }
853                getIdentifier().add(theValue);
854                return this;
855        }
856
857        /**
858         * Gets the first repetition for <b>identifier</b> (),
859         * creating it if it does not already exist.
860         *
861     * <p>
862     * <b>Definition:</b>
863     * This records identifiers associated with this care plan that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)
864     * </p> 
865         */
866        public IdentifierDt getIdentifierFirstRep() {
867                if (getIdentifier().isEmpty()) {
868                        return addIdentifier();
869                }
870                return getIdentifier().get(0); 
871        }
872  
873        /**
874         * Gets the value(s) for <b>subject</b> ().
875         * creating it if it does
876         * not exist. Will not return <code>null</code>.
877         *
878     * <p>
879     * <b>Definition:</b>
880     * Identifies the patient or group whose intended care is described by the plan.
881     * </p> 
882         */
883        public ResourceReferenceDt getSubject() {  
884                if (mySubject == null) {
885                        mySubject = new ResourceReferenceDt();
886                }
887                return mySubject;
888        }
889
890        /**
891         * Sets the value(s) for <b>subject</b> ()
892         *
893     * <p>
894     * <b>Definition:</b>
895     * Identifies the patient or group whose intended care is described by the plan.
896     * </p> 
897         */
898        public CarePlan setSubject(ResourceReferenceDt theValue) {
899                mySubject = theValue;
900                return this;
901        }
902        
903        
904
905  
906        /**
907         * Gets the value(s) for <b>status</b> ().
908         * creating it if it does
909         * not exist. Will not return <code>null</code>.
910         *
911     * <p>
912     * <b>Definition:</b>
913     * Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record.
914     * </p> 
915         */
916        public BoundCodeDt<CarePlanStatusEnum> getStatusElement() {  
917                if (myStatus == null) {
918                        myStatus = new BoundCodeDt<CarePlanStatusEnum>(CarePlanStatusEnum.VALUESET_BINDER);
919                }
920                return myStatus;
921        }
922
923        
924        /**
925         * Gets the value(s) for <b>status</b> ().
926         * creating it if it does
927         * not exist. Will not return <code>null</code>.
928         *
929     * <p>
930     * <b>Definition:</b>
931     * Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record.
932     * </p> 
933         */
934        public String getStatus() {  
935                return getStatusElement().getValue();
936        }
937
938        /**
939         * Sets the value(s) for <b>status</b> ()
940         *
941     * <p>
942     * <b>Definition:</b>
943     * Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record.
944     * </p> 
945         */
946        public CarePlan setStatus(BoundCodeDt<CarePlanStatusEnum> theValue) {
947                myStatus = theValue;
948                return this;
949        }
950        
951        
952
953        /**
954         * Sets the value(s) for <b>status</b> ()
955         *
956     * <p>
957     * <b>Definition:</b>
958     * Indicates whether the plan is currently being acted upon, represents future intentions or is now a historical record.
959     * </p> 
960         */
961        public CarePlan setStatus(CarePlanStatusEnum theValue) {
962                setStatus(new BoundCodeDt<CarePlanStatusEnum>(CarePlanStatusEnum.VALUESET_BINDER, theValue));
963                
964/*
965                getStatusElement().setValueAsEnum(theValue);
966*/
967                return this;
968        }
969
970  
971        /**
972         * Gets the value(s) for <b>context</b> ().
973         * creating it if it does
974         * not exist. Will not return <code>null</code>.
975         *
976     * <p>
977     * <b>Definition:</b>
978     * Identifies the context in which this particular CarePlan is defined.
979     * </p> 
980         */
981        public ResourceReferenceDt getContext() {  
982                if (myContext == null) {
983                        myContext = new ResourceReferenceDt();
984                }
985                return myContext;
986        }
987
988        /**
989         * Sets the value(s) for <b>context</b> ()
990         *
991     * <p>
992     * <b>Definition:</b>
993     * Identifies the context in which this particular CarePlan is defined.
994     * </p> 
995         */
996        public CarePlan setContext(ResourceReferenceDt theValue) {
997                myContext = theValue;
998                return this;
999        }
1000        
1001        
1002
1003  
1004        /**
1005         * Gets the value(s) for <b>period</b> ().
1006         * creating it if it does
1007         * not exist. Will not return <code>null</code>.
1008         *
1009     * <p>
1010     * <b>Definition:</b>
1011     * Indicates when the plan did (or is intended to) come into effect and end.
1012     * </p> 
1013         */
1014        public PeriodDt getPeriod() {  
1015                if (myPeriod == null) {
1016                        myPeriod = new PeriodDt();
1017                }
1018                return myPeriod;
1019        }
1020
1021        /**
1022         * Sets the value(s) for <b>period</b> ()
1023         *
1024     * <p>
1025     * <b>Definition:</b>
1026     * Indicates when the plan did (or is intended to) come into effect and end.
1027     * </p> 
1028         */
1029        public CarePlan setPeriod(PeriodDt theValue) {
1030                myPeriod = theValue;
1031                return this;
1032        }
1033        
1034        
1035
1036  
1037        /**
1038         * Gets the value(s) for <b>author</b> ().
1039         * creating it if it does
1040         * not exist. Will not return <code>null</code>.
1041         *
1042     * <p>
1043     * <b>Definition:</b>
1044     * Identifies the individual(s) or ogranization who is responsible for the content of the care plan.
1045     * </p> 
1046         */
1047        public java.util.List<ResourceReferenceDt> getAuthor() {  
1048                if (myAuthor == null) {
1049                        myAuthor = new java.util.ArrayList<ResourceReferenceDt>();
1050                }
1051                return myAuthor;
1052        }
1053
1054        /**
1055         * Sets the value(s) for <b>author</b> ()
1056         *
1057     * <p>
1058     * <b>Definition:</b>
1059     * Identifies the individual(s) or ogranization who is responsible for the content of the care plan.
1060     * </p> 
1061         */
1062        public CarePlan setAuthor(java.util.List<ResourceReferenceDt> theValue) {
1063                myAuthor = theValue;
1064                return this;
1065        }
1066        
1067        
1068
1069        /**
1070         * Adds and returns a new value for <b>author</b> ()
1071         *
1072     * <p>
1073     * <b>Definition:</b>
1074     * Identifies the individual(s) or ogranization who is responsible for the content of the care plan.
1075     * </p> 
1076         */
1077        public ResourceReferenceDt addAuthor() {
1078                ResourceReferenceDt newType = new ResourceReferenceDt();
1079                getAuthor().add(newType);
1080                return newType; 
1081        }
1082  
1083        /**
1084         * Gets the value(s) for <b>modified</b> ().
1085         * creating it if it does
1086         * not exist. Will not return <code>null</code>.
1087         *
1088     * <p>
1089     * <b>Definition:</b>
1090     * Identifies the most recent date on which the plan has been revised.
1091     * </p> 
1092         */
1093        public DateTimeDt getModifiedElement() {  
1094                if (myModified == null) {
1095                        myModified = new DateTimeDt();
1096                }
1097                return myModified;
1098        }
1099
1100        
1101        /**
1102         * Gets the value(s) for <b>modified</b> ().
1103         * creating it if it does
1104         * not exist. Will not return <code>null</code>.
1105         *
1106     * <p>
1107     * <b>Definition:</b>
1108     * Identifies the most recent date on which the plan has been revised.
1109     * </p> 
1110         */
1111        public Date getModified() {  
1112                return getModifiedElement().getValue();
1113        }
1114
1115        /**
1116         * Sets the value(s) for <b>modified</b> ()
1117         *
1118     * <p>
1119     * <b>Definition:</b>
1120     * Identifies the most recent date on which the plan has been revised.
1121     * </p> 
1122         */
1123        public CarePlan setModified(DateTimeDt theValue) {
1124                myModified = theValue;
1125                return this;
1126        }
1127        
1128        
1129
1130        /**
1131         * Sets the value for <b>modified</b> ()
1132         *
1133     * <p>
1134     * <b>Definition:</b>
1135     * Identifies the most recent date on which the plan has been revised.
1136     * </p> 
1137         */
1138        public CarePlan setModified( Date theDate,  TemporalPrecisionEnum thePrecision) {
1139                myModified = new DateTimeDt(theDate, thePrecision); 
1140                return this; 
1141        }
1142
1143        /**
1144         * Sets the value for <b>modified</b> ()
1145         *
1146     * <p>
1147     * <b>Definition:</b>
1148     * Identifies the most recent date on which the plan has been revised.
1149     * </p> 
1150         */
1151        public CarePlan setModifiedWithSecondsPrecision( Date theDate) {
1152                myModified = new DateTimeDt(theDate); 
1153                return this; 
1154        }
1155
1156 
1157        /**
1158         * Gets the value(s) for <b>category</b> ().
1159         * creating it if it does
1160         * not exist. Will not return <code>null</code>.
1161         *
1162     * <p>
1163     * <b>Definition:</b>
1164     * Identifies what \&quot;kind\&quot; of plan this is to support differentiation between multiple co-existing plans; e.g. \&quot;Home health\&quot;, \&quot;psychiatric\&quot;, \&quot;asthma\&quot;, \&quot;disease management\&quot;, \&quot;wellness plan\&quot;, etc.
1165     * </p> 
1166         */
1167        public java.util.List<CodeableConceptDt> getCategory() {  
1168                if (myCategory == null) {
1169                        myCategory = new java.util.ArrayList<CodeableConceptDt>();
1170                }
1171                return myCategory;
1172        }
1173
1174        /**
1175         * Sets the value(s) for <b>category</b> ()
1176         *
1177     * <p>
1178     * <b>Definition:</b>
1179     * Identifies what \&quot;kind\&quot; of plan this is to support differentiation between multiple co-existing plans; e.g. \&quot;Home health\&quot;, \&quot;psychiatric\&quot;, \&quot;asthma\&quot;, \&quot;disease management\&quot;, \&quot;wellness plan\&quot;, etc.
1180     * </p> 
1181         */
1182        public CarePlan setCategory(java.util.List<CodeableConceptDt> theValue) {
1183                myCategory = theValue;
1184                return this;
1185        }
1186        
1187        
1188
1189        /**
1190         * Adds and returns a new value for <b>category</b> ()
1191         *
1192     * <p>
1193     * <b>Definition:</b>
1194     * Identifies what \&quot;kind\&quot; of plan this is to support differentiation between multiple co-existing plans; e.g. \&quot;Home health\&quot;, \&quot;psychiatric\&quot;, \&quot;asthma\&quot;, \&quot;disease management\&quot;, \&quot;wellness plan\&quot;, etc.
1195     * </p> 
1196         */
1197        public CodeableConceptDt addCategory() {
1198                CodeableConceptDt newType = new CodeableConceptDt();
1199                getCategory().add(newType);
1200                return newType; 
1201        }
1202
1203        /**
1204         * Adds a given new value for <b>category</b> ()
1205         *
1206         * <p>
1207         * <b>Definition:</b>
1208         * Identifies what \&quot;kind\&quot; of plan this is to support differentiation between multiple co-existing plans; e.g. \&quot;Home health\&quot;, \&quot;psychiatric\&quot;, \&quot;asthma\&quot;, \&quot;disease management\&quot;, \&quot;wellness plan\&quot;, etc.
1209         * </p>
1210         * @param theValue The category to add (must not be <code>null</code>)
1211         */
1212        public CarePlan addCategory(CodeableConceptDt theValue) {
1213                if (theValue == null) {
1214                        throw new NullPointerException("theValue must not be null");
1215                }
1216                getCategory().add(theValue);
1217                return this;
1218        }
1219
1220        /**
1221         * Gets the first repetition for <b>category</b> (),
1222         * creating it if it does not already exist.
1223         *
1224     * <p>
1225     * <b>Definition:</b>
1226     * Identifies what \&quot;kind\&quot; of plan this is to support differentiation between multiple co-existing plans; e.g. \&quot;Home health\&quot;, \&quot;psychiatric\&quot;, \&quot;asthma\&quot;, \&quot;disease management\&quot;, \&quot;wellness plan\&quot;, etc.
1227     * </p> 
1228         */
1229        public CodeableConceptDt getCategoryFirstRep() {
1230                if (getCategory().isEmpty()) {
1231                        return addCategory();
1232                }
1233                return getCategory().get(0); 
1234        }
1235  
1236        /**
1237         * Gets the value(s) for <b>description</b> ().
1238         * creating it if it does
1239         * not exist. Will not return <code>null</code>.
1240         *
1241     * <p>
1242     * <b>Definition:</b>
1243     * A description of the scope and nature of the plan
1244     * </p> 
1245         */
1246        public StringDt getDescriptionElement() {  
1247                if (myDescription == null) {
1248                        myDescription = new StringDt();
1249                }
1250                return myDescription;
1251        }
1252
1253        
1254        /**
1255         * Gets the value(s) for <b>description</b> ().
1256         * creating it if it does
1257         * not exist. Will not return <code>null</code>.
1258         *
1259     * <p>
1260     * <b>Definition:</b>
1261     * A description of the scope and nature of the plan
1262     * </p> 
1263         */
1264        public String getDescription() {  
1265                return getDescriptionElement().getValue();
1266        }
1267
1268        /**
1269         * Sets the value(s) for <b>description</b> ()
1270         *
1271     * <p>
1272     * <b>Definition:</b>
1273     * A description of the scope and nature of the plan
1274     * </p> 
1275         */
1276        public CarePlan setDescription(StringDt theValue) {
1277                myDescription = theValue;
1278                return this;
1279        }
1280        
1281        
1282
1283        /**
1284         * Sets the value for <b>description</b> ()
1285         *
1286     * <p>
1287     * <b>Definition:</b>
1288     * A description of the scope and nature of the plan
1289     * </p> 
1290         */
1291        public CarePlan setDescription( String theString) {
1292                myDescription = new StringDt(theString); 
1293                return this; 
1294        }
1295
1296 
1297        /**
1298         * Gets the value(s) for <b>addresses</b> ().
1299         * creating it if it does
1300         * not exist. Will not return <code>null</code>.
1301         *
1302     * <p>
1303     * <b>Definition:</b>
1304     * Identifies the conditions/problems/concerns/diagnoses/etc. whose management and/or mitigation are handled by this plan.
1305     * </p> 
1306         */
1307        public java.util.List<ResourceReferenceDt> getAddresses() {  
1308                if (myAddresses == null) {
1309                        myAddresses = new java.util.ArrayList<ResourceReferenceDt>();
1310                }
1311                return myAddresses;
1312        }
1313
1314        /**
1315         * Sets the value(s) for <b>addresses</b> ()
1316         *
1317     * <p>
1318     * <b>Definition:</b>
1319     * Identifies the conditions/problems/concerns/diagnoses/etc. whose management and/or mitigation are handled by this plan.
1320     * </p> 
1321         */
1322        public CarePlan setAddresses(java.util.List<ResourceReferenceDt> theValue) {
1323                myAddresses = theValue;
1324                return this;
1325        }
1326        
1327        
1328
1329        /**
1330         * Adds and returns a new value for <b>addresses</b> ()
1331         *
1332     * <p>
1333     * <b>Definition:</b>
1334     * Identifies the conditions/problems/concerns/diagnoses/etc. whose management and/or mitigation are handled by this plan.
1335     * </p> 
1336         */
1337        public ResourceReferenceDt addAddresses() {
1338                ResourceReferenceDt newType = new ResourceReferenceDt();
1339                getAddresses().add(newType);
1340                return newType; 
1341        }
1342  
1343        /**
1344         * Gets the value(s) for <b>support</b> ().
1345         * creating it if it does
1346         * not exist. Will not return <code>null</code>.
1347         *
1348     * <p>
1349     * <b>Definition:</b>
1350     * Identifies portions of the patient's record that specifically influenced the formation of the plan.  These might include co-morbidities, recent procedures, limitations, recent assessments, etc.
1351     * </p> 
1352         */
1353        public java.util.List<ResourceReferenceDt> getSupport() {  
1354                if (mySupport == null) {
1355                        mySupport = new java.util.ArrayList<ResourceReferenceDt>();
1356                }
1357                return mySupport;
1358        }
1359
1360        /**
1361         * Sets the value(s) for <b>support</b> ()
1362         *
1363     * <p>
1364     * <b>Definition:</b>
1365     * Identifies portions of the patient's record that specifically influenced the formation of the plan.  These might include co-morbidities, recent procedures, limitations, recent assessments, etc.
1366     * </p> 
1367         */
1368        public CarePlan setSupport(java.util.List<ResourceReferenceDt> theValue) {
1369                mySupport = theValue;
1370                return this;
1371        }
1372        
1373        
1374
1375        /**
1376         * Adds and returns a new value for <b>support</b> ()
1377         *
1378     * <p>
1379     * <b>Definition:</b>
1380     * Identifies portions of the patient's record that specifically influenced the formation of the plan.  These might include co-morbidities, recent procedures, limitations, recent assessments, etc.
1381     * </p> 
1382         */
1383        public ResourceReferenceDt addSupport() {
1384                ResourceReferenceDt newType = new ResourceReferenceDt();
1385                getSupport().add(newType);
1386                return newType; 
1387        }
1388  
1389        /**
1390         * Gets the value(s) for <b>relatedPlan</b> ().
1391         * creating it if it does
1392         * not exist. Will not return <code>null</code>.
1393         *
1394     * <p>
1395     * <b>Definition:</b>
1396     * Identifies CarePlans with some sort of formal relationship to the current plan.
1397     * </p> 
1398         */
1399        public java.util.List<RelatedPlan> getRelatedPlan() {  
1400                if (myRelatedPlan == null) {
1401                        myRelatedPlan = new java.util.ArrayList<RelatedPlan>();
1402                }
1403                return myRelatedPlan;
1404        }
1405
1406        /**
1407         * Sets the value(s) for <b>relatedPlan</b> ()
1408         *
1409     * <p>
1410     * <b>Definition:</b>
1411     * Identifies CarePlans with some sort of formal relationship to the current plan.
1412     * </p> 
1413         */
1414        public CarePlan setRelatedPlan(java.util.List<RelatedPlan> theValue) {
1415                myRelatedPlan = theValue;
1416                return this;
1417        }
1418        
1419        
1420
1421        /**
1422         * Adds and returns a new value for <b>relatedPlan</b> ()
1423         *
1424     * <p>
1425     * <b>Definition:</b>
1426     * Identifies CarePlans with some sort of formal relationship to the current plan.
1427     * </p> 
1428         */
1429        public RelatedPlan addRelatedPlan() {
1430                RelatedPlan newType = new RelatedPlan();
1431                getRelatedPlan().add(newType);
1432                return newType; 
1433        }
1434
1435        /**
1436         * Adds a given new value for <b>relatedPlan</b> ()
1437         *
1438         * <p>
1439         * <b>Definition:</b>
1440         * Identifies CarePlans with some sort of formal relationship to the current plan.
1441         * </p>
1442         * @param theValue The relatedPlan to add (must not be <code>null</code>)
1443         */
1444        public CarePlan addRelatedPlan(RelatedPlan theValue) {
1445                if (theValue == null) {
1446                        throw new NullPointerException("theValue must not be null");
1447                }
1448                getRelatedPlan().add(theValue);
1449                return this;
1450        }
1451
1452        /**
1453         * Gets the first repetition for <b>relatedPlan</b> (),
1454         * creating it if it does not already exist.
1455         *
1456     * <p>
1457     * <b>Definition:</b>
1458     * Identifies CarePlans with some sort of formal relationship to the current plan.
1459     * </p> 
1460         */
1461        public RelatedPlan getRelatedPlanFirstRep() {
1462                if (getRelatedPlan().isEmpty()) {
1463                        return addRelatedPlan();
1464                }
1465                return getRelatedPlan().get(0); 
1466        }
1467  
1468        /**
1469         * Gets the value(s) for <b>participant</b> ().
1470         * creating it if it does
1471         * not exist. Will not return <code>null</code>.
1472         *
1473     * <p>
1474     * <b>Definition:</b>
1475     * Identifies all people and organizations who are expected to be involved in the care envisioned by this plan.
1476     * </p> 
1477         */
1478        public java.util.List<Participant> getParticipant() {  
1479                if (myParticipant == null) {
1480                        myParticipant = new java.util.ArrayList<Participant>();
1481                }
1482                return myParticipant;
1483        }
1484
1485        /**
1486         * Sets the value(s) for <b>participant</b> ()
1487         *
1488     * <p>
1489     * <b>Definition:</b>
1490     * Identifies all people and organizations who are expected to be involved in the care envisioned by this plan.
1491     * </p> 
1492         */
1493        public CarePlan setParticipant(java.util.List<Participant> theValue) {
1494                myParticipant = theValue;
1495                return this;
1496        }
1497        
1498        
1499
1500        /**
1501         * Adds and returns a new value for <b>participant</b> ()
1502         *
1503     * <p>
1504     * <b>Definition:</b>
1505     * Identifies all people and organizations who are expected to be involved in the care envisioned by this plan.
1506     * </p> 
1507         */
1508        public Participant addParticipant() {
1509                Participant newType = new Participant();
1510                getParticipant().add(newType);
1511                return newType; 
1512        }
1513
1514        /**
1515         * Adds a given new value for <b>participant</b> ()
1516         *
1517         * <p>
1518         * <b>Definition:</b>
1519         * Identifies all people and organizations who are expected to be involved in the care envisioned by this plan.
1520         * </p>
1521         * @param theValue The participant to add (must not be <code>null</code>)
1522         */
1523        public CarePlan addParticipant(Participant theValue) {
1524                if (theValue == null) {
1525                        throw new NullPointerException("theValue must not be null");
1526                }
1527                getParticipant().add(theValue);
1528                return this;
1529        }
1530
1531        /**
1532         * Gets the first repetition for <b>participant</b> (),
1533         * creating it if it does not already exist.
1534         *
1535     * <p>
1536     * <b>Definition:</b>
1537     * Identifies all people and organizations who are expected to be involved in the care envisioned by this plan.
1538     * </p> 
1539         */
1540        public Participant getParticipantFirstRep() {
1541                if (getParticipant().isEmpty()) {
1542                        return addParticipant();
1543                }
1544                return getParticipant().get(0); 
1545        }
1546  
1547        /**
1548         * Gets the value(s) for <b>goal</b> ().
1549         * creating it if it does
1550         * not exist. Will not return <code>null</code>.
1551         *
1552     * <p>
1553     * <b>Definition:</b>
1554     * Describes the intended objective(s) of carrying out the care plan.
1555     * </p> 
1556         */
1557        public java.util.List<ResourceReferenceDt> getGoal() {  
1558                if (myGoal == null) {
1559                        myGoal = new java.util.ArrayList<ResourceReferenceDt>();
1560                }
1561                return myGoal;
1562        }
1563
1564        /**
1565         * Sets the value(s) for <b>goal</b> ()
1566         *
1567     * <p>
1568     * <b>Definition:</b>
1569     * Describes the intended objective(s) of carrying out the care plan.
1570     * </p> 
1571         */
1572        public CarePlan setGoal(java.util.List<ResourceReferenceDt> theValue) {
1573                myGoal = theValue;
1574                return this;
1575        }
1576        
1577        
1578
1579        /**
1580         * Adds and returns a new value for <b>goal</b> ()
1581         *
1582     * <p>
1583     * <b>Definition:</b>
1584     * Describes the intended objective(s) of carrying out the care plan.
1585     * </p> 
1586         */
1587        public ResourceReferenceDt addGoal() {
1588                ResourceReferenceDt newType = new ResourceReferenceDt();
1589                getGoal().add(newType);
1590                return newType; 
1591        }
1592  
1593        /**
1594         * Gets the value(s) for <b>activity</b> ().
1595         * creating it if it does
1596         * not exist. Will not return <code>null</code>.
1597         *
1598     * <p>
1599     * <b>Definition:</b>
1600     * Identifies a planned action to occur as part of the plan.  For example, a medication to be used, lab tests to perform, self-monitoring, education, etc.
1601     * </p> 
1602         */
1603        public java.util.List<Activity> getActivity() {  
1604                if (myActivity == null) {
1605                        myActivity = new java.util.ArrayList<Activity>();
1606                }
1607                return myActivity;
1608        }
1609
1610        /**
1611         * Sets the value(s) for <b>activity</b> ()
1612         *
1613     * <p>
1614     * <b>Definition:</b>
1615     * Identifies a planned action to occur as part of the plan.  For example, a medication to be used, lab tests to perform, self-monitoring, education, etc.
1616     * </p> 
1617         */
1618        public CarePlan setActivity(java.util.List<Activity> theValue) {
1619                myActivity = theValue;
1620                return this;
1621        }
1622        
1623        
1624
1625        /**
1626         * Adds and returns a new value for <b>activity</b> ()
1627         *
1628     * <p>
1629     * <b>Definition:</b>
1630     * Identifies a planned action to occur as part of the plan.  For example, a medication to be used, lab tests to perform, self-monitoring, education, etc.
1631     * </p> 
1632         */
1633        public Activity addActivity() {
1634                Activity newType = new Activity();
1635                getActivity().add(newType);
1636                return newType; 
1637        }
1638
1639        /**
1640         * Adds a given new value for <b>activity</b> ()
1641         *
1642         * <p>
1643         * <b>Definition:</b>
1644         * Identifies a planned action to occur as part of the plan.  For example, a medication to be used, lab tests to perform, self-monitoring, education, etc.
1645         * </p>
1646         * @param theValue The activity to add (must not be <code>null</code>)
1647         */
1648        public CarePlan addActivity(Activity theValue) {
1649                if (theValue == null) {
1650                        throw new NullPointerException("theValue must not be null");
1651                }
1652                getActivity().add(theValue);
1653                return this;
1654        }
1655
1656        /**
1657         * Gets the first repetition for <b>activity</b> (),
1658         * creating it if it does not already exist.
1659         *
1660     * <p>
1661     * <b>Definition:</b>
1662     * Identifies a planned action to occur as part of the plan.  For example, a medication to be used, lab tests to perform, self-monitoring, education, etc.
1663     * </p> 
1664         */
1665        public Activity getActivityFirstRep() {
1666                if (getActivity().isEmpty()) {
1667                        return addActivity();
1668                }
1669                return getActivity().get(0); 
1670        }
1671  
1672        /**
1673         * Gets the value(s) for <b>note</b> ().
1674         * creating it if it does
1675         * not exist. Will not return <code>null</code>.
1676         *
1677     * <p>
1678     * <b>Definition:</b>
1679     * General notes about the care plan not covered elsewhere
1680     * </p> 
1681         */
1682        public AnnotationDt getNote() {  
1683                if (myNote == null) {
1684                        myNote = new AnnotationDt();
1685                }
1686                return myNote;
1687        }
1688
1689        /**
1690         * Sets the value(s) for <b>note</b> ()
1691         *
1692     * <p>
1693     * <b>Definition:</b>
1694     * General notes about the care plan not covered elsewhere
1695     * </p> 
1696         */
1697        public CarePlan setNote(AnnotationDt theValue) {
1698                myNote = theValue;
1699                return this;
1700        }
1701        
1702        
1703
1704  
1705        /**
1706         * Block class for child element: <b>CarePlan.relatedPlan</b> ()
1707         *
1708     * <p>
1709     * <b>Definition:</b>
1710     * Identifies CarePlans with some sort of formal relationship to the current plan.
1711     * </p> 
1712         */
1713        @Block()        
1714        public static class RelatedPlan 
1715            extends  BaseIdentifiableElement        implements IResourceBlock {
1716        
1717        @Child(name="code", type=CodeDt.class, order=0, min=0, max=1, summary=false, modifier=false)    
1718        @Description(
1719                shortDefinition="",
1720                formalDefinition="Identifies the type of relationship this plan has to the target plan."
1721        )
1722        private BoundCodeDt<CarePlanRelationshipEnum> myCode;
1723        
1724        @Child(name="plan", order=1, min=1, max=1, summary=false, modifier=false, type={
1725                ca.uhn.fhir.model.dstu2.resource.CarePlan.class })
1726        @Description(
1727                shortDefinition="",
1728                formalDefinition="A reference to the plan to which a relationship is asserted."
1729        )
1730        private ResourceReferenceDt myPlan;
1731        
1732
1733        @Override
1734        public boolean isEmpty() {
1735                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCode,  myPlan);
1736        }
1737        
1738        @Override
1739        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1740                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCode, myPlan);
1741        }
1742
1743        /**
1744         * Gets the value(s) for <b>code</b> ().
1745         * creating it if it does
1746         * not exist. Will not return <code>null</code>.
1747         *
1748     * <p>
1749     * <b>Definition:</b>
1750     * Identifies the type of relationship this plan has to the target plan.
1751     * </p> 
1752         */
1753        public BoundCodeDt<CarePlanRelationshipEnum> getCodeElement() {  
1754                if (myCode == null) {
1755                        myCode = new BoundCodeDt<CarePlanRelationshipEnum>(CarePlanRelationshipEnum.VALUESET_BINDER);
1756                }
1757                return myCode;
1758        }
1759
1760        
1761        /**
1762         * Gets the value(s) for <b>code</b> ().
1763         * creating it if it does
1764         * not exist. Will not return <code>null</code>.
1765         *
1766     * <p>
1767     * <b>Definition:</b>
1768     * Identifies the type of relationship this plan has to the target plan.
1769     * </p> 
1770         */
1771        public String getCode() {  
1772                return getCodeElement().getValue();
1773        }
1774
1775        /**
1776         * Sets the value(s) for <b>code</b> ()
1777         *
1778     * <p>
1779     * <b>Definition:</b>
1780     * Identifies the type of relationship this plan has to the target plan.
1781     * </p> 
1782         */
1783        public RelatedPlan setCode(BoundCodeDt<CarePlanRelationshipEnum> theValue) {
1784                myCode = theValue;
1785                return this;
1786        }
1787        
1788        
1789
1790        /**
1791         * Sets the value(s) for <b>code</b> ()
1792         *
1793     * <p>
1794     * <b>Definition:</b>
1795     * Identifies the type of relationship this plan has to the target plan.
1796     * </p> 
1797         */
1798        public RelatedPlan setCode(CarePlanRelationshipEnum theValue) {
1799                setCode(new BoundCodeDt<CarePlanRelationshipEnum>(CarePlanRelationshipEnum.VALUESET_BINDER, theValue));
1800                
1801/*
1802                getCodeElement().setValueAsEnum(theValue);
1803*/
1804                return this;
1805        }
1806
1807  
1808        /**
1809         * Gets the value(s) for <b>plan</b> ().
1810         * creating it if it does
1811         * not exist. Will not return <code>null</code>.
1812         *
1813     * <p>
1814     * <b>Definition:</b>
1815     * A reference to the plan to which a relationship is asserted.
1816     * </p> 
1817         */
1818        public ResourceReferenceDt getPlan() {  
1819                if (myPlan == null) {
1820                        myPlan = new ResourceReferenceDt();
1821                }
1822                return myPlan;
1823        }
1824
1825        /**
1826         * Sets the value(s) for <b>plan</b> ()
1827         *
1828     * <p>
1829     * <b>Definition:</b>
1830     * A reference to the plan to which a relationship is asserted.
1831     * </p> 
1832         */
1833        public RelatedPlan setPlan(ResourceReferenceDt theValue) {
1834                myPlan = theValue;
1835                return this;
1836        }
1837        
1838        
1839
1840  
1841
1842
1843        }
1844
1845
1846        /**
1847         * Block class for child element: <b>CarePlan.participant</b> ()
1848         *
1849     * <p>
1850     * <b>Definition:</b>
1851     * Identifies all people and organizations who are expected to be involved in the care envisioned by this plan.
1852     * </p> 
1853         */
1854        @Block()        
1855        public static class Participant 
1856            extends  BaseIdentifiableElement        implements IResourceBlock {
1857        
1858        @Child(name="role", type=CodeableConceptDt.class, order=0, min=0, max=1, summary=false, modifier=false) 
1859        @Description(
1860                shortDefinition="",
1861                formalDefinition="Indicates specific responsibility of an individual within the care plan; e.g. \"Primary physician\", \"Team coordinator\", \"Caregiver\", etc."
1862        )
1863        private CodeableConceptDt myRole;
1864        
1865        @Child(name="member", order=1, min=0, max=1, summary=false, modifier=false, type={
1866                ca.uhn.fhir.model.dstu2.resource.Practitioner.class,            ca.uhn.fhir.model.dstu2.resource.RelatedPerson.class,           ca.uhn.fhir.model.dstu2.resource.Patient.class,                 ca.uhn.fhir.model.dstu2.resource.Organization.class     })
1867        @Description(
1868                shortDefinition="",
1869                formalDefinition="The specific person or organization who is participating/expected to participate in the care plan."
1870        )
1871        private ResourceReferenceDt myMember;
1872        
1873
1874        @Override
1875        public boolean isEmpty() {
1876                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myRole,  myMember);
1877        }
1878        
1879        @Override
1880        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1881                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myRole, myMember);
1882        }
1883
1884        /**
1885         * Gets the value(s) for <b>role</b> ().
1886         * creating it if it does
1887         * not exist. Will not return <code>null</code>.
1888         *
1889     * <p>
1890     * <b>Definition:</b>
1891     * Indicates specific responsibility of an individual within the care plan; e.g. \&quot;Primary physician\&quot;, \&quot;Team coordinator\&quot;, \&quot;Caregiver\&quot;, etc.
1892     * </p> 
1893         */
1894        public CodeableConceptDt getRole() {  
1895                if (myRole == null) {
1896                        myRole = new CodeableConceptDt();
1897                }
1898                return myRole;
1899        }
1900
1901        /**
1902         * Sets the value(s) for <b>role</b> ()
1903         *
1904     * <p>
1905     * <b>Definition:</b>
1906     * Indicates specific responsibility of an individual within the care plan; e.g. \&quot;Primary physician\&quot;, \&quot;Team coordinator\&quot;, \&quot;Caregiver\&quot;, etc.
1907     * </p> 
1908         */
1909        public Participant setRole(CodeableConceptDt theValue) {
1910                myRole = theValue;
1911                return this;
1912        }
1913        
1914        
1915
1916  
1917        /**
1918         * Gets the value(s) for <b>member</b> ().
1919         * creating it if it does
1920         * not exist. Will not return <code>null</code>.
1921         *
1922     * <p>
1923     * <b>Definition:</b>
1924     * The specific person or organization who is participating/expected to participate in the care plan.
1925     * </p> 
1926         */
1927        public ResourceReferenceDt getMember() {  
1928                if (myMember == null) {
1929                        myMember = new ResourceReferenceDt();
1930                }
1931                return myMember;
1932        }
1933
1934        /**
1935         * Sets the value(s) for <b>member</b> ()
1936         *
1937     * <p>
1938     * <b>Definition:</b>
1939     * The specific person or organization who is participating/expected to participate in the care plan.
1940     * </p> 
1941         */
1942        public Participant setMember(ResourceReferenceDt theValue) {
1943                myMember = theValue;
1944                return this;
1945        }
1946        
1947        
1948
1949  
1950
1951
1952        }
1953
1954
1955        /**
1956         * Block class for child element: <b>CarePlan.activity</b> ()
1957         *
1958     * <p>
1959     * <b>Definition:</b>
1960     * Identifies a planned action to occur as part of the plan.  For example, a medication to be used, lab tests to perform, self-monitoring, education, etc.
1961     * </p> 
1962         */
1963        @Block()        
1964        public static class Activity 
1965            extends  BaseIdentifiableElement        implements IResourceBlock {
1966        
1967        @Child(name="actionResulting", order=0, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
1968                IResource.class })
1969        @Description(
1970                shortDefinition="",
1971                formalDefinition="Resources that describe follow-on actions resulting from the plan, such as drug prescriptions, encounter records, appointments, etc."
1972        )
1973        private java.util.List<ResourceReferenceDt> myActionResulting;
1974        
1975        @Child(name="progress", type=AnnotationDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
1976        @Description(
1977                shortDefinition="",
1978                formalDefinition="Notes about the adherence/status/progress of the activity"
1979        )
1980        private java.util.List<AnnotationDt> myProgress;
1981        
1982        @Child(name="reference", order=2, min=0, max=1, summary=false, modifier=false, type={
1983                ca.uhn.fhir.model.dstu2.resource.Appointment.class,             ca.uhn.fhir.model.dstu2.resource.CommunicationRequest.class,            ca.uhn.fhir.model.dstu2.resource.DeviceUseRequest.class,                ca.uhn.fhir.model.dstu2.resource.DiagnosticOrder.class,                 ca.uhn.fhir.model.dstu2.resource.MedicationOrder.class,                 ca.uhn.fhir.model.dstu2.resource.NutritionOrder.class,          ca.uhn.fhir.model.dstu2.resource.Order.class,           ca.uhn.fhir.model.dstu2.resource.ProcedureRequest.class,                ca.uhn.fhir.model.dstu2.resource.ProcessRequest.class,          ca.uhn.fhir.model.dstu2.resource.ReferralRequest.class,                 ca.uhn.fhir.model.dstu2.resource.SupplyRequest.class,           ca.uhn.fhir.model.dstu2.resource.VisionPrescription.class       })
1984        @Description(
1985                shortDefinition="",
1986                formalDefinition="The details of the proposed activity represented in a specific resource"
1987        )
1988        private ResourceReferenceDt myReference;
1989        
1990        @Child(name="detail", order=3, min=0, max=1, summary=false, modifier=false)     
1991        @Description(
1992                shortDefinition="",
1993                formalDefinition="A simple summary of a planned activity suitable for a general care plan system (e.g. form driven) that doesn't know about specific resources such as procedure etc."
1994        )
1995        private ActivityDetail myDetail;
1996        
1997
1998        @Override
1999        public boolean isEmpty() {
2000                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myActionResulting,  myProgress,  myReference,  myDetail);
2001        }
2002        
2003        @Override
2004        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2005                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myActionResulting, myProgress, myReference, myDetail);
2006        }
2007
2008        /**
2009         * Gets the value(s) for <b>actionResulting</b> ().
2010         * creating it if it does
2011         * not exist. Will not return <code>null</code>.
2012         *
2013     * <p>
2014     * <b>Definition:</b>
2015     * Resources that describe follow-on actions resulting from the plan, such as drug prescriptions, encounter records, appointments, etc.
2016     * </p> 
2017         */
2018        public java.util.List<ResourceReferenceDt> getActionResulting() {  
2019                if (myActionResulting == null) {
2020                        myActionResulting = new java.util.ArrayList<ResourceReferenceDt>();
2021                }
2022                return myActionResulting;
2023        }
2024
2025        /**
2026         * Sets the value(s) for <b>actionResulting</b> ()
2027         *
2028     * <p>
2029     * <b>Definition:</b>
2030     * Resources that describe follow-on actions resulting from the plan, such as drug prescriptions, encounter records, appointments, etc.
2031     * </p> 
2032         */
2033        public Activity setActionResulting(java.util.List<ResourceReferenceDt> theValue) {
2034                myActionResulting = theValue;
2035                return this;
2036        }
2037        
2038        
2039
2040        /**
2041         * Adds and returns a new value for <b>actionResulting</b> ()
2042         *
2043     * <p>
2044     * <b>Definition:</b>
2045     * Resources that describe follow-on actions resulting from the plan, such as drug prescriptions, encounter records, appointments, etc.
2046     * </p> 
2047         */
2048        public ResourceReferenceDt addActionResulting() {
2049                ResourceReferenceDt newType = new ResourceReferenceDt();
2050                getActionResulting().add(newType);
2051                return newType; 
2052        }
2053  
2054        /**
2055         * Gets the value(s) for <b>progress</b> ().
2056         * creating it if it does
2057         * not exist. Will not return <code>null</code>.
2058         *
2059     * <p>
2060     * <b>Definition:</b>
2061     * Notes about the adherence/status/progress of the activity
2062     * </p> 
2063         */
2064        public java.util.List<AnnotationDt> getProgress() {  
2065                if (myProgress == null) {
2066                        myProgress = new java.util.ArrayList<AnnotationDt>();
2067                }
2068                return myProgress;
2069        }
2070
2071        /**
2072         * Sets the value(s) for <b>progress</b> ()
2073         *
2074     * <p>
2075     * <b>Definition:</b>
2076     * Notes about the adherence/status/progress of the activity
2077     * </p> 
2078         */
2079        public Activity setProgress(java.util.List<AnnotationDt> theValue) {
2080                myProgress = theValue;
2081                return this;
2082        }
2083        
2084        
2085
2086        /**
2087         * Adds and returns a new value for <b>progress</b> ()
2088         *
2089     * <p>
2090     * <b>Definition:</b>
2091     * Notes about the adherence/status/progress of the activity
2092     * </p> 
2093         */
2094        public AnnotationDt addProgress() {
2095                AnnotationDt newType = new AnnotationDt();
2096                getProgress().add(newType);
2097                return newType; 
2098        }
2099
2100        /**
2101         * Adds a given new value for <b>progress</b> ()
2102         *
2103         * <p>
2104         * <b>Definition:</b>
2105         * Notes about the adherence/status/progress of the activity
2106         * </p>
2107         * @param theValue The progress to add (must not be <code>null</code>)
2108         */
2109        public Activity addProgress(AnnotationDt theValue) {
2110                if (theValue == null) {
2111                        throw new NullPointerException("theValue must not be null");
2112                }
2113                getProgress().add(theValue);
2114                return this;
2115        }
2116
2117        /**
2118         * Gets the first repetition for <b>progress</b> (),
2119         * creating it if it does not already exist.
2120         *
2121     * <p>
2122     * <b>Definition:</b>
2123     * Notes about the adherence/status/progress of the activity
2124     * </p> 
2125         */
2126        public AnnotationDt getProgressFirstRep() {
2127                if (getProgress().isEmpty()) {
2128                        return addProgress();
2129                }
2130                return getProgress().get(0); 
2131        }
2132  
2133        /**
2134         * Gets the value(s) for <b>reference</b> ().
2135         * creating it if it does
2136         * not exist. Will not return <code>null</code>.
2137         *
2138     * <p>
2139     * <b>Definition:</b>
2140     * The details of the proposed activity represented in a specific resource
2141     * </p> 
2142         */
2143        public ResourceReferenceDt getReference() {  
2144                if (myReference == null) {
2145                        myReference = new ResourceReferenceDt();
2146                }
2147                return myReference;
2148        }
2149
2150        /**
2151         * Sets the value(s) for <b>reference</b> ()
2152         *
2153     * <p>
2154     * <b>Definition:</b>
2155     * The details of the proposed activity represented in a specific resource
2156     * </p> 
2157         */
2158        public Activity setReference(ResourceReferenceDt theValue) {
2159                myReference = theValue;
2160                return this;
2161        }
2162        
2163        
2164
2165  
2166        /**
2167         * Gets the value(s) for <b>detail</b> ().
2168         * creating it if it does
2169         * not exist. Will not return <code>null</code>.
2170         *
2171     * <p>
2172     * <b>Definition:</b>
2173     * A simple summary of a planned activity suitable for a general care plan system (e.g. form driven) that doesn't know about specific resources such as procedure etc.
2174     * </p> 
2175         */
2176        public ActivityDetail getDetail() {  
2177                if (myDetail == null) {
2178                        myDetail = new ActivityDetail();
2179                }
2180                return myDetail;
2181        }
2182
2183        /**
2184         * Sets the value(s) for <b>detail</b> ()
2185         *
2186     * <p>
2187     * <b>Definition:</b>
2188     * A simple summary of a planned activity suitable for a general care plan system (e.g. form driven) that doesn't know about specific resources such as procedure etc.
2189     * </p> 
2190         */
2191        public Activity setDetail(ActivityDetail theValue) {
2192                myDetail = theValue;
2193                return this;
2194        }
2195        
2196        
2197
2198  
2199
2200
2201        }
2202
2203        /**
2204         * Block class for child element: <b>CarePlan.activity.detail</b> ()
2205         *
2206     * <p>
2207     * <b>Definition:</b>
2208     * A simple summary of a planned activity suitable for a general care plan system (e.g. form driven) that doesn't know about specific resources such as procedure etc.
2209     * </p> 
2210         */
2211        @Block()        
2212        public static class ActivityDetail 
2213            extends  BaseIdentifiableElement        implements IResourceBlock {
2214        
2215        @Child(name="category", type=CodeableConceptDt.class, order=0, min=0, max=1, summary=false, modifier=false)     
2216        @Description(
2217                shortDefinition="",
2218                formalDefinition="High-level categorization of the type of activity in a care plan."
2219        )
2220        private BoundCodeableConceptDt<CarePlanActivityCategoryEnum> myCategory;
2221        
2222        @Child(name="code", type=CodeableConceptDt.class, order=1, min=0, max=1, summary=false, modifier=false) 
2223        @Description(
2224                shortDefinition="",
2225                formalDefinition="Detailed description of the type of planned activity; e.g. What lab test, what procedure, what kind of encounter."
2226        )
2227        private CodeableConceptDt myCode;
2228        
2229        @Child(name="reasonCode", type=CodeableConceptDt.class, order=2, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
2230        @Description(
2231                shortDefinition="",
2232                formalDefinition="Provides the rationale that drove the inclusion of this particular activity as part of the plan."
2233        )
2234        private java.util.List<CodeableConceptDt> myReasonCode;
2235        
2236        @Child(name="reasonReference", order=3, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
2237                ca.uhn.fhir.model.dstu2.resource.Condition.class        })
2238        @Description(
2239                shortDefinition="",
2240                formalDefinition="Provides the health condition(s) that drove the inclusion of this particular activity as part of the plan."
2241        )
2242        private java.util.List<ResourceReferenceDt> myReasonReference;
2243        
2244        @Child(name="goal", order=4, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
2245                ca.uhn.fhir.model.dstu2.resource.Goal.class     })
2246        @Description(
2247                shortDefinition="",
2248                formalDefinition="Internal reference that identifies the goals that this activity is intended to contribute towards meeting"
2249        )
2250        private java.util.List<ResourceReferenceDt> myGoal;
2251        
2252        @Child(name="status", type=CodeDt.class, order=5, min=0, max=1, summary=false, modifier=true)   
2253        @Description(
2254                shortDefinition="",
2255                formalDefinition="Identifies what progress is being made for the specific activity."
2256        )
2257        private BoundCodeDt<CarePlanActivityStatusEnum> myStatus;
2258        
2259        @Child(name="statusReason", type=CodeableConceptDt.class, order=6, min=0, max=1, summary=false, modifier=false) 
2260        @Description(
2261                shortDefinition="",
2262                formalDefinition="Provides reason why the activity isn't yet started, is on hold, was cancelled, etc."
2263        )
2264        private CodeableConceptDt myStatusReason;
2265        
2266        @Child(name="prohibited", type=BooleanDt.class, order=7, min=1, max=1, summary=false, modifier=true)    
2267        @Description(
2268                shortDefinition="",
2269                formalDefinition="If true, indicates that the described activity is one that must NOT be engaged in when following the plan."
2270        )
2271        private BooleanDt myProhibited;
2272        
2273        @Child(name="scheduled", order=8, min=0, max=1, summary=false, modifier=false, type={
2274                TimingDt.class,                 PeriodDt.class,                 StringDt.class  })
2275        @Description(
2276                shortDefinition="",
2277                formalDefinition="The period, timing or frequency upon which the described activity is to occur."
2278        )
2279        private IDatatype myScheduled;
2280        
2281        @Child(name="location", order=9, min=0, max=1, summary=false, modifier=false, type={
2282                ca.uhn.fhir.model.dstu2.resource.Location.class })
2283        @Description(
2284                shortDefinition="",
2285                formalDefinition="Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc."
2286        )
2287        private ResourceReferenceDt myLocation;
2288        
2289        @Child(name="performer", order=10, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
2290                ca.uhn.fhir.model.dstu2.resource.Practitioner.class,            ca.uhn.fhir.model.dstu2.resource.Organization.class,            ca.uhn.fhir.model.dstu2.resource.RelatedPerson.class,           ca.uhn.fhir.model.dstu2.resource.Patient.class  })
2291        @Description(
2292                shortDefinition="",
2293                formalDefinition="Identifies who's expected to be involved in the activity."
2294        )
2295        private java.util.List<ResourceReferenceDt> myPerformer;
2296        
2297        @Child(name="product", order=11, min=0, max=1, summary=false, modifier=false, type={
2298                CodeableConceptDt.class,                Medication.class,               Substance.class })
2299        @Description(
2300                shortDefinition="",
2301                formalDefinition="Identifies the food, drug or other product to be consumed or supplied in the activity."
2302        )
2303        private IDatatype myProduct;
2304        
2305        @Child(name="dailyAmount", type=SimpleQuantityDt.class, order=12, min=0, max=1, summary=false, modifier=false)  
2306        @Description(
2307                shortDefinition="",
2308                formalDefinition="Identifies the quantity expected to be consumed in a given day."
2309        )
2310        private SimpleQuantityDt myDailyAmount;
2311        
2312        @Child(name="quantity", type=SimpleQuantityDt.class, order=13, min=0, max=1, summary=false, modifier=false)     
2313        @Description(
2314                shortDefinition="",
2315                formalDefinition="Identifies the quantity expected to be supplied, administered or consumed by the subject"
2316        )
2317        private SimpleQuantityDt myQuantity;
2318        
2319        @Child(name="description", type=StringDt.class, order=14, min=0, max=1, summary=false, modifier=false)  
2320        @Description(
2321                shortDefinition="",
2322                formalDefinition="This provides a textual description of constraints on the intended activity occurrence, including relation to other activities.  It may also include objectives, pre-conditions and end-conditions.  Finally, it may convey specifics about the activity such as body site, method, route, etc."
2323        )
2324        private StringDt myDescription;
2325        
2326
2327        @Override
2328        public boolean isEmpty() {
2329                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCategory,  myCode,  myReasonCode,  myReasonReference,  myGoal,  myStatus,  myStatusReason,  myProhibited,  myScheduled,  myLocation,  myPerformer,  myProduct,  myDailyAmount,  myQuantity,  myDescription);
2330        }
2331        
2332        @Override
2333        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2334                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCategory, myCode, myReasonCode, myReasonReference, myGoal, myStatus, myStatusReason, myProhibited, myScheduled, myLocation, myPerformer, myProduct, myDailyAmount, myQuantity, myDescription);
2335        }
2336
2337        /**
2338         * Gets the value(s) for <b>category</b> ().
2339         * creating it if it does
2340         * not exist. Will not return <code>null</code>.
2341         *
2342     * <p>
2343     * <b>Definition:</b>
2344     * High-level categorization of the type of activity in a care plan.
2345     * </p> 
2346         */
2347        public BoundCodeableConceptDt<CarePlanActivityCategoryEnum> getCategory() {  
2348                if (myCategory == null) {
2349                        myCategory = new BoundCodeableConceptDt<CarePlanActivityCategoryEnum>(CarePlanActivityCategoryEnum.VALUESET_BINDER);
2350                }
2351                return myCategory;
2352        }
2353
2354        /**
2355         * Sets the value(s) for <b>category</b> ()
2356         *
2357     * <p>
2358     * <b>Definition:</b>
2359     * High-level categorization of the type of activity in a care plan.
2360     * </p> 
2361         */
2362        public ActivityDetail setCategory(BoundCodeableConceptDt<CarePlanActivityCategoryEnum> theValue) {
2363                myCategory = theValue;
2364                return this;
2365        }
2366        
2367        
2368
2369        /**
2370         * Sets the value(s) for <b>category</b> ()
2371         *
2372     * <p>
2373     * <b>Definition:</b>
2374     * High-level categorization of the type of activity in a care plan.
2375     * </p> 
2376         */
2377        public ActivityDetail setCategory(CarePlanActivityCategoryEnum theValue) {
2378                setCategory(new BoundCodeableConceptDt<CarePlanActivityCategoryEnum>(CarePlanActivityCategoryEnum.VALUESET_BINDER, theValue));
2379                
2380/*
2381                getCategory().setValueAsEnum(theValue);
2382*/
2383                return this;
2384        }
2385
2386  
2387        /**
2388         * Gets the value(s) for <b>code</b> ().
2389         * creating it if it does
2390         * not exist. Will not return <code>null</code>.
2391         *
2392     * <p>
2393     * <b>Definition:</b>
2394     * Detailed description of the type of planned activity; e.g. What lab test, what procedure, what kind of encounter.
2395     * </p> 
2396         */
2397        public CodeableConceptDt getCode() {  
2398                if (myCode == null) {
2399                        myCode = new CodeableConceptDt();
2400                }
2401                return myCode;
2402        }
2403
2404        /**
2405         * Sets the value(s) for <b>code</b> ()
2406         *
2407     * <p>
2408     * <b>Definition:</b>
2409     * Detailed description of the type of planned activity; e.g. What lab test, what procedure, what kind of encounter.
2410     * </p> 
2411         */
2412        public ActivityDetail setCode(CodeableConceptDt theValue) {
2413                myCode = theValue;
2414                return this;
2415        }
2416        
2417        
2418
2419  
2420        /**
2421         * Gets the value(s) for <b>reasonCode</b> ().
2422         * creating it if it does
2423         * not exist. Will not return <code>null</code>.
2424         *
2425     * <p>
2426     * <b>Definition:</b>
2427     * Provides the rationale that drove the inclusion of this particular activity as part of the plan.
2428     * </p> 
2429         */
2430        public java.util.List<CodeableConceptDt> getReasonCode() {  
2431                if (myReasonCode == null) {
2432                        myReasonCode = new java.util.ArrayList<CodeableConceptDt>();
2433                }
2434                return myReasonCode;
2435        }
2436
2437        /**
2438         * Sets the value(s) for <b>reasonCode</b> ()
2439         *
2440     * <p>
2441     * <b>Definition:</b>
2442     * Provides the rationale that drove the inclusion of this particular activity as part of the plan.
2443     * </p> 
2444         */
2445        public ActivityDetail setReasonCode(java.util.List<CodeableConceptDt> theValue) {
2446                myReasonCode = theValue;
2447                return this;
2448        }
2449        
2450        
2451
2452        /**
2453         * Adds and returns a new value for <b>reasonCode</b> ()
2454         *
2455     * <p>
2456     * <b>Definition:</b>
2457     * Provides the rationale that drove the inclusion of this particular activity as part of the plan.
2458     * </p> 
2459         */
2460        public CodeableConceptDt addReasonCode() {
2461                CodeableConceptDt newType = new CodeableConceptDt();
2462                getReasonCode().add(newType);
2463                return newType; 
2464        }
2465
2466        /**
2467         * Adds a given new value for <b>reasonCode</b> ()
2468         *
2469         * <p>
2470         * <b>Definition:</b>
2471         * Provides the rationale that drove the inclusion of this particular activity as part of the plan.
2472         * </p>
2473         * @param theValue The reasonCode to add (must not be <code>null</code>)
2474         */
2475        public ActivityDetail addReasonCode(CodeableConceptDt theValue) {
2476                if (theValue == null) {
2477                        throw new NullPointerException("theValue must not be null");
2478                }
2479                getReasonCode().add(theValue);
2480                return this;
2481        }
2482
2483        /**
2484         * Gets the first repetition for <b>reasonCode</b> (),
2485         * creating it if it does not already exist.
2486         *
2487     * <p>
2488     * <b>Definition:</b>
2489     * Provides the rationale that drove the inclusion of this particular activity as part of the plan.
2490     * </p> 
2491         */
2492        public CodeableConceptDt getReasonCodeFirstRep() {
2493                if (getReasonCode().isEmpty()) {
2494                        return addReasonCode();
2495                }
2496                return getReasonCode().get(0); 
2497        }
2498  
2499        /**
2500         * Gets the value(s) for <b>reasonReference</b> ().
2501         * creating it if it does
2502         * not exist. Will not return <code>null</code>.
2503         *
2504     * <p>
2505     * <b>Definition:</b>
2506     * Provides the health condition(s) that drove the inclusion of this particular activity as part of the plan.
2507     * </p> 
2508         */
2509        public java.util.List<ResourceReferenceDt> getReasonReference() {  
2510                if (myReasonReference == null) {
2511                        myReasonReference = new java.util.ArrayList<ResourceReferenceDt>();
2512                }
2513                return myReasonReference;
2514        }
2515
2516        /**
2517         * Sets the value(s) for <b>reasonReference</b> ()
2518         *
2519     * <p>
2520     * <b>Definition:</b>
2521     * Provides the health condition(s) that drove the inclusion of this particular activity as part of the plan.
2522     * </p> 
2523         */
2524        public ActivityDetail setReasonReference(java.util.List<ResourceReferenceDt> theValue) {
2525                myReasonReference = theValue;
2526                return this;
2527        }
2528        
2529        
2530
2531        /**
2532         * Adds and returns a new value for <b>reasonReference</b> ()
2533         *
2534     * <p>
2535     * <b>Definition:</b>
2536     * Provides the health condition(s) that drove the inclusion of this particular activity as part of the plan.
2537     * </p> 
2538         */
2539        public ResourceReferenceDt addReasonReference() {
2540                ResourceReferenceDt newType = new ResourceReferenceDt();
2541                getReasonReference().add(newType);
2542                return newType; 
2543        }
2544  
2545        /**
2546         * Gets the value(s) for <b>goal</b> ().
2547         * creating it if it does
2548         * not exist. Will not return <code>null</code>.
2549         *
2550     * <p>
2551     * <b>Definition:</b>
2552     * Internal reference that identifies the goals that this activity is intended to contribute towards meeting
2553     * </p> 
2554         */
2555        public java.util.List<ResourceReferenceDt> getGoal() {  
2556                if (myGoal == null) {
2557                        myGoal = new java.util.ArrayList<ResourceReferenceDt>();
2558                }
2559                return myGoal;
2560        }
2561
2562        /**
2563         * Sets the value(s) for <b>goal</b> ()
2564         *
2565     * <p>
2566     * <b>Definition:</b>
2567     * Internal reference that identifies the goals that this activity is intended to contribute towards meeting
2568     * </p> 
2569         */
2570        public ActivityDetail setGoal(java.util.List<ResourceReferenceDt> theValue) {
2571                myGoal = theValue;
2572                return this;
2573        }
2574        
2575        
2576
2577        /**
2578         * Adds and returns a new value for <b>goal</b> ()
2579         *
2580     * <p>
2581     * <b>Definition:</b>
2582     * Internal reference that identifies the goals that this activity is intended to contribute towards meeting
2583     * </p> 
2584         */
2585        public ResourceReferenceDt addGoal() {
2586                ResourceReferenceDt newType = new ResourceReferenceDt();
2587                getGoal().add(newType);
2588                return newType; 
2589        }
2590  
2591        /**
2592         * Gets the value(s) for <b>status</b> ().
2593         * creating it if it does
2594         * not exist. Will not return <code>null</code>.
2595         *
2596     * <p>
2597     * <b>Definition:</b>
2598     * Identifies what progress is being made for the specific activity.
2599     * </p> 
2600         */
2601        public BoundCodeDt<CarePlanActivityStatusEnum> getStatusElement() {  
2602                if (myStatus == null) {
2603                        myStatus = new BoundCodeDt<CarePlanActivityStatusEnum>(CarePlanActivityStatusEnum.VALUESET_BINDER);
2604                }
2605                return myStatus;
2606        }
2607
2608        
2609        /**
2610         * Gets the value(s) for <b>status</b> ().
2611         * creating it if it does
2612         * not exist. Will not return <code>null</code>.
2613         *
2614     * <p>
2615     * <b>Definition:</b>
2616     * Identifies what progress is being made for the specific activity.
2617     * </p> 
2618         */
2619        public String getStatus() {  
2620                return getStatusElement().getValue();
2621        }
2622
2623        /**
2624         * Sets the value(s) for <b>status</b> ()
2625         *
2626     * <p>
2627     * <b>Definition:</b>
2628     * Identifies what progress is being made for the specific activity.
2629     * </p> 
2630         */
2631        public ActivityDetail setStatus(BoundCodeDt<CarePlanActivityStatusEnum> theValue) {
2632                myStatus = theValue;
2633                return this;
2634        }
2635        
2636        
2637
2638        /**
2639         * Sets the value(s) for <b>status</b> ()
2640         *
2641     * <p>
2642     * <b>Definition:</b>
2643     * Identifies what progress is being made for the specific activity.
2644     * </p> 
2645         */
2646        public ActivityDetail setStatus(CarePlanActivityStatusEnum theValue) {
2647                setStatus(new BoundCodeDt<CarePlanActivityStatusEnum>(CarePlanActivityStatusEnum.VALUESET_BINDER, theValue));
2648                
2649/*
2650                getStatusElement().setValueAsEnum(theValue);
2651*/
2652                return this;
2653        }
2654
2655  
2656        /**
2657         * Gets the value(s) for <b>statusReason</b> ().
2658         * creating it if it does
2659         * not exist. Will not return <code>null</code>.
2660         *
2661     * <p>
2662     * <b>Definition:</b>
2663     * Provides reason why the activity isn't yet started, is on hold, was cancelled, etc.
2664     * </p> 
2665         */
2666        public CodeableConceptDt getStatusReason() {  
2667                if (myStatusReason == null) {
2668                        myStatusReason = new CodeableConceptDt();
2669                }
2670                return myStatusReason;
2671        }
2672
2673        /**
2674         * Sets the value(s) for <b>statusReason</b> ()
2675         *
2676     * <p>
2677     * <b>Definition:</b>
2678     * Provides reason why the activity isn't yet started, is on hold, was cancelled, etc.
2679     * </p> 
2680         */
2681        public ActivityDetail setStatusReason(CodeableConceptDt theValue) {
2682                myStatusReason = theValue;
2683                return this;
2684        }
2685        
2686        
2687
2688  
2689        /**
2690         * Gets the value(s) for <b>prohibited</b> ().
2691         * creating it if it does
2692         * not exist. Will not return <code>null</code>.
2693         *
2694     * <p>
2695     * <b>Definition:</b>
2696     * If true, indicates that the described activity is one that must NOT be engaged in when following the plan.
2697     * </p> 
2698         */
2699        public BooleanDt getProhibitedElement() {  
2700                if (myProhibited == null) {
2701                        myProhibited = new BooleanDt();
2702                }
2703                return myProhibited;
2704        }
2705
2706        
2707        /**
2708         * Gets the value(s) for <b>prohibited</b> ().
2709         * creating it if it does
2710         * not exist. Will not return <code>null</code>.
2711         *
2712     * <p>
2713     * <b>Definition:</b>
2714     * If true, indicates that the described activity is one that must NOT be engaged in when following the plan.
2715     * </p> 
2716         */
2717        public Boolean getProhibited() {  
2718                return getProhibitedElement().getValue();
2719        }
2720
2721        /**
2722         * Sets the value(s) for <b>prohibited</b> ()
2723         *
2724     * <p>
2725     * <b>Definition:</b>
2726     * If true, indicates that the described activity is one that must NOT be engaged in when following the plan.
2727     * </p> 
2728         */
2729        public ActivityDetail setProhibited(BooleanDt theValue) {
2730                myProhibited = theValue;
2731                return this;
2732        }
2733        
2734        
2735
2736        /**
2737         * Sets the value for <b>prohibited</b> ()
2738         *
2739     * <p>
2740     * <b>Definition:</b>
2741     * If true, indicates that the described activity is one that must NOT be engaged in when following the plan.
2742     * </p> 
2743         */
2744        public ActivityDetail setProhibited( boolean theBoolean) {
2745                myProhibited = new BooleanDt(theBoolean); 
2746                return this; 
2747        }
2748
2749 
2750        /**
2751         * Gets the value(s) for <b>scheduled[x]</b> ().
2752         * creating it if it does
2753         * not exist. Will not return <code>null</code>.
2754         *
2755     * <p>
2756     * <b>Definition:</b>
2757     * The period, timing or frequency upon which the described activity is to occur.
2758     * </p> 
2759         */
2760        public IDatatype getScheduled() {  
2761                return myScheduled;
2762        }
2763
2764        /**
2765         * Sets the value(s) for <b>scheduled[x]</b> ()
2766         *
2767     * <p>
2768     * <b>Definition:</b>
2769     * The period, timing or frequency upon which the described activity is to occur.
2770     * </p> 
2771         */
2772        public ActivityDetail setScheduled(IDatatype theValue) {
2773                myScheduled = theValue;
2774                return this;
2775        }
2776        
2777        
2778
2779  
2780        /**
2781         * Gets the value(s) for <b>location</b> ().
2782         * creating it if it does
2783         * not exist. Will not return <code>null</code>.
2784         *
2785     * <p>
2786     * <b>Definition:</b>
2787     * Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.
2788     * </p> 
2789         */
2790        public ResourceReferenceDt getLocation() {  
2791                if (myLocation == null) {
2792                        myLocation = new ResourceReferenceDt();
2793                }
2794                return myLocation;
2795        }
2796
2797        /**
2798         * Sets the value(s) for <b>location</b> ()
2799         *
2800     * <p>
2801     * <b>Definition:</b>
2802     * Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etc.
2803     * </p> 
2804         */
2805        public ActivityDetail setLocation(ResourceReferenceDt theValue) {
2806                myLocation = theValue;
2807                return this;
2808        }
2809        
2810        
2811
2812  
2813        /**
2814         * Gets the value(s) for <b>performer</b> ().
2815         * creating it if it does
2816         * not exist. Will not return <code>null</code>.
2817         *
2818     * <p>
2819     * <b>Definition:</b>
2820     * Identifies who's expected to be involved in the activity.
2821     * </p> 
2822         */
2823        public java.util.List<ResourceReferenceDt> getPerformer() {  
2824                if (myPerformer == null) {
2825                        myPerformer = new java.util.ArrayList<ResourceReferenceDt>();
2826                }
2827                return myPerformer;
2828        }
2829
2830        /**
2831         * Sets the value(s) for <b>performer</b> ()
2832         *
2833     * <p>
2834     * <b>Definition:</b>
2835     * Identifies who's expected to be involved in the activity.
2836     * </p> 
2837         */
2838        public ActivityDetail setPerformer(java.util.List<ResourceReferenceDt> theValue) {
2839                myPerformer = theValue;
2840                return this;
2841        }
2842        
2843        
2844
2845        /**
2846         * Adds and returns a new value for <b>performer</b> ()
2847         *
2848     * <p>
2849     * <b>Definition:</b>
2850     * Identifies who's expected to be involved in the activity.
2851     * </p> 
2852         */
2853        public ResourceReferenceDt addPerformer() {
2854                ResourceReferenceDt newType = new ResourceReferenceDt();
2855                getPerformer().add(newType);
2856                return newType; 
2857        }
2858  
2859        /**
2860         * Gets the value(s) for <b>product[x]</b> ().
2861         * creating it if it does
2862         * not exist. Will not return <code>null</code>.
2863         *
2864     * <p>
2865     * <b>Definition:</b>
2866     * Identifies the food, drug or other product to be consumed or supplied in the activity.
2867     * </p> 
2868         */
2869        public IDatatype getProduct() {  
2870                return myProduct;
2871        }
2872
2873        /**
2874         * Sets the value(s) for <b>product[x]</b> ()
2875         *
2876     * <p>
2877     * <b>Definition:</b>
2878     * Identifies the food, drug or other product to be consumed or supplied in the activity.
2879     * </p> 
2880         */
2881        public ActivityDetail setProduct(IDatatype theValue) {
2882                myProduct = theValue;
2883                return this;
2884        }
2885        
2886        
2887
2888  
2889        /**
2890         * Gets the value(s) for <b>dailyAmount</b> ().
2891         * creating it if it does
2892         * not exist. Will not return <code>null</code>.
2893         *
2894     * <p>
2895     * <b>Definition:</b>
2896     * Identifies the quantity expected to be consumed in a given day.
2897     * </p> 
2898         */
2899        public SimpleQuantityDt getDailyAmount() {  
2900                if (myDailyAmount == null) {
2901                        myDailyAmount = new SimpleQuantityDt();
2902                }
2903                return myDailyAmount;
2904        }
2905
2906        /**
2907         * Sets the value(s) for <b>dailyAmount</b> ()
2908         *
2909     * <p>
2910     * <b>Definition:</b>
2911     * Identifies the quantity expected to be consumed in a given day.
2912     * </p> 
2913         */
2914        public ActivityDetail setDailyAmount(SimpleQuantityDt theValue) {
2915                myDailyAmount = theValue;
2916                return this;
2917        }
2918        
2919        
2920
2921  
2922        /**
2923         * Gets the value(s) for <b>quantity</b> ().
2924         * creating it if it does
2925         * not exist. Will not return <code>null</code>.
2926         *
2927     * <p>
2928     * <b>Definition:</b>
2929     * Identifies the quantity expected to be supplied, administered or consumed by the subject
2930     * </p> 
2931         */
2932        public SimpleQuantityDt getQuantity() {  
2933                if (myQuantity == null) {
2934                        myQuantity = new SimpleQuantityDt();
2935                }
2936                return myQuantity;
2937        }
2938
2939        /**
2940         * Sets the value(s) for <b>quantity</b> ()
2941         *
2942     * <p>
2943     * <b>Definition:</b>
2944     * Identifies the quantity expected to be supplied, administered or consumed by the subject
2945     * </p> 
2946         */
2947        public ActivityDetail setQuantity(SimpleQuantityDt theValue) {
2948                myQuantity = theValue;
2949                return this;
2950        }
2951        
2952        
2953
2954  
2955        /**
2956         * Gets the value(s) for <b>description</b> ().
2957         * creating it if it does
2958         * not exist. Will not return <code>null</code>.
2959         *
2960     * <p>
2961     * <b>Definition:</b>
2962     * This provides a textual description of constraints on the intended activity occurrence, including relation to other activities.  It may also include objectives, pre-conditions and end-conditions.  Finally, it may convey specifics about the activity such as body site, method, route, etc.
2963     * </p> 
2964         */
2965        public StringDt getDescriptionElement() {  
2966                if (myDescription == null) {
2967                        myDescription = new StringDt();
2968                }
2969                return myDescription;
2970        }
2971
2972        
2973        /**
2974         * Gets the value(s) for <b>description</b> ().
2975         * creating it if it does
2976         * not exist. Will not return <code>null</code>.
2977         *
2978     * <p>
2979     * <b>Definition:</b>
2980     * This provides a textual description of constraints on the intended activity occurrence, including relation to other activities.  It may also include objectives, pre-conditions and end-conditions.  Finally, it may convey specifics about the activity such as body site, method, route, etc.
2981     * </p> 
2982         */
2983        public String getDescription() {  
2984                return getDescriptionElement().getValue();
2985        }
2986
2987        /**
2988         * Sets the value(s) for <b>description</b> ()
2989         *
2990     * <p>
2991     * <b>Definition:</b>
2992     * This provides a textual description of constraints on the intended activity occurrence, including relation to other activities.  It may also include objectives, pre-conditions and end-conditions.  Finally, it may convey specifics about the activity such as body site, method, route, etc.
2993     * </p> 
2994         */
2995        public ActivityDetail setDescription(StringDt theValue) {
2996                myDescription = theValue;
2997                return this;
2998        }
2999        
3000        
3001
3002        /**
3003         * Sets the value for <b>description</b> ()
3004         *
3005     * <p>
3006     * <b>Definition:</b>
3007     * This provides a textual description of constraints on the intended activity occurrence, including relation to other activities.  It may also include objectives, pre-conditions and end-conditions.  Finally, it may convey specifics about the activity such as body site, method, route, etc.
3008     * </p> 
3009         */
3010        public ActivityDetail setDescription( String theString) {
3011                myDescription = new StringDt(theString); 
3012                return this; 
3013        }
3014
3015 
3016
3017
3018        }
3019
3020
3021
3022
3023
3024    @Override
3025    public String getResourceName() {
3026        return "CarePlan";
3027    }
3028    
3029    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
3030        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
3031    }
3032
3033
3034}