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>Goal</b> Resource
320 * (clinical.careprovision)
321 *
322 * <p>
323 * <b>Definition:</b>
324 * Describes the intended objective(s) for a patient, group or organization care, for example, weight loss, restoring an activity of daily living, obtaining herd immunity via immunization, meeting a process improvement objective, etc.
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/Goal">http://hl7.org/fhir/profiles/Goal</a> 
335 * </p>
336 *
337 */
338@ResourceDef(name="Goal", profile="http://hl7.org/fhir/profiles/Goal", id="goal")
339public class Goal 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>Goal.subject</b><br>
348         * </p>
349         */
350        @SearchParamDefinition(name="patient", path="Goal.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>Goal.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>Goal.subject</b><br>
369         * </p>
370         */
371        @SearchParamDefinition(name="subject", path="Goal.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>Goal.subject</b><br>
380         * </p>
381         */
382        public static final ReferenceClientParam SUBJECT = new ReferenceClientParam(SP_SUBJECT);
383
384        /**
385         * Search parameter constant for <b>category</b>
386         * <p>
387         * Description: <b></b><br>
388         * Type: <b>token</b><br>
389         * Path: <b>Goal.category</b><br>
390         * </p>
391         */
392        @SearchParamDefinition(name="category", path="Goal.category", description="", type="token"  )
393        public static final String SP_CATEGORY = "category";
394
395        /**
396         * <b>Fluent Client</b> search parameter constant for <b>category</b>
397         * <p>
398         * Description: <b></b><br>
399         * Type: <b>token</b><br>
400         * Path: <b>Goal.category</b><br>
401         * </p>
402         */
403        public static final TokenClientParam CATEGORY = new TokenClientParam(SP_CATEGORY);
404
405        /**
406         * Search parameter constant for <b>targetdate</b>
407         * <p>
408         * Description: <b></b><br>
409         * Type: <b>date</b><br>
410         * Path: <b>Goal.targetDate</b><br>
411         * </p>
412         */
413        @SearchParamDefinition(name="targetdate", path="Goal.targetDate", description="", type="date"  )
414        public static final String SP_TARGETDATE = "targetdate";
415
416        /**
417         * <b>Fluent Client</b> search parameter constant for <b>targetdate</b>
418         * <p>
419         * Description: <b></b><br>
420         * Type: <b>date</b><br>
421         * Path: <b>Goal.targetDate</b><br>
422         * </p>
423         */
424        public static final DateClientParam TARGETDATE = new DateClientParam(SP_TARGETDATE);
425
426        /**
427         * Search parameter constant for <b>identifier</b>
428         * <p>
429         * Description: <b></b><br>
430         * Type: <b>token</b><br>
431         * Path: <b>Goal.identifier</b><br>
432         * </p>
433         */
434        @SearchParamDefinition(name="identifier", path="Goal.identifier", description="", type="token"  )
435        public static final String SP_IDENTIFIER = "identifier";
436
437        /**
438         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
439         * <p>
440         * Description: <b></b><br>
441         * Type: <b>token</b><br>
442         * Path: <b>Goal.identifier</b><br>
443         * </p>
444         */
445        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
446
447        /**
448         * Search parameter constant for <b>status</b>
449         * <p>
450         * Description: <b></b><br>
451         * Type: <b>token</b><br>
452         * Path: <b>Goal.status</b><br>
453         * </p>
454         */
455        @SearchParamDefinition(name="status", path="Goal.status", description="", type="token"  )
456        public static final String SP_STATUS = "status";
457
458        /**
459         * <b>Fluent Client</b> search parameter constant for <b>status</b>
460         * <p>
461         * Description: <b></b><br>
462         * Type: <b>token</b><br>
463         * Path: <b>Goal.status</b><br>
464         * </p>
465         */
466        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
467
468
469        /**
470         * Constant for fluent queries to be used to add include statements. Specifies
471         * the path value of "<b>Goal:patient</b>".
472         */
473        public static final Include INCLUDE_PATIENT = new Include("Goal:patient");
474
475        /**
476         * Constant for fluent queries to be used to add include statements. Specifies
477         * the path value of "<b>Goal:subject</b>".
478         */
479        public static final Include INCLUDE_SUBJECT = new Include("Goal:subject");
480
481
482        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
483        @Description(
484                shortDefinition="id",
485                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)"
486        )
487        private java.util.List<IdentifierDt> myIdentifier;
488        
489        @Child(name="subject", order=1, min=0, max=1, summary=true, modifier=false, type={
490                ca.uhn.fhir.model.dstu2.resource.Patient.class,                 ca.uhn.fhir.model.dstu2.resource.Group.class,           ca.uhn.fhir.model.dstu2.resource.Organization.class     })
491        @Description(
492                shortDefinition="who.focus",
493                formalDefinition="Identifies the patient, group or organization for whom the goal is being established."
494        )
495        private ResourceReferenceDt mySubject;
496        
497        @Child(name="start", order=2, min=0, max=1, summary=true, modifier=false, type={
498                DateDt.class,           CodeableConceptDt.class })
499        @Description(
500                shortDefinition="",
501                formalDefinition="The date or event after which the goal should begin being pursued"
502        )
503        private IDatatype myStart;
504        
505        @Child(name="target", order=3, min=0, max=1, summary=true, modifier=false, type={
506                DateDt.class,           DurationDt.class        })
507        @Description(
508                shortDefinition="",
509                formalDefinition="Indicates either the date or the duration after start by which the goal should be met"
510        )
511        private IDatatype myTarget;
512        
513        @Child(name="category", type=CodeableConceptDt.class, order=4, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)    
514        @Description(
515                shortDefinition="",
516                formalDefinition="Indicates a category the goal falls within"
517        )
518        private java.util.List<BoundCodeableConceptDt<GoalCategoryEnum>> myCategory;
519        
520        @Child(name="description", type=StringDt.class, order=5, min=1, max=1, summary=true, modifier=false)    
521        @Description(
522                shortDefinition="",
523                formalDefinition="Human-readable description of a specific desired objective of care."
524        )
525        private StringDt myDescription;
526        
527        @Child(name="status", type=CodeDt.class, order=6, min=1, max=1, summary=true, modifier=true)    
528        @Description(
529                shortDefinition="status",
530                formalDefinition="Indicates whether the goal has been reached and is still considered relevant"
531        )
532        private BoundCodeDt<GoalStatusEnum> myStatus;
533        
534        @Child(name="statusDate", type=DateDt.class, order=7, min=0, max=1, summary=true, modifier=false)       
535        @Description(
536                shortDefinition="when.recorded",
537                formalDefinition="Identifies when the current status.  I.e. When initially created, when achieved, when cancelled, etc."
538        )
539        private DateDt myStatusDate;
540        
541        @Child(name="statusReason", type=CodeableConceptDt.class, order=8, min=0, max=1, summary=false, modifier=false) 
542        @Description(
543                shortDefinition="",
544                formalDefinition="Captures the reason for the current status."
545        )
546        private BoundCodeableConceptDt<GoalStatusReasonEnum> myStatusReason;
547        
548        @Child(name="author", order=9, min=0, max=1, summary=true, modifier=false, type={
549                ca.uhn.fhir.model.dstu2.resource.Patient.class,                 ca.uhn.fhir.model.dstu2.resource.Practitioner.class,            ca.uhn.fhir.model.dstu2.resource.RelatedPerson.class    })
550        @Description(
551                shortDefinition="who.actor",
552                formalDefinition="Indicates whose goal this is - patient goal, practitioner goal, etc."
553        )
554        private ResourceReferenceDt myAuthor;
555        
556        @Child(name="priority", type=CodeableConceptDt.class, order=10, min=0, max=1, summary=true, modifier=false)     
557        @Description(
558                shortDefinition="",
559                formalDefinition="Identifies the mutually agreed level of importance associated with reaching/sustaining the goal"
560        )
561        private BoundCodeableConceptDt<GoalPriorityEnum> myPriority;
562        
563        @Child(name="addresses", order=11, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
564                ca.uhn.fhir.model.dstu2.resource.Condition.class,               ca.uhn.fhir.model.dstu2.resource.Observation.class,             ca.uhn.fhir.model.dstu2.resource.MedicationStatement.class,             ca.uhn.fhir.model.dstu2.resource.NutritionOrder.class,          ca.uhn.fhir.model.dstu2.resource.ProcedureRequest.class,                ca.uhn.fhir.model.dstu2.resource.RiskAssessment.class   })
565        @Description(
566                shortDefinition="",
567                formalDefinition="The identified conditions and other health record elements that are intended to be addressed by the goal"
568        )
569        private java.util.List<ResourceReferenceDt> myAddresses;
570        
571        @Child(name="note", type=AnnotationDt.class, order=12, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
572        @Description(
573                shortDefinition="",
574                formalDefinition="Any comments related to the goal"
575        )
576        private java.util.List<AnnotationDt> myNote;
577        
578        @Child(name="outcome", order=13, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
579        @Description(
580                shortDefinition="",
581                formalDefinition="Identifies the change (or lack of change) at the point where the goal was deepmed to be cancelled or achieved."
582        )
583        private java.util.List<Outcome> myOutcome;
584        
585
586        @Override
587        public boolean isEmpty() {
588                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  mySubject,  myStart,  myTarget,  myCategory,  myDescription,  myStatus,  myStatusDate,  myStatusReason,  myAuthor,  myPriority,  myAddresses,  myNote,  myOutcome);
589        }
590        
591        @Override
592        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
593                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, mySubject, myStart, myTarget, myCategory, myDescription, myStatus, myStatusDate, myStatusReason, myAuthor, myPriority, myAddresses, myNote, myOutcome);
594        }
595
596        /**
597         * Gets the value(s) for <b>identifier</b> (id).
598         * creating it if it does
599         * not exist. Will not return <code>null</code>.
600         *
601     * <p>
602     * <b>Definition:</b>
603     * 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)
604     * </p> 
605         */
606        public java.util.List<IdentifierDt> getIdentifier() {  
607                if (myIdentifier == null) {
608                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
609                }
610                return myIdentifier;
611        }
612
613        /**
614         * Sets the value(s) for <b>identifier</b> (id)
615         *
616     * <p>
617     * <b>Definition:</b>
618     * 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)
619     * </p> 
620         */
621        public Goal setIdentifier(java.util.List<IdentifierDt> theValue) {
622                myIdentifier = theValue;
623                return this;
624        }
625        
626        
627
628        /**
629         * Adds and returns a new value for <b>identifier</b> (id)
630         *
631     * <p>
632     * <b>Definition:</b>
633     * 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)
634     * </p> 
635         */
636        public IdentifierDt addIdentifier() {
637                IdentifierDt newType = new IdentifierDt();
638                getIdentifier().add(newType);
639                return newType; 
640        }
641
642        /**
643         * Adds a given new value for <b>identifier</b> (id)
644         *
645         * <p>
646         * <b>Definition:</b>
647         * 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)
648         * </p>
649         * @param theValue The identifier to add (must not be <code>null</code>)
650         */
651        public Goal addIdentifier(IdentifierDt theValue) {
652                if (theValue == null) {
653                        throw new NullPointerException("theValue must not be null");
654                }
655                getIdentifier().add(theValue);
656                return this;
657        }
658
659        /**
660         * Gets the first repetition for <b>identifier</b> (id),
661         * creating it if it does not already exist.
662         *
663     * <p>
664     * <b>Definition:</b>
665     * 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)
666     * </p> 
667         */
668        public IdentifierDt getIdentifierFirstRep() {
669                if (getIdentifier().isEmpty()) {
670                        return addIdentifier();
671                }
672                return getIdentifier().get(0); 
673        }
674  
675        /**
676         * Gets the value(s) for <b>subject</b> (who.focus).
677         * creating it if it does
678         * not exist. Will not return <code>null</code>.
679         *
680     * <p>
681     * <b>Definition:</b>
682     * Identifies the patient, group or organization for whom the goal is being established.
683     * </p> 
684         */
685        public ResourceReferenceDt getSubject() {  
686                if (mySubject == null) {
687                        mySubject = new ResourceReferenceDt();
688                }
689                return mySubject;
690        }
691
692        /**
693         * Sets the value(s) for <b>subject</b> (who.focus)
694         *
695     * <p>
696     * <b>Definition:</b>
697     * Identifies the patient, group or organization for whom the goal is being established.
698     * </p> 
699         */
700        public Goal setSubject(ResourceReferenceDt theValue) {
701                mySubject = theValue;
702                return this;
703        }
704        
705        
706
707  
708        /**
709         * Gets the value(s) for <b>start[x]</b> ().
710         * creating it if it does
711         * not exist. Will not return <code>null</code>.
712         *
713     * <p>
714     * <b>Definition:</b>
715     * The date or event after which the goal should begin being pursued
716     * </p> 
717         */
718        public IDatatype getStart() {  
719                return myStart;
720        }
721
722        /**
723         * Sets the value(s) for <b>start[x]</b> ()
724         *
725     * <p>
726     * <b>Definition:</b>
727     * The date or event after which the goal should begin being pursued
728     * </p> 
729         */
730        public Goal setStart(IDatatype theValue) {
731                myStart = theValue;
732                return this;
733        }
734        
735        
736
737  
738        /**
739         * Gets the value(s) for <b>target[x]</b> ().
740         * creating it if it does
741         * not exist. Will not return <code>null</code>.
742         *
743     * <p>
744     * <b>Definition:</b>
745     * Indicates either the date or the duration after start by which the goal should be met
746     * </p> 
747         */
748        public IDatatype getTarget() {  
749                return myTarget;
750        }
751
752        /**
753         * Sets the value(s) for <b>target[x]</b> ()
754         *
755     * <p>
756     * <b>Definition:</b>
757     * Indicates either the date or the duration after start by which the goal should be met
758     * </p> 
759         */
760        public Goal setTarget(IDatatype theValue) {
761                myTarget = theValue;
762                return this;
763        }
764        
765        
766
767  
768        /**
769         * Gets the value(s) for <b>category</b> ().
770         * creating it if it does
771         * not exist. Will not return <code>null</code>.
772         *
773     * <p>
774     * <b>Definition:</b>
775     * Indicates a category the goal falls within
776     * </p> 
777         */
778        public java.util.List<BoundCodeableConceptDt<GoalCategoryEnum>> getCategory() {  
779                if (myCategory == null) {
780                        myCategory = new java.util.ArrayList<BoundCodeableConceptDt<GoalCategoryEnum>>();
781                }
782                return myCategory;
783        }
784
785        /**
786         * Sets the value(s) for <b>category</b> ()
787         *
788     * <p>
789     * <b>Definition:</b>
790     * Indicates a category the goal falls within
791     * </p> 
792         */
793        public Goal setCategory(java.util.List<BoundCodeableConceptDt<GoalCategoryEnum>> theValue) {
794                myCategory = theValue;
795                return this;
796        }
797        
798        
799
800        /**
801         * Add a value for <b>category</b> () using an enumerated type. This
802         * is intended as a convenience method for situations where the FHIR defined ValueSets are mandatory
803         * or contain the desirable codes. If you wish to use codes other than those which are built-in, 
804         * you may also use the {@link #addCategory()} method.
805         *
806     * <p>
807     * <b>Definition:</b>
808     * Indicates a category the goal falls within
809     * </p> 
810         */
811        public BoundCodeableConceptDt<GoalCategoryEnum> addCategory(GoalCategoryEnum theValue) {
812                BoundCodeableConceptDt<GoalCategoryEnum> retVal = new BoundCodeableConceptDt<GoalCategoryEnum>(GoalCategoryEnum.VALUESET_BINDER, theValue);
813                getCategory().add(retVal);
814                return retVal;
815        }
816
817        /**
818         * Gets the first repetition for <b>category</b> (),
819         * creating it if it does not already exist.
820         *
821     * <p>
822     * <b>Definition:</b>
823     * Indicates a category the goal falls within
824     * </p> 
825         */
826        public BoundCodeableConceptDt<GoalCategoryEnum> getCategoryFirstRep() {
827                if (getCategory().size() == 0) {
828                        addCategory();
829                }
830                return getCategory().get(0);
831        }
832
833        /**
834         * Add a value for <b>category</b> ()
835         *
836     * <p>
837     * <b>Definition:</b>
838     * Indicates a category the goal falls within
839     * </p> 
840         */
841        public BoundCodeableConceptDt<GoalCategoryEnum> addCategory() {
842                BoundCodeableConceptDt<GoalCategoryEnum> retVal = new BoundCodeableConceptDt<GoalCategoryEnum>(GoalCategoryEnum.VALUESET_BINDER);
843                getCategory().add(retVal);
844                return retVal;
845        }
846
847        /**
848         * Sets the value(s), and clears any existing value(s) for <b>category</b> ()
849         *
850     * <p>
851     * <b>Definition:</b>
852     * Indicates a category the goal falls within
853     * </p> 
854         */
855        public Goal setCategory(GoalCategoryEnum theValue) {
856                getCategory().clear();
857                addCategory(theValue);
858                return this;
859        }
860
861  
862        /**
863         * Gets the value(s) for <b>description</b> ().
864         * creating it if it does
865         * not exist. Will not return <code>null</code>.
866         *
867     * <p>
868     * <b>Definition:</b>
869     * Human-readable description of a specific desired objective of care.
870     * </p> 
871         */
872        public StringDt getDescriptionElement() {  
873                if (myDescription == null) {
874                        myDescription = new StringDt();
875                }
876                return myDescription;
877        }
878
879        
880        /**
881         * Gets the value(s) for <b>description</b> ().
882         * creating it if it does
883         * not exist. Will not return <code>null</code>.
884         *
885     * <p>
886     * <b>Definition:</b>
887     * Human-readable description of a specific desired objective of care.
888     * </p> 
889         */
890        public String getDescription() {  
891                return getDescriptionElement().getValue();
892        }
893
894        /**
895         * Sets the value(s) for <b>description</b> ()
896         *
897     * <p>
898     * <b>Definition:</b>
899     * Human-readable description of a specific desired objective of care.
900     * </p> 
901         */
902        public Goal setDescription(StringDt theValue) {
903                myDescription = theValue;
904                return this;
905        }
906        
907        
908
909        /**
910         * Sets the value for <b>description</b> ()
911         *
912     * <p>
913     * <b>Definition:</b>
914     * Human-readable description of a specific desired objective of care.
915     * </p> 
916         */
917        public Goal setDescription( String theString) {
918                myDescription = new StringDt(theString); 
919                return this; 
920        }
921
922 
923        /**
924         * Gets the value(s) for <b>status</b> (status).
925         * creating it if it does
926         * not exist. Will not return <code>null</code>.
927         *
928     * <p>
929     * <b>Definition:</b>
930     * Indicates whether the goal has been reached and is still considered relevant
931     * </p> 
932         */
933        public BoundCodeDt<GoalStatusEnum> getStatusElement() {  
934                if (myStatus == null) {
935                        myStatus = new BoundCodeDt<GoalStatusEnum>(GoalStatusEnum.VALUESET_BINDER);
936                }
937                return myStatus;
938        }
939
940        
941        /**
942         * Gets the value(s) for <b>status</b> (status).
943         * creating it if it does
944         * not exist. Will not return <code>null</code>.
945         *
946     * <p>
947     * <b>Definition:</b>
948     * Indicates whether the goal has been reached and is still considered relevant
949     * </p> 
950         */
951        public String getStatus() {  
952                return getStatusElement().getValue();
953        }
954
955        /**
956         * Sets the value(s) for <b>status</b> (status)
957         *
958     * <p>
959     * <b>Definition:</b>
960     * Indicates whether the goal has been reached and is still considered relevant
961     * </p> 
962         */
963        public Goal setStatus(BoundCodeDt<GoalStatusEnum> theValue) {
964                myStatus = theValue;
965                return this;
966        }
967        
968        
969
970        /**
971         * Sets the value(s) for <b>status</b> (status)
972         *
973     * <p>
974     * <b>Definition:</b>
975     * Indicates whether the goal has been reached and is still considered relevant
976     * </p> 
977         */
978        public Goal setStatus(GoalStatusEnum theValue) {
979                setStatus(new BoundCodeDt<GoalStatusEnum>(GoalStatusEnum.VALUESET_BINDER, theValue));
980                
981/*
982                getStatusElement().setValueAsEnum(theValue);
983*/
984                return this;
985        }
986
987  
988        /**
989         * Gets the value(s) for <b>statusDate</b> (when.recorded).
990         * creating it if it does
991         * not exist. Will not return <code>null</code>.
992         *
993     * <p>
994     * <b>Definition:</b>
995     * Identifies when the current status.  I.e. When initially created, when achieved, when cancelled, etc.
996     * </p> 
997         */
998        public DateDt getStatusDateElement() {  
999                if (myStatusDate == null) {
1000                        myStatusDate = new DateDt();
1001                }
1002                return myStatusDate;
1003        }
1004
1005        
1006        /**
1007         * Gets the value(s) for <b>statusDate</b> (when.recorded).
1008         * creating it if it does
1009         * not exist. Will not return <code>null</code>.
1010         *
1011     * <p>
1012     * <b>Definition:</b>
1013     * Identifies when the current status.  I.e. When initially created, when achieved, when cancelled, etc.
1014     * </p> 
1015         */
1016        public Date getStatusDate() {  
1017                return getStatusDateElement().getValue();
1018        }
1019
1020        /**
1021         * Sets the value(s) for <b>statusDate</b> (when.recorded)
1022         *
1023     * <p>
1024     * <b>Definition:</b>
1025     * Identifies when the current status.  I.e. When initially created, when achieved, when cancelled, etc.
1026     * </p> 
1027         */
1028        public Goal setStatusDate(DateDt theValue) {
1029                myStatusDate = theValue;
1030                return this;
1031        }
1032        
1033        
1034
1035        /**
1036         * Sets the value for <b>statusDate</b> (when.recorded)
1037         *
1038     * <p>
1039     * <b>Definition:</b>
1040     * Identifies when the current status.  I.e. When initially created, when achieved, when cancelled, etc.
1041     * </p> 
1042         */
1043        public Goal setStatusDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
1044                myStatusDate = new DateDt(theDate, thePrecision); 
1045                return this; 
1046        }
1047
1048        /**
1049         * Sets the value for <b>statusDate</b> (when.recorded)
1050         *
1051     * <p>
1052     * <b>Definition:</b>
1053     * Identifies when the current status.  I.e. When initially created, when achieved, when cancelled, etc.
1054     * </p> 
1055         */
1056        public Goal setStatusDateWithDayPrecision( Date theDate) {
1057                myStatusDate = new DateDt(theDate); 
1058                return this; 
1059        }
1060
1061 
1062        /**
1063         * Gets the value(s) for <b>statusReason</b> ().
1064         * creating it if it does
1065         * not exist. Will not return <code>null</code>.
1066         *
1067     * <p>
1068     * <b>Definition:</b>
1069     * Captures the reason for the current status.
1070     * </p> 
1071         */
1072        public BoundCodeableConceptDt<GoalStatusReasonEnum> getStatusReason() {  
1073                if (myStatusReason == null) {
1074                        myStatusReason = new BoundCodeableConceptDt<GoalStatusReasonEnum>(GoalStatusReasonEnum.VALUESET_BINDER);
1075                }
1076                return myStatusReason;
1077        }
1078
1079        /**
1080         * Sets the value(s) for <b>statusReason</b> ()
1081         *
1082     * <p>
1083     * <b>Definition:</b>
1084     * Captures the reason for the current status.
1085     * </p> 
1086         */
1087        public Goal setStatusReason(BoundCodeableConceptDt<GoalStatusReasonEnum> theValue) {
1088                myStatusReason = theValue;
1089                return this;
1090        }
1091        
1092        
1093
1094        /**
1095         * Sets the value(s) for <b>statusReason</b> ()
1096         *
1097     * <p>
1098     * <b>Definition:</b>
1099     * Captures the reason for the current status.
1100     * </p> 
1101         */
1102        public Goal setStatusReason(GoalStatusReasonEnum theValue) {
1103                setStatusReason(new BoundCodeableConceptDt<GoalStatusReasonEnum>(GoalStatusReasonEnum.VALUESET_BINDER, theValue));
1104                
1105/*
1106                getStatusReason().setValueAsEnum(theValue);
1107*/
1108                return this;
1109        }
1110
1111  
1112        /**
1113         * Gets the value(s) for <b>author</b> (who.actor).
1114         * creating it if it does
1115         * not exist. Will not return <code>null</code>.
1116         *
1117     * <p>
1118     * <b>Definition:</b>
1119     * Indicates whose goal this is - patient goal, practitioner goal, etc.
1120     * </p> 
1121         */
1122        public ResourceReferenceDt getAuthor() {  
1123                if (myAuthor == null) {
1124                        myAuthor = new ResourceReferenceDt();
1125                }
1126                return myAuthor;
1127        }
1128
1129        /**
1130         * Sets the value(s) for <b>author</b> (who.actor)
1131         *
1132     * <p>
1133     * <b>Definition:</b>
1134     * Indicates whose goal this is - patient goal, practitioner goal, etc.
1135     * </p> 
1136         */
1137        public Goal setAuthor(ResourceReferenceDt theValue) {
1138                myAuthor = theValue;
1139                return this;
1140        }
1141        
1142        
1143
1144  
1145        /**
1146         * Gets the value(s) for <b>priority</b> ().
1147         * creating it if it does
1148         * not exist. Will not return <code>null</code>.
1149         *
1150     * <p>
1151     * <b>Definition:</b>
1152     * Identifies the mutually agreed level of importance associated with reaching/sustaining the goal
1153     * </p> 
1154         */
1155        public BoundCodeableConceptDt<GoalPriorityEnum> getPriority() {  
1156                if (myPriority == null) {
1157                        myPriority = new BoundCodeableConceptDt<GoalPriorityEnum>(GoalPriorityEnum.VALUESET_BINDER);
1158                }
1159                return myPriority;
1160        }
1161
1162        /**
1163         * Sets the value(s) for <b>priority</b> ()
1164         *
1165     * <p>
1166     * <b>Definition:</b>
1167     * Identifies the mutually agreed level of importance associated with reaching/sustaining the goal
1168     * </p> 
1169         */
1170        public Goal setPriority(BoundCodeableConceptDt<GoalPriorityEnum> theValue) {
1171                myPriority = theValue;
1172                return this;
1173        }
1174        
1175        
1176
1177        /**
1178         * Sets the value(s) for <b>priority</b> ()
1179         *
1180     * <p>
1181     * <b>Definition:</b>
1182     * Identifies the mutually agreed level of importance associated with reaching/sustaining the goal
1183     * </p> 
1184         */
1185        public Goal setPriority(GoalPriorityEnum theValue) {
1186                setPriority(new BoundCodeableConceptDt<GoalPriorityEnum>(GoalPriorityEnum.VALUESET_BINDER, theValue));
1187                
1188/*
1189                getPriority().setValueAsEnum(theValue);
1190*/
1191                return this;
1192        }
1193
1194  
1195        /**
1196         * Gets the value(s) for <b>addresses</b> ().
1197         * creating it if it does
1198         * not exist. Will not return <code>null</code>.
1199         *
1200     * <p>
1201     * <b>Definition:</b>
1202     * The identified conditions and other health record elements that are intended to be addressed by the goal
1203     * </p> 
1204         */
1205        public java.util.List<ResourceReferenceDt> getAddresses() {  
1206                if (myAddresses == null) {
1207                        myAddresses = new java.util.ArrayList<ResourceReferenceDt>();
1208                }
1209                return myAddresses;
1210        }
1211
1212        /**
1213         * Sets the value(s) for <b>addresses</b> ()
1214         *
1215     * <p>
1216     * <b>Definition:</b>
1217     * The identified conditions and other health record elements that are intended to be addressed by the goal
1218     * </p> 
1219         */
1220        public Goal setAddresses(java.util.List<ResourceReferenceDt> theValue) {
1221                myAddresses = theValue;
1222                return this;
1223        }
1224        
1225        
1226
1227        /**
1228         * Adds and returns a new value for <b>addresses</b> ()
1229         *
1230     * <p>
1231     * <b>Definition:</b>
1232     * The identified conditions and other health record elements that are intended to be addressed by the goal
1233     * </p> 
1234         */
1235        public ResourceReferenceDt addAddresses() {
1236                ResourceReferenceDt newType = new ResourceReferenceDt();
1237                getAddresses().add(newType);
1238                return newType; 
1239        }
1240  
1241        /**
1242         * Gets the value(s) for <b>note</b> ().
1243         * creating it if it does
1244         * not exist. Will not return <code>null</code>.
1245         *
1246     * <p>
1247     * <b>Definition:</b>
1248     * Any comments related to the goal
1249     * </p> 
1250         */
1251        public java.util.List<AnnotationDt> getNote() {  
1252                if (myNote == null) {
1253                        myNote = new java.util.ArrayList<AnnotationDt>();
1254                }
1255                return myNote;
1256        }
1257
1258        /**
1259         * Sets the value(s) for <b>note</b> ()
1260         *
1261     * <p>
1262     * <b>Definition:</b>
1263     * Any comments related to the goal
1264     * </p> 
1265         */
1266        public Goal setNote(java.util.List<AnnotationDt> theValue) {
1267                myNote = theValue;
1268                return this;
1269        }
1270        
1271        
1272
1273        /**
1274         * Adds and returns a new value for <b>note</b> ()
1275         *
1276     * <p>
1277     * <b>Definition:</b>
1278     * Any comments related to the goal
1279     * </p> 
1280         */
1281        public AnnotationDt addNote() {
1282                AnnotationDt newType = new AnnotationDt();
1283                getNote().add(newType);
1284                return newType; 
1285        }
1286
1287        /**
1288         * Adds a given new value for <b>note</b> ()
1289         *
1290         * <p>
1291         * <b>Definition:</b>
1292         * Any comments related to the goal
1293         * </p>
1294         * @param theValue The note to add (must not be <code>null</code>)
1295         */
1296        public Goal addNote(AnnotationDt theValue) {
1297                if (theValue == null) {
1298                        throw new NullPointerException("theValue must not be null");
1299                }
1300                getNote().add(theValue);
1301                return this;
1302        }
1303
1304        /**
1305         * Gets the first repetition for <b>note</b> (),
1306         * creating it if it does not already exist.
1307         *
1308     * <p>
1309     * <b>Definition:</b>
1310     * Any comments related to the goal
1311     * </p> 
1312         */
1313        public AnnotationDt getNoteFirstRep() {
1314                if (getNote().isEmpty()) {
1315                        return addNote();
1316                }
1317                return getNote().get(0); 
1318        }
1319  
1320        /**
1321         * Gets the value(s) for <b>outcome</b> ().
1322         * creating it if it does
1323         * not exist. Will not return <code>null</code>.
1324         *
1325     * <p>
1326     * <b>Definition:</b>
1327     * Identifies the change (or lack of change) at the point where the goal was deepmed to be cancelled or achieved.
1328     * </p> 
1329         */
1330        public java.util.List<Outcome> getOutcome() {  
1331                if (myOutcome == null) {
1332                        myOutcome = new java.util.ArrayList<Outcome>();
1333                }
1334                return myOutcome;
1335        }
1336
1337        /**
1338         * Sets the value(s) for <b>outcome</b> ()
1339         *
1340     * <p>
1341     * <b>Definition:</b>
1342     * Identifies the change (or lack of change) at the point where the goal was deepmed to be cancelled or achieved.
1343     * </p> 
1344         */
1345        public Goal setOutcome(java.util.List<Outcome> theValue) {
1346                myOutcome = theValue;
1347                return this;
1348        }
1349        
1350        
1351
1352        /**
1353         * Adds and returns a new value for <b>outcome</b> ()
1354         *
1355     * <p>
1356     * <b>Definition:</b>
1357     * Identifies the change (or lack of change) at the point where the goal was deepmed to be cancelled or achieved.
1358     * </p> 
1359         */
1360        public Outcome addOutcome() {
1361                Outcome newType = new Outcome();
1362                getOutcome().add(newType);
1363                return newType; 
1364        }
1365
1366        /**
1367         * Adds a given new value for <b>outcome</b> ()
1368         *
1369         * <p>
1370         * <b>Definition:</b>
1371         * Identifies the change (or lack of change) at the point where the goal was deepmed to be cancelled or achieved.
1372         * </p>
1373         * @param theValue The outcome to add (must not be <code>null</code>)
1374         */
1375        public Goal addOutcome(Outcome theValue) {
1376                if (theValue == null) {
1377                        throw new NullPointerException("theValue must not be null");
1378                }
1379                getOutcome().add(theValue);
1380                return this;
1381        }
1382
1383        /**
1384         * Gets the first repetition for <b>outcome</b> (),
1385         * creating it if it does not already exist.
1386         *
1387     * <p>
1388     * <b>Definition:</b>
1389     * Identifies the change (or lack of change) at the point where the goal was deepmed to be cancelled or achieved.
1390     * </p> 
1391         */
1392        public Outcome getOutcomeFirstRep() {
1393                if (getOutcome().isEmpty()) {
1394                        return addOutcome();
1395                }
1396                return getOutcome().get(0); 
1397        }
1398  
1399        /**
1400         * Block class for child element: <b>Goal.outcome</b> ()
1401         *
1402     * <p>
1403     * <b>Definition:</b>
1404     * Identifies the change (or lack of change) at the point where the goal was deepmed to be cancelled or achieved.
1405     * </p> 
1406         */
1407        @Block()        
1408        public static class Outcome 
1409            extends  BaseIdentifiableElement        implements IResourceBlock {
1410        
1411        @Child(name="result", order=0, min=0, max=1, summary=false, modifier=false, type={
1412                CodeableConceptDt.class,                Observation.class       })
1413        @Description(
1414                shortDefinition="",
1415                formalDefinition="Details of what's changed (or not changed)"
1416        )
1417        private IDatatype myResult;
1418        
1419
1420        @Override
1421        public boolean isEmpty() {
1422                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myResult);
1423        }
1424        
1425        @Override
1426        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1427                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myResult);
1428        }
1429
1430        /**
1431         * Gets the value(s) for <b>result[x]</b> ().
1432         * creating it if it does
1433         * not exist. Will not return <code>null</code>.
1434         *
1435     * <p>
1436     * <b>Definition:</b>
1437     * Details of what's changed (or not changed)
1438     * </p> 
1439         */
1440        public IDatatype getResult() {  
1441                return myResult;
1442        }
1443
1444        /**
1445         * Sets the value(s) for <b>result[x]</b> ()
1446         *
1447     * <p>
1448     * <b>Definition:</b>
1449     * Details of what's changed (or not changed)
1450     * </p> 
1451         */
1452        public Outcome setResult(IDatatype theValue) {
1453                myResult = theValue;
1454                return this;
1455        }
1456        
1457        
1458
1459  
1460
1461
1462        }
1463
1464
1465
1466
1467    @Override
1468    public String getResourceName() {
1469        return "Goal";
1470    }
1471    
1472    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
1473        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
1474    }
1475
1476
1477}