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>Group</b> Resource
320 * (administrative.group)
321 *
322 * <p>
323 * <b>Definition:</b>
324 * Represents a defined collection of entities that may be discussed or acted upon collectively but which are not expected to act collectively and are not formally or legally recognized; i.e. a collection of entities that isn't an Organization.
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/Group">http://hl7.org/fhir/profiles/Group</a> 
335 * </p>
336 *
337 */
338@ResourceDef(name="Group", profile="http://hl7.org/fhir/profiles/Group", id="group")
339public class Group extends ca.uhn.fhir.model.dstu2.resource.BaseResource
340    implements  IResource     {
341
342        /**
343         * Search parameter constant for <b>type</b>
344         * <p>
345         * Description: <b>The type of resources the group contains</b><br>
346         * Type: <b>token</b><br>
347         * Path: <b>Group.type</b><br>
348         * </p>
349         */
350        @SearchParamDefinition(name="type", path="Group.type", description="The type of resources the group contains", type="token"  )
351        public static final String SP_TYPE = "type";
352
353        /**
354         * <b>Fluent Client</b> search parameter constant for <b>type</b>
355         * <p>
356         * Description: <b>The type of resources the group contains</b><br>
357         * Type: <b>token</b><br>
358         * Path: <b>Group.type</b><br>
359         * </p>
360         */
361        public static final TokenClientParam TYPE = new TokenClientParam(SP_TYPE);
362
363        /**
364         * Search parameter constant for <b>code</b>
365         * <p>
366         * Description: <b>The kind of resources contained</b><br>
367         * Type: <b>token</b><br>
368         * Path: <b>Group.code</b><br>
369         * </p>
370         */
371        @SearchParamDefinition(name="code", path="Group.code", description="The kind of resources contained", type="token"  )
372        public static final String SP_CODE = "code";
373
374        /**
375         * <b>Fluent Client</b> search parameter constant for <b>code</b>
376         * <p>
377         * Description: <b>The kind of resources contained</b><br>
378         * Type: <b>token</b><br>
379         * Path: <b>Group.code</b><br>
380         * </p>
381         */
382        public static final TokenClientParam CODE = new TokenClientParam(SP_CODE);
383
384        /**
385         * Search parameter constant for <b>actual</b>
386         * <p>
387         * Description: <b></b><br>
388         * Type: <b>token</b><br>
389         * Path: <b>Group.actual</b><br>
390         * </p>
391         */
392        @SearchParamDefinition(name="actual", path="Group.actual", description="", type="token"  )
393        public static final String SP_ACTUAL = "actual";
394
395        /**
396         * <b>Fluent Client</b> search parameter constant for <b>actual</b>
397         * <p>
398         * Description: <b></b><br>
399         * Type: <b>token</b><br>
400         * Path: <b>Group.actual</b><br>
401         * </p>
402         */
403        public static final TokenClientParam ACTUAL = new TokenClientParam(SP_ACTUAL);
404
405        /**
406         * Search parameter constant for <b>identifier</b>
407         * <p>
408         * Description: <b></b><br>
409         * Type: <b>token</b><br>
410         * Path: <b>Group.identifier</b><br>
411         * </p>
412         */
413        @SearchParamDefinition(name="identifier", path="Group.identifier", description="", type="token"  )
414        public static final String SP_IDENTIFIER = "identifier";
415
416        /**
417         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
418         * <p>
419         * Description: <b></b><br>
420         * Type: <b>token</b><br>
421         * Path: <b>Group.identifier</b><br>
422         * </p>
423         */
424        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
425
426        /**
427         * Search parameter constant for <b>member</b>
428         * <p>
429         * Description: <b></b><br>
430         * Type: <b>reference</b><br>
431         * Path: <b>Group.member.entity</b><br>
432         * </p>
433         */
434        @SearchParamDefinition(name="member", path="Group.member.entity", description="", type="reference"  )
435        public static final String SP_MEMBER = "member";
436
437        /**
438         * <b>Fluent Client</b> search parameter constant for <b>member</b>
439         * <p>
440         * Description: <b></b><br>
441         * Type: <b>reference</b><br>
442         * Path: <b>Group.member.entity</b><br>
443         * </p>
444         */
445        public static final ReferenceClientParam MEMBER = new ReferenceClientParam(SP_MEMBER);
446
447        /**
448         * Search parameter constant for <b>characteristic</b>
449         * <p>
450         * Description: <b></b><br>
451         * Type: <b>token</b><br>
452         * Path: <b>Group.characteristic.code</b><br>
453         * </p>
454         */
455        @SearchParamDefinition(name="characteristic", path="Group.characteristic.code", description="", type="token"  )
456        public static final String SP_CHARACTERISTIC = "characteristic";
457
458        /**
459         * <b>Fluent Client</b> search parameter constant for <b>characteristic</b>
460         * <p>
461         * Description: <b></b><br>
462         * Type: <b>token</b><br>
463         * Path: <b>Group.characteristic.code</b><br>
464         * </p>
465         */
466        public static final TokenClientParam CHARACTERISTIC = new TokenClientParam(SP_CHARACTERISTIC);
467
468        /**
469         * Search parameter constant for <b>value</b>
470         * <p>
471         * Description: <b></b><br>
472         * Type: <b>token</b><br>
473         * Path: <b>Group.characteristic.value[x]</b><br>
474         * </p>
475         */
476        @SearchParamDefinition(name="value", path="Group.characteristic.value[x]", description="", type="token"  )
477        public static final String SP_VALUE = "value";
478
479        /**
480         * <b>Fluent Client</b> search parameter constant for <b>value</b>
481         * <p>
482         * Description: <b></b><br>
483         * Type: <b>token</b><br>
484         * Path: <b>Group.characteristic.value[x]</b><br>
485         * </p>
486         */
487        public static final TokenClientParam VALUE = new TokenClientParam(SP_VALUE);
488
489        /**
490         * Search parameter constant for <b>exclude</b>
491         * <p>
492         * Description: <b></b><br>
493         * Type: <b>token</b><br>
494         * Path: <b>Group.characteristic.exclude</b><br>
495         * </p>
496         */
497        @SearchParamDefinition(name="exclude", path="Group.characteristic.exclude", description="", type="token"  )
498        public static final String SP_EXCLUDE = "exclude";
499
500        /**
501         * <b>Fluent Client</b> search parameter constant for <b>exclude</b>
502         * <p>
503         * Description: <b></b><br>
504         * Type: <b>token</b><br>
505         * Path: <b>Group.characteristic.exclude</b><br>
506         * </p>
507         */
508        public static final TokenClientParam EXCLUDE = new TokenClientParam(SP_EXCLUDE);
509
510        /**
511         * Search parameter constant for <b>characteristic-value</b>
512         * <p>
513         * Description: <b>A composite of both characteristic and value</b><br>
514         * Type: <b>composite</b><br>
515         * Path: <b>characteristic &amp; value</b><br>
516         * </p>
517         */
518        @SearchParamDefinition(name="characteristic-value", path="characteristic & value", description="A composite of both characteristic and value", type="composite"  , compositeOf={  "characteristic",  "value" }  )
519        public static final String SP_CHARACTERISTIC_VALUE = "characteristic-value";
520
521        /**
522         * <b>Fluent Client</b> search parameter constant for <b>characteristic-value</b>
523         * <p>
524         * Description: <b>A composite of both characteristic and value</b><br>
525         * Type: <b>composite</b><br>
526         * Path: <b>characteristic &amp; value</b><br>
527         * </p>
528         */
529        public static final CompositeClientParam<TokenClientParam, TokenClientParam> CHARACTERISTIC_VALUE = new CompositeClientParam<TokenClientParam, TokenClientParam>(SP_CHARACTERISTIC_VALUE);
530
531
532        /**
533         * Constant for fluent queries to be used to add include statements. Specifies
534         * the path value of "<b>Group:member</b>".
535         */
536        public static final Include INCLUDE_MEMBER = new Include("Group:member");
537
538
539        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)       
540        @Description(
541                shortDefinition="id",
542                formalDefinition="A unique business identifier for this group"
543        )
544        private java.util.List<IdentifierDt> myIdentifier;
545        
546        @Child(name="type", type=CodeDt.class, order=1, min=1, max=1, summary=true, modifier=false)     
547        @Description(
548                shortDefinition="class",
549                formalDefinition="Identifies the broad classification of the kind of resources the group includes"
550        )
551        private BoundCodeDt<GroupTypeEnum> myType;
552        
553        @Child(name="actual", type=BooleanDt.class, order=2, min=1, max=1, summary=true, modifier=false)        
554        @Description(
555                shortDefinition="",
556                formalDefinition="If true, indicates that the resource refers to a specific group of real individuals.  If false, the group defines a set of intended individuals"
557        )
558        private BooleanDt myActual;
559        
560        @Child(name="code", type=CodeableConceptDt.class, order=3, min=0, max=1, summary=true, modifier=false)  
561        @Description(
562                shortDefinition="",
563                formalDefinition="Provides a specific type of resource the group includes; e.g. \"cow\", \"syringe\", etc."
564        )
565        private CodeableConceptDt myCode;
566        
567        @Child(name="name", type=StringDt.class, order=4, min=0, max=1, summary=true, modifier=false)   
568        @Description(
569                shortDefinition="",
570                formalDefinition="A label assigned to the group for human identification and communication"
571        )
572        private StringDt myName;
573        
574        @Child(name="quantity", type=UnsignedIntDt.class, order=5, min=0, max=1, summary=true, modifier=false)  
575        @Description(
576                shortDefinition="",
577                formalDefinition="A count of the number of resource instances that are part of the group"
578        )
579        private UnsignedIntDt myQuantity;
580        
581        @Child(name="characteristic", order=6, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
582        @Description(
583                shortDefinition="",
584                formalDefinition="Identifies the traits shared by members of the group"
585        )
586        private java.util.List<Characteristic> myCharacteristic;
587        
588        @Child(name="member", order=7, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
589        @Description(
590                shortDefinition="",
591                formalDefinition="Identifies the resource instances that are members of the group."
592        )
593        private java.util.List<Member> myMember;
594        
595
596        @Override
597        public boolean isEmpty() {
598                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myType,  myActual,  myCode,  myName,  myQuantity,  myCharacteristic,  myMember);
599        }
600        
601        @Override
602        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
603                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myType, myActual, myCode, myName, myQuantity, myCharacteristic, myMember);
604        }
605
606        /**
607         * Gets the value(s) for <b>identifier</b> (id).
608         * creating it if it does
609         * not exist. Will not return <code>null</code>.
610         *
611     * <p>
612     * <b>Definition:</b>
613     * A unique business identifier for this group
614     * </p> 
615         */
616        public java.util.List<IdentifierDt> getIdentifier() {  
617                if (myIdentifier == null) {
618                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
619                }
620                return myIdentifier;
621        }
622
623        /**
624         * Sets the value(s) for <b>identifier</b> (id)
625         *
626     * <p>
627     * <b>Definition:</b>
628     * A unique business identifier for this group
629     * </p> 
630         */
631        public Group setIdentifier(java.util.List<IdentifierDt> theValue) {
632                myIdentifier = theValue;
633                return this;
634        }
635        
636        
637
638        /**
639         * Adds and returns a new value for <b>identifier</b> (id)
640         *
641     * <p>
642     * <b>Definition:</b>
643     * A unique business identifier for this group
644     * </p> 
645         */
646        public IdentifierDt addIdentifier() {
647                IdentifierDt newType = new IdentifierDt();
648                getIdentifier().add(newType);
649                return newType; 
650        }
651
652        /**
653         * Adds a given new value for <b>identifier</b> (id)
654         *
655         * <p>
656         * <b>Definition:</b>
657         * A unique business identifier for this group
658         * </p>
659         * @param theValue The identifier to add (must not be <code>null</code>)
660         */
661        public Group addIdentifier(IdentifierDt theValue) {
662                if (theValue == null) {
663                        throw new NullPointerException("theValue must not be null");
664                }
665                getIdentifier().add(theValue);
666                return this;
667        }
668
669        /**
670         * Gets the first repetition for <b>identifier</b> (id),
671         * creating it if it does not already exist.
672         *
673     * <p>
674     * <b>Definition:</b>
675     * A unique business identifier for this group
676     * </p> 
677         */
678        public IdentifierDt getIdentifierFirstRep() {
679                if (getIdentifier().isEmpty()) {
680                        return addIdentifier();
681                }
682                return getIdentifier().get(0); 
683        }
684  
685        /**
686         * Gets the value(s) for <b>type</b> (class).
687         * creating it if it does
688         * not exist. Will not return <code>null</code>.
689         *
690     * <p>
691     * <b>Definition:</b>
692     * Identifies the broad classification of the kind of resources the group includes
693     * </p> 
694         */
695        public BoundCodeDt<GroupTypeEnum> getTypeElement() {  
696                if (myType == null) {
697                        myType = new BoundCodeDt<GroupTypeEnum>(GroupTypeEnum.VALUESET_BINDER);
698                }
699                return myType;
700        }
701
702        
703        /**
704         * Gets the value(s) for <b>type</b> (class).
705         * creating it if it does
706         * not exist. Will not return <code>null</code>.
707         *
708     * <p>
709     * <b>Definition:</b>
710     * Identifies the broad classification of the kind of resources the group includes
711     * </p> 
712         */
713        public String getType() {  
714                return getTypeElement().getValue();
715        }
716
717        /**
718         * Sets the value(s) for <b>type</b> (class)
719         *
720     * <p>
721     * <b>Definition:</b>
722     * Identifies the broad classification of the kind of resources the group includes
723     * </p> 
724         */
725        public Group setType(BoundCodeDt<GroupTypeEnum> theValue) {
726                myType = theValue;
727                return this;
728        }
729        
730        
731
732        /**
733         * Sets the value(s) for <b>type</b> (class)
734         *
735     * <p>
736     * <b>Definition:</b>
737     * Identifies the broad classification of the kind of resources the group includes
738     * </p> 
739         */
740        public Group setType(GroupTypeEnum theValue) {
741                setType(new BoundCodeDt<GroupTypeEnum>(GroupTypeEnum.VALUESET_BINDER, theValue));
742                
743/*
744                getTypeElement().setValueAsEnum(theValue);
745*/
746                return this;
747        }
748
749  
750        /**
751         * Gets the value(s) for <b>actual</b> ().
752         * creating it if it does
753         * not exist. Will not return <code>null</code>.
754         *
755     * <p>
756     * <b>Definition:</b>
757     * If true, indicates that the resource refers to a specific group of real individuals.  If false, the group defines a set of intended individuals
758     * </p> 
759         */
760        public BooleanDt getActualElement() {  
761                if (myActual == null) {
762                        myActual = new BooleanDt();
763                }
764                return myActual;
765        }
766
767        
768        /**
769         * Gets the value(s) for <b>actual</b> ().
770         * creating it if it does
771         * not exist. Will not return <code>null</code>.
772         *
773     * <p>
774     * <b>Definition:</b>
775     * If true, indicates that the resource refers to a specific group of real individuals.  If false, the group defines a set of intended individuals
776     * </p> 
777         */
778        public Boolean getActual() {  
779                return getActualElement().getValue();
780        }
781
782        /**
783         * Sets the value(s) for <b>actual</b> ()
784         *
785     * <p>
786     * <b>Definition:</b>
787     * If true, indicates that the resource refers to a specific group of real individuals.  If false, the group defines a set of intended individuals
788     * </p> 
789         */
790        public Group setActual(BooleanDt theValue) {
791                myActual = theValue;
792                return this;
793        }
794        
795        
796
797        /**
798         * Sets the value for <b>actual</b> ()
799         *
800     * <p>
801     * <b>Definition:</b>
802     * If true, indicates that the resource refers to a specific group of real individuals.  If false, the group defines a set of intended individuals
803     * </p> 
804         */
805        public Group setActual( boolean theBoolean) {
806                myActual = new BooleanDt(theBoolean); 
807                return this; 
808        }
809
810 
811        /**
812         * Gets the value(s) for <b>code</b> ().
813         * creating it if it does
814         * not exist. Will not return <code>null</code>.
815         *
816     * <p>
817     * <b>Definition:</b>
818     * Provides a specific type of resource the group includes; e.g. \&quot;cow\&quot;, \&quot;syringe\&quot;, etc.
819     * </p> 
820         */
821        public CodeableConceptDt getCode() {  
822                if (myCode == null) {
823                        myCode = new CodeableConceptDt();
824                }
825                return myCode;
826        }
827
828        /**
829         * Sets the value(s) for <b>code</b> ()
830         *
831     * <p>
832     * <b>Definition:</b>
833     * Provides a specific type of resource the group includes; e.g. \&quot;cow\&quot;, \&quot;syringe\&quot;, etc.
834     * </p> 
835         */
836        public Group setCode(CodeableConceptDt theValue) {
837                myCode = theValue;
838                return this;
839        }
840        
841        
842
843  
844        /**
845         * Gets the value(s) for <b>name</b> ().
846         * creating it if it does
847         * not exist. Will not return <code>null</code>.
848         *
849     * <p>
850     * <b>Definition:</b>
851     * A label assigned to the group for human identification and communication
852     * </p> 
853         */
854        public StringDt getNameElement() {  
855                if (myName == null) {
856                        myName = new StringDt();
857                }
858                return myName;
859        }
860
861        
862        /**
863         * Gets the value(s) for <b>name</b> ().
864         * creating it if it does
865         * not exist. Will not return <code>null</code>.
866         *
867     * <p>
868     * <b>Definition:</b>
869     * A label assigned to the group for human identification and communication
870     * </p> 
871         */
872        public String getName() {  
873                return getNameElement().getValue();
874        }
875
876        /**
877         * Sets the value(s) for <b>name</b> ()
878         *
879     * <p>
880     * <b>Definition:</b>
881     * A label assigned to the group for human identification and communication
882     * </p> 
883         */
884        public Group setName(StringDt theValue) {
885                myName = theValue;
886                return this;
887        }
888        
889        
890
891        /**
892         * Sets the value for <b>name</b> ()
893         *
894     * <p>
895     * <b>Definition:</b>
896     * A label assigned to the group for human identification and communication
897     * </p> 
898         */
899        public Group setName( String theString) {
900                myName = new StringDt(theString); 
901                return this; 
902        }
903
904 
905        /**
906         * Gets the value(s) for <b>quantity</b> ().
907         * creating it if it does
908         * not exist. Will not return <code>null</code>.
909         *
910     * <p>
911     * <b>Definition:</b>
912     * A count of the number of resource instances that are part of the group
913     * </p> 
914         */
915        public UnsignedIntDt getQuantityElement() {  
916                if (myQuantity == null) {
917                        myQuantity = new UnsignedIntDt();
918                }
919                return myQuantity;
920        }
921
922        
923        /**
924         * Gets the value(s) for <b>quantity</b> ().
925         * creating it if it does
926         * not exist. Will not return <code>null</code>.
927         *
928     * <p>
929     * <b>Definition:</b>
930     * A count of the number of resource instances that are part of the group
931     * </p> 
932         */
933        public Integer getQuantity() {  
934                return getQuantityElement().getValue();
935        }
936
937        /**
938         * Sets the value(s) for <b>quantity</b> ()
939         *
940     * <p>
941     * <b>Definition:</b>
942     * A count of the number of resource instances that are part of the group
943     * </p> 
944         */
945        public Group setQuantity(UnsignedIntDt theValue) {
946                myQuantity = theValue;
947                return this;
948        }
949        
950        
951
952        /**
953         * Sets the value for <b>quantity</b> ()
954         *
955     * <p>
956     * <b>Definition:</b>
957     * A count of the number of resource instances that are part of the group
958     * </p> 
959         */
960        public Group setQuantity( int theInteger) {
961                myQuantity = new UnsignedIntDt(theInteger); 
962                return this; 
963        }
964
965 
966        /**
967         * Gets the value(s) for <b>characteristic</b> ().
968         * creating it if it does
969         * not exist. Will not return <code>null</code>.
970         *
971     * <p>
972     * <b>Definition:</b>
973     * Identifies the traits shared by members of the group
974     * </p> 
975         */
976        public java.util.List<Characteristic> getCharacteristic() {  
977                if (myCharacteristic == null) {
978                        myCharacteristic = new java.util.ArrayList<Characteristic>();
979                }
980                return myCharacteristic;
981        }
982
983        /**
984         * Sets the value(s) for <b>characteristic</b> ()
985         *
986     * <p>
987     * <b>Definition:</b>
988     * Identifies the traits shared by members of the group
989     * </p> 
990         */
991        public Group setCharacteristic(java.util.List<Characteristic> theValue) {
992                myCharacteristic = theValue;
993                return this;
994        }
995        
996        
997
998        /**
999         * Adds and returns a new value for <b>characteristic</b> ()
1000         *
1001     * <p>
1002     * <b>Definition:</b>
1003     * Identifies the traits shared by members of the group
1004     * </p> 
1005         */
1006        public Characteristic addCharacteristic() {
1007                Characteristic newType = new Characteristic();
1008                getCharacteristic().add(newType);
1009                return newType; 
1010        }
1011
1012        /**
1013         * Adds a given new value for <b>characteristic</b> ()
1014         *
1015         * <p>
1016         * <b>Definition:</b>
1017         * Identifies the traits shared by members of the group
1018         * </p>
1019         * @param theValue The characteristic to add (must not be <code>null</code>)
1020         */
1021        public Group addCharacteristic(Characteristic theValue) {
1022                if (theValue == null) {
1023                        throw new NullPointerException("theValue must not be null");
1024                }
1025                getCharacteristic().add(theValue);
1026                return this;
1027        }
1028
1029        /**
1030         * Gets the first repetition for <b>characteristic</b> (),
1031         * creating it if it does not already exist.
1032         *
1033     * <p>
1034     * <b>Definition:</b>
1035     * Identifies the traits shared by members of the group
1036     * </p> 
1037         */
1038        public Characteristic getCharacteristicFirstRep() {
1039                if (getCharacteristic().isEmpty()) {
1040                        return addCharacteristic();
1041                }
1042                return getCharacteristic().get(0); 
1043        }
1044  
1045        /**
1046         * Gets the value(s) for <b>member</b> ().
1047         * creating it if it does
1048         * not exist. Will not return <code>null</code>.
1049         *
1050     * <p>
1051     * <b>Definition:</b>
1052     * Identifies the resource instances that are members of the group.
1053     * </p> 
1054         */
1055        public java.util.List<Member> getMember() {  
1056                if (myMember == null) {
1057                        myMember = new java.util.ArrayList<Member>();
1058                }
1059                return myMember;
1060        }
1061
1062        /**
1063         * Sets the value(s) for <b>member</b> ()
1064         *
1065     * <p>
1066     * <b>Definition:</b>
1067     * Identifies the resource instances that are members of the group.
1068     * </p> 
1069         */
1070        public Group setMember(java.util.List<Member> theValue) {
1071                myMember = theValue;
1072                return this;
1073        }
1074        
1075        
1076
1077        /**
1078         * Adds and returns a new value for <b>member</b> ()
1079         *
1080     * <p>
1081     * <b>Definition:</b>
1082     * Identifies the resource instances that are members of the group.
1083     * </p> 
1084         */
1085        public Member addMember() {
1086                Member newType = new Member();
1087                getMember().add(newType);
1088                return newType; 
1089        }
1090
1091        /**
1092         * Adds a given new value for <b>member</b> ()
1093         *
1094         * <p>
1095         * <b>Definition:</b>
1096         * Identifies the resource instances that are members of the group.
1097         * </p>
1098         * @param theValue The member to add (must not be <code>null</code>)
1099         */
1100        public Group addMember(Member theValue) {
1101                if (theValue == null) {
1102                        throw new NullPointerException("theValue must not be null");
1103                }
1104                getMember().add(theValue);
1105                return this;
1106        }
1107
1108        /**
1109         * Gets the first repetition for <b>member</b> (),
1110         * creating it if it does not already exist.
1111         *
1112     * <p>
1113     * <b>Definition:</b>
1114     * Identifies the resource instances that are members of the group.
1115     * </p> 
1116         */
1117        public Member getMemberFirstRep() {
1118                if (getMember().isEmpty()) {
1119                        return addMember();
1120                }
1121                return getMember().get(0); 
1122        }
1123  
1124        /**
1125         * Block class for child element: <b>Group.characteristic</b> ()
1126         *
1127     * <p>
1128     * <b>Definition:</b>
1129     * Identifies the traits shared by members of the group
1130     * </p> 
1131         */
1132        @Block()        
1133        public static class Characteristic 
1134            extends  BaseIdentifiableElement        implements IResourceBlock {
1135        
1136        @Child(name="code", type=CodeableConceptDt.class, order=0, min=1, max=1, summary=false, modifier=false) 
1137        @Description(
1138                shortDefinition="",
1139                formalDefinition="A code that identifies the kind of trait being asserted"
1140        )
1141        private CodeableConceptDt myCode;
1142        
1143        @Child(name="value", order=1, min=1, max=1, summary=false, modifier=false, type={
1144                CodeableConceptDt.class,                BooleanDt.class,                QuantityDt.class,               RangeDt.class   })
1145        @Description(
1146                shortDefinition="",
1147                formalDefinition="The value of the trait that holds (or does not hold - see 'exclude') for members of the group"
1148        )
1149        private IDatatype myValue;
1150        
1151        @Child(name="exclude", type=BooleanDt.class, order=2, min=1, max=1, summary=false, modifier=true)       
1152        @Description(
1153                shortDefinition="",
1154                formalDefinition="If true, indicates the characteristic is one that is NOT held by members of the group"
1155        )
1156        private BooleanDt myExclude;
1157        
1158        @Child(name="period", type=PeriodDt.class, order=3, min=0, max=1, summary=false, modifier=false)        
1159        @Description(
1160                shortDefinition="",
1161                formalDefinition="The period over which the characteristic is tested; e.g. the patient had an operation during the month of June"
1162        )
1163        private PeriodDt myPeriod;
1164        
1165
1166        @Override
1167        public boolean isEmpty() {
1168                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCode,  myValue,  myExclude,  myPeriod);
1169        }
1170        
1171        @Override
1172        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1173                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCode, myValue, myExclude, myPeriod);
1174        }
1175
1176        /**
1177         * Gets the value(s) for <b>code</b> ().
1178         * creating it if it does
1179         * not exist. Will not return <code>null</code>.
1180         *
1181     * <p>
1182     * <b>Definition:</b>
1183     * A code that identifies the kind of trait being asserted
1184     * </p> 
1185         */
1186        public CodeableConceptDt getCode() {  
1187                if (myCode == null) {
1188                        myCode = new CodeableConceptDt();
1189                }
1190                return myCode;
1191        }
1192
1193        /**
1194         * Sets the value(s) for <b>code</b> ()
1195         *
1196     * <p>
1197     * <b>Definition:</b>
1198     * A code that identifies the kind of trait being asserted
1199     * </p> 
1200         */
1201        public Characteristic setCode(CodeableConceptDt theValue) {
1202                myCode = theValue;
1203                return this;
1204        }
1205        
1206        
1207
1208  
1209        /**
1210         * Gets the value(s) for <b>value[x]</b> ().
1211         * creating it if it does
1212         * not exist. Will not return <code>null</code>.
1213         *
1214     * <p>
1215     * <b>Definition:</b>
1216     * The value of the trait that holds (or does not hold - see 'exclude') for members of the group
1217     * </p> 
1218         */
1219        public IDatatype getValue() {  
1220                return myValue;
1221        }
1222
1223        /**
1224         * Sets the value(s) for <b>value[x]</b> ()
1225         *
1226     * <p>
1227     * <b>Definition:</b>
1228     * The value of the trait that holds (or does not hold - see 'exclude') for members of the group
1229     * </p> 
1230         */
1231        public Characteristic setValue(IDatatype theValue) {
1232                myValue = theValue;
1233                return this;
1234        }
1235        
1236        
1237
1238  
1239        /**
1240         * Gets the value(s) for <b>exclude</b> ().
1241         * creating it if it does
1242         * not exist. Will not return <code>null</code>.
1243         *
1244     * <p>
1245     * <b>Definition:</b>
1246     * If true, indicates the characteristic is one that is NOT held by members of the group
1247     * </p> 
1248         */
1249        public BooleanDt getExcludeElement() {  
1250                if (myExclude == null) {
1251                        myExclude = new BooleanDt();
1252                }
1253                return myExclude;
1254        }
1255
1256        
1257        /**
1258         * Gets the value(s) for <b>exclude</b> ().
1259         * creating it if it does
1260         * not exist. Will not return <code>null</code>.
1261         *
1262     * <p>
1263     * <b>Definition:</b>
1264     * If true, indicates the characteristic is one that is NOT held by members of the group
1265     * </p> 
1266         */
1267        public Boolean getExclude() {  
1268                return getExcludeElement().getValue();
1269        }
1270
1271        /**
1272         * Sets the value(s) for <b>exclude</b> ()
1273         *
1274     * <p>
1275     * <b>Definition:</b>
1276     * If true, indicates the characteristic is one that is NOT held by members of the group
1277     * </p> 
1278         */
1279        public Characteristic setExclude(BooleanDt theValue) {
1280                myExclude = theValue;
1281                return this;
1282        }
1283        
1284        
1285
1286        /**
1287         * Sets the value for <b>exclude</b> ()
1288         *
1289     * <p>
1290     * <b>Definition:</b>
1291     * If true, indicates the characteristic is one that is NOT held by members of the group
1292     * </p> 
1293         */
1294        public Characteristic setExclude( boolean theBoolean) {
1295                myExclude = new BooleanDt(theBoolean); 
1296                return this; 
1297        }
1298
1299 
1300        /**
1301         * Gets the value(s) for <b>period</b> ().
1302         * creating it if it does
1303         * not exist. Will not return <code>null</code>.
1304         *
1305     * <p>
1306     * <b>Definition:</b>
1307     * The period over which the characteristic is tested; e.g. the patient had an operation during the month of June
1308     * </p> 
1309         */
1310        public PeriodDt getPeriod() {  
1311                if (myPeriod == null) {
1312                        myPeriod = new PeriodDt();
1313                }
1314                return myPeriod;
1315        }
1316
1317        /**
1318         * Sets the value(s) for <b>period</b> ()
1319         *
1320     * <p>
1321     * <b>Definition:</b>
1322     * The period over which the characteristic is tested; e.g. the patient had an operation during the month of June
1323     * </p> 
1324         */
1325        public Characteristic setPeriod(PeriodDt theValue) {
1326                myPeriod = theValue;
1327                return this;
1328        }
1329        
1330        
1331
1332  
1333
1334
1335        }
1336
1337
1338        /**
1339         * Block class for child element: <b>Group.member</b> ()
1340         *
1341     * <p>
1342     * <b>Definition:</b>
1343     * Identifies the resource instances that are members of the group.
1344     * </p> 
1345         */
1346        @Block()        
1347        public static class Member 
1348            extends  BaseIdentifiableElement        implements IResourceBlock {
1349        
1350        @Child(name="entity", order=0, min=1, max=1, summary=false, modifier=false, type={
1351                ca.uhn.fhir.model.dstu2.resource.Patient.class,                 ca.uhn.fhir.model.dstu2.resource.Practitioner.class,            ca.uhn.fhir.model.dstu2.resource.Device.class,          ca.uhn.fhir.model.dstu2.resource.Medication.class,              ca.uhn.fhir.model.dstu2.resource.Substance.class        })
1352        @Description(
1353                shortDefinition="",
1354                formalDefinition="A reference to the entity that is a member of the group. Must be consistent with Group.type"
1355        )
1356        private ResourceReferenceDt myEntity;
1357        
1358        @Child(name="period", type=PeriodDt.class, order=1, min=0, max=1, summary=false, modifier=false)        
1359        @Description(
1360                shortDefinition="",
1361                formalDefinition="The period that the member was in the group, if known"
1362        )
1363        private PeriodDt myPeriod;
1364        
1365        @Child(name="inactive", type=BooleanDt.class, order=2, min=0, max=1, summary=false, modifier=false)     
1366        @Description(
1367                shortDefinition="",
1368                formalDefinition="A flag to indicate that the member is no longer in the group, but previously may have been a member"
1369        )
1370        private BooleanDt myInactive;
1371        
1372
1373        @Override
1374        public boolean isEmpty() {
1375                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myEntity,  myPeriod,  myInactive);
1376        }
1377        
1378        @Override
1379        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1380                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myEntity, myPeriod, myInactive);
1381        }
1382
1383        /**
1384         * Gets the value(s) for <b>entity</b> ().
1385         * creating it if it does
1386         * not exist. Will not return <code>null</code>.
1387         *
1388     * <p>
1389     * <b>Definition:</b>
1390     * A reference to the entity that is a member of the group. Must be consistent with Group.type
1391     * </p> 
1392         */
1393        public ResourceReferenceDt getEntity() {  
1394                if (myEntity == null) {
1395                        myEntity = new ResourceReferenceDt();
1396                }
1397                return myEntity;
1398        }
1399
1400        /**
1401         * Sets the value(s) for <b>entity</b> ()
1402         *
1403     * <p>
1404     * <b>Definition:</b>
1405     * A reference to the entity that is a member of the group. Must be consistent with Group.type
1406     * </p> 
1407         */
1408        public Member setEntity(ResourceReferenceDt theValue) {
1409                myEntity = theValue;
1410                return this;
1411        }
1412        
1413        
1414
1415  
1416        /**
1417         * Gets the value(s) for <b>period</b> ().
1418         * creating it if it does
1419         * not exist. Will not return <code>null</code>.
1420         *
1421     * <p>
1422     * <b>Definition:</b>
1423     * The period that the member was in the group, if known
1424     * </p> 
1425         */
1426        public PeriodDt getPeriod() {  
1427                if (myPeriod == null) {
1428                        myPeriod = new PeriodDt();
1429                }
1430                return myPeriod;
1431        }
1432
1433        /**
1434         * Sets the value(s) for <b>period</b> ()
1435         *
1436     * <p>
1437     * <b>Definition:</b>
1438     * The period that the member was in the group, if known
1439     * </p> 
1440         */
1441        public Member setPeriod(PeriodDt theValue) {
1442                myPeriod = theValue;
1443                return this;
1444        }
1445        
1446        
1447
1448  
1449        /**
1450         * Gets the value(s) for <b>inactive</b> ().
1451         * creating it if it does
1452         * not exist. Will not return <code>null</code>.
1453         *
1454     * <p>
1455     * <b>Definition:</b>
1456     * A flag to indicate that the member is no longer in the group, but previously may have been a member
1457     * </p> 
1458         */
1459        public BooleanDt getInactiveElement() {  
1460                if (myInactive == null) {
1461                        myInactive = new BooleanDt();
1462                }
1463                return myInactive;
1464        }
1465
1466        
1467        /**
1468         * Gets the value(s) for <b>inactive</b> ().
1469         * creating it if it does
1470         * not exist. Will not return <code>null</code>.
1471         *
1472     * <p>
1473     * <b>Definition:</b>
1474     * A flag to indicate that the member is no longer in the group, but previously may have been a member
1475     * </p> 
1476         */
1477        public Boolean getInactive() {  
1478                return getInactiveElement().getValue();
1479        }
1480
1481        /**
1482         * Sets the value(s) for <b>inactive</b> ()
1483         *
1484     * <p>
1485     * <b>Definition:</b>
1486     * A flag to indicate that the member is no longer in the group, but previously may have been a member
1487     * </p> 
1488         */
1489        public Member setInactive(BooleanDt theValue) {
1490                myInactive = theValue;
1491                return this;
1492        }
1493        
1494        
1495
1496        /**
1497         * Sets the value for <b>inactive</b> ()
1498         *
1499     * <p>
1500     * <b>Definition:</b>
1501     * A flag to indicate that the member is no longer in the group, but previously may have been a member
1502     * </p> 
1503         */
1504        public Member setInactive( boolean theBoolean) {
1505                myInactive = new BooleanDt(theBoolean); 
1506                return this; 
1507        }
1508
1509 
1510
1511
1512        }
1513
1514
1515
1516
1517    @Override
1518    public String getResourceName() {
1519        return "Group";
1520    }
1521    
1522    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
1523        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
1524    }
1525
1526
1527}