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>StructureDefinition</b> Resource
320 * (conformance.content)
321 *
322 * <p>
323 * <b>Definition:</b>
324 * A definition of a FHIR structure. This resource is used to describe the underlying resources, data types defined in FHIR, and also for describing extensions, and constraints on resources and data types.
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/StructureDefinition">http://hl7.org/fhir/profiles/StructureDefinition</a> 
335 * </p>
336 *
337 */
338@ResourceDef(name="StructureDefinition", profile="http://hl7.org/fhir/profiles/StructureDefinition", id="structuredefinition")
339public class StructureDefinition extends ca.uhn.fhir.model.dstu2.resource.BaseResource
340    implements  IResource     {
341
342        /**
343         * Search parameter constant for <b>url</b>
344         * <p>
345         * Description: <b></b><br>
346         * Type: <b>uri</b><br>
347         * Path: <b>StructureDefinition.url</b><br>
348         * </p>
349         */
350        @SearchParamDefinition(name="url", path="StructureDefinition.url", description="", type="uri"  )
351        public static final String SP_URL = "url";
352
353        /**
354         * <b>Fluent Client</b> search parameter constant for <b>url</b>
355         * <p>
356         * Description: <b></b><br>
357         * Type: <b>uri</b><br>
358         * Path: <b>StructureDefinition.url</b><br>
359         * </p>
360         */
361        public static final UriClientParam URL = new UriClientParam(SP_URL);
362
363        /**
364         * Search parameter constant for <b>identifier</b>
365         * <p>
366         * Description: <b>The identifier of the profile</b><br>
367         * Type: <b>token</b><br>
368         * Path: <b>StructureDefinition.identifier</b><br>
369         * </p>
370         */
371        @SearchParamDefinition(name="identifier", path="StructureDefinition.identifier", description="The identifier of the profile", type="token"  )
372        public static final String SP_IDENTIFIER = "identifier";
373
374        /**
375         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
376         * <p>
377         * Description: <b>The identifier of the profile</b><br>
378         * Type: <b>token</b><br>
379         * Path: <b>StructureDefinition.identifier</b><br>
380         * </p>
381         */
382        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
383
384        /**
385         * Search parameter constant for <b>version</b>
386         * <p>
387         * Description: <b>The version identifier of the profile</b><br>
388         * Type: <b>token</b><br>
389         * Path: <b>StructureDefinition.version</b><br>
390         * </p>
391         */
392        @SearchParamDefinition(name="version", path="StructureDefinition.version", description="The version identifier of the profile", type="token"  )
393        public static final String SP_VERSION = "version";
394
395        /**
396         * <b>Fluent Client</b> search parameter constant for <b>version</b>
397         * <p>
398         * Description: <b>The version identifier of the profile</b><br>
399         * Type: <b>token</b><br>
400         * Path: <b>StructureDefinition.version</b><br>
401         * </p>
402         */
403        public static final TokenClientParam VERSION = new TokenClientParam(SP_VERSION);
404
405        /**
406         * Search parameter constant for <b>name</b>
407         * <p>
408         * Description: <b>Name of the profile</b><br>
409         * Type: <b>string</b><br>
410         * Path: <b>StructureDefinition.name</b><br>
411         * </p>
412         */
413        @SearchParamDefinition(name="name", path="StructureDefinition.name", description="Name of the profile", type="string"  )
414        public static final String SP_NAME = "name";
415
416        /**
417         * <b>Fluent Client</b> search parameter constant for <b>name</b>
418         * <p>
419         * Description: <b>Name of the profile</b><br>
420         * Type: <b>string</b><br>
421         * Path: <b>StructureDefinition.name</b><br>
422         * </p>
423         */
424        public static final StringClientParam NAME = new StringClientParam(SP_NAME);
425
426        /**
427         * Search parameter constant for <b>publisher</b>
428         * <p>
429         * Description: <b>Name of the publisher of the profile</b><br>
430         * Type: <b>string</b><br>
431         * Path: <b>StructureDefinition.publisher</b><br>
432         * </p>
433         */
434        @SearchParamDefinition(name="publisher", path="StructureDefinition.publisher", description="Name of the publisher of the profile", type="string"  )
435        public static final String SP_PUBLISHER = "publisher";
436
437        /**
438         * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
439         * <p>
440         * Description: <b>Name of the publisher of the profile</b><br>
441         * Type: <b>string</b><br>
442         * Path: <b>StructureDefinition.publisher</b><br>
443         * </p>
444         */
445        public static final StringClientParam PUBLISHER = new StringClientParam(SP_PUBLISHER);
446
447        /**
448         * Search parameter constant for <b>description</b>
449         * <p>
450         * Description: <b>Text search in the description of the profile</b><br>
451         * Type: <b>string</b><br>
452         * Path: <b>StructureDefinition.description</b><br>
453         * </p>
454         */
455        @SearchParamDefinition(name="description", path="StructureDefinition.description", description="Text search in the description of the profile", type="string"  )
456        public static final String SP_DESCRIPTION = "description";
457
458        /**
459         * <b>Fluent Client</b> search parameter constant for <b>description</b>
460         * <p>
461         * Description: <b>Text search in the description of the profile</b><br>
462         * Type: <b>string</b><br>
463         * Path: <b>StructureDefinition.description</b><br>
464         * </p>
465         */
466        public static final StringClientParam DESCRIPTION = new StringClientParam(SP_DESCRIPTION);
467
468        /**
469         * Search parameter constant for <b>status</b>
470         * <p>
471         * Description: <b>The current status of the profile</b><br>
472         * Type: <b>token</b><br>
473         * Path: <b>StructureDefinition.status</b><br>
474         * </p>
475         */
476        @SearchParamDefinition(name="status", path="StructureDefinition.status", description="The current status of the profile", type="token"  )
477        public static final String SP_STATUS = "status";
478
479        /**
480         * <b>Fluent Client</b> search parameter constant for <b>status</b>
481         * <p>
482         * Description: <b>The current status of the profile</b><br>
483         * Type: <b>token</b><br>
484         * Path: <b>StructureDefinition.status</b><br>
485         * </p>
486         */
487        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
488
489        /**
490         * Search parameter constant for <b>date</b>
491         * <p>
492         * Description: <b>The profile publication date</b><br>
493         * Type: <b>date</b><br>
494         * Path: <b>StructureDefinition.date</b><br>
495         * </p>
496         */
497        @SearchParamDefinition(name="date", path="StructureDefinition.date", description="The profile publication date", type="date"  )
498        public static final String SP_DATE = "date";
499
500        /**
501         * <b>Fluent Client</b> search parameter constant for <b>date</b>
502         * <p>
503         * Description: <b>The profile publication date</b><br>
504         * Type: <b>date</b><br>
505         * Path: <b>StructureDefinition.date</b><br>
506         * </p>
507         */
508        public static final DateClientParam DATE = new DateClientParam(SP_DATE);
509
510        /**
511         * Search parameter constant for <b>code</b>
512         * <p>
513         * Description: <b>A code for the profile</b><br>
514         * Type: <b>token</b><br>
515         * Path: <b>StructureDefinition.code</b><br>
516         * </p>
517         */
518        @SearchParamDefinition(name="code", path="StructureDefinition.code", description="A code for the profile", type="token"  )
519        public static final String SP_CODE = "code";
520
521        /**
522         * <b>Fluent Client</b> search parameter constant for <b>code</b>
523         * <p>
524         * Description: <b>A code for the profile</b><br>
525         * Type: <b>token</b><br>
526         * Path: <b>StructureDefinition.code</b><br>
527         * </p>
528         */
529        public static final TokenClientParam CODE = new TokenClientParam(SP_CODE);
530
531        /**
532         * Search parameter constant for <b>valueset</b>
533         * <p>
534         * Description: <b>A vocabulary binding reference</b><br>
535         * Type: <b>reference</b><br>
536         * Path: <b>StructureDefinition.snapshot.element.binding.valueSet[x]</b><br>
537         * </p>
538         */
539        @SearchParamDefinition(name="valueset", path="StructureDefinition.snapshot.element.binding.valueSet[x]", description="A vocabulary binding reference", type="reference"  )
540        public static final String SP_VALUESET = "valueset";
541
542        /**
543         * <b>Fluent Client</b> search parameter constant for <b>valueset</b>
544         * <p>
545         * Description: <b>A vocabulary binding reference</b><br>
546         * Type: <b>reference</b><br>
547         * Path: <b>StructureDefinition.snapshot.element.binding.valueSet[x]</b><br>
548         * </p>
549         */
550        public static final ReferenceClientParam VALUESET = new ReferenceClientParam(SP_VALUESET);
551
552        /**
553         * Search parameter constant for <b>type</b>
554         * <p>
555         * Description: <b></b><br>
556         * Type: <b>token</b><br>
557         * Path: <b>StructureDefinition.constrainedType</b><br>
558         * </p>
559         */
560        @SearchParamDefinition(name="type", path="StructureDefinition.constrainedType", description="", type="token"  )
561        public static final String SP_TYPE = "type";
562
563        /**
564         * <b>Fluent Client</b> search parameter constant for <b>type</b>
565         * <p>
566         * Description: <b></b><br>
567         * Type: <b>token</b><br>
568         * Path: <b>StructureDefinition.constrainedType</b><br>
569         * </p>
570         */
571        public static final TokenClientParam TYPE = new TokenClientParam(SP_TYPE);
572
573        /**
574         * Search parameter constant for <b>kind</b>
575         * <p>
576         * Description: <b></b><br>
577         * Type: <b>token</b><br>
578         * Path: <b>StructureDefinition.kind</b><br>
579         * </p>
580         */
581        @SearchParamDefinition(name="kind", path="StructureDefinition.kind", description="", type="token"  )
582        public static final String SP_KIND = "kind";
583
584        /**
585         * <b>Fluent Client</b> search parameter constant for <b>kind</b>
586         * <p>
587         * Description: <b></b><br>
588         * Type: <b>token</b><br>
589         * Path: <b>StructureDefinition.kind</b><br>
590         * </p>
591         */
592        public static final TokenClientParam KIND = new TokenClientParam(SP_KIND);
593
594        /**
595         * Search parameter constant for <b>path</b>
596         * <p>
597         * Description: <b>A path that is constrained in the profile</b><br>
598         * Type: <b>token</b><br>
599         * Path: <b>StructureDefinition.snapshot.element.path | StructureDefinition.differential.element.path </b><br>
600         * </p>
601         */
602        @SearchParamDefinition(name="path", path="StructureDefinition.snapshot.element.path | StructureDefinition.differential.element.path ", description="A path that is constrained in the profile", type="token"  )
603        public static final String SP_PATH = "path";
604
605        /**
606         * <b>Fluent Client</b> search parameter constant for <b>path</b>
607         * <p>
608         * Description: <b>A path that is constrained in the profile</b><br>
609         * Type: <b>token</b><br>
610         * Path: <b>StructureDefinition.snapshot.element.path | StructureDefinition.differential.element.path </b><br>
611         * </p>
612         */
613        public static final TokenClientParam PATH = new TokenClientParam(SP_PATH);
614
615        /**
616         * Search parameter constant for <b>context</b>
617         * <p>
618         * Description: <b>A use context assigned to the structure</b><br>
619         * Type: <b>token</b><br>
620         * Path: <b>StructureDefinition.useContext</b><br>
621         * </p>
622         */
623        @SearchParamDefinition(name="context", path="StructureDefinition.useContext", description="A use context assigned to the structure", type="token"  )
624        public static final String SP_CONTEXT = "context";
625
626        /**
627         * <b>Fluent Client</b> search parameter constant for <b>context</b>
628         * <p>
629         * Description: <b>A use context assigned to the structure</b><br>
630         * Type: <b>token</b><br>
631         * Path: <b>StructureDefinition.useContext</b><br>
632         * </p>
633         */
634        public static final TokenClientParam CONTEXT = new TokenClientParam(SP_CONTEXT);
635
636        /**
637         * Search parameter constant for <b>display</b>
638         * <p>
639         * Description: <b></b><br>
640         * Type: <b>string</b><br>
641         * Path: <b>StructureDefinition.display</b><br>
642         * </p>
643         */
644        @SearchParamDefinition(name="display", path="StructureDefinition.display", description="", type="string"  )
645        public static final String SP_DISPLAY = "display";
646
647        /**
648         * <b>Fluent Client</b> search parameter constant for <b>display</b>
649         * <p>
650         * Description: <b></b><br>
651         * Type: <b>string</b><br>
652         * Path: <b>StructureDefinition.display</b><br>
653         * </p>
654         */
655        public static final StringClientParam DISPLAY = new StringClientParam(SP_DISPLAY);
656
657        /**
658         * Search parameter constant for <b>experimental</b>
659         * <p>
660         * Description: <b></b><br>
661         * Type: <b>token</b><br>
662         * Path: <b>StructureDefinition.experimental</b><br>
663         * </p>
664         */
665        @SearchParamDefinition(name="experimental", path="StructureDefinition.experimental", description="", type="token"  )
666        public static final String SP_EXPERIMENTAL = "experimental";
667
668        /**
669         * <b>Fluent Client</b> search parameter constant for <b>experimental</b>
670         * <p>
671         * Description: <b></b><br>
672         * Type: <b>token</b><br>
673         * Path: <b>StructureDefinition.experimental</b><br>
674         * </p>
675         */
676        public static final TokenClientParam EXPERIMENTAL = new TokenClientParam(SP_EXPERIMENTAL);
677
678        /**
679         * Search parameter constant for <b>abstract</b>
680         * <p>
681         * Description: <b></b><br>
682         * Type: <b>token</b><br>
683         * Path: <b>StructureDefinition.abstract</b><br>
684         * </p>
685         */
686        @SearchParamDefinition(name="abstract", path="StructureDefinition.abstract", description="", type="token"  )
687        public static final String SP_ABSTRACT = "abstract";
688
689        /**
690         * <b>Fluent Client</b> search parameter constant for <b>abstract</b>
691         * <p>
692         * Description: <b></b><br>
693         * Type: <b>token</b><br>
694         * Path: <b>StructureDefinition.abstract</b><br>
695         * </p>
696         */
697        public static final TokenClientParam ABSTRACT = new TokenClientParam(SP_ABSTRACT);
698
699        /**
700         * Search parameter constant for <b>context-type</b>
701         * <p>
702         * Description: <b></b><br>
703         * Type: <b>token</b><br>
704         * Path: <b>StructureDefinition.contextType</b><br>
705         * </p>
706         */
707        @SearchParamDefinition(name="context-type", path="StructureDefinition.contextType", description="", type="token"  )
708        public static final String SP_CONTEXT_TYPE = "context-type";
709
710        /**
711         * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
712         * <p>
713         * Description: <b></b><br>
714         * Type: <b>token</b><br>
715         * Path: <b>StructureDefinition.contextType</b><br>
716         * </p>
717         */
718        public static final TokenClientParam CONTEXT_TYPE = new TokenClientParam(SP_CONTEXT_TYPE);
719
720        /**
721         * Search parameter constant for <b>ext-context</b>
722         * <p>
723         * Description: <b></b><br>
724         * Type: <b>string</b><br>
725         * Path: <b>StructureDefinition.context</b><br>
726         * </p>
727         */
728        @SearchParamDefinition(name="ext-context", path="StructureDefinition.context", description="", type="string"  )
729        public static final String SP_EXT_CONTEXT = "ext-context";
730
731        /**
732         * <b>Fluent Client</b> search parameter constant for <b>ext-context</b>
733         * <p>
734         * Description: <b></b><br>
735         * Type: <b>string</b><br>
736         * Path: <b>StructureDefinition.context</b><br>
737         * </p>
738         */
739        public static final StringClientParam EXT_CONTEXT = new StringClientParam(SP_EXT_CONTEXT);
740
741        /**
742         * Search parameter constant for <b>base</b>
743         * <p>
744         * Description: <b></b><br>
745         * Type: <b>uri</b><br>
746         * Path: <b>StructureDefinition.base</b><br>
747         * </p>
748         */
749        @SearchParamDefinition(name="base", path="StructureDefinition.base", description="", type="uri"  )
750        public static final String SP_BASE = "base";
751
752        /**
753         * <b>Fluent Client</b> search parameter constant for <b>base</b>
754         * <p>
755         * Description: <b></b><br>
756         * Type: <b>uri</b><br>
757         * Path: <b>StructureDefinition.base</b><br>
758         * </p>
759         */
760        public static final UriClientParam BASE = new UriClientParam(SP_BASE);
761
762        /**
763         * Search parameter constant for <b>base-path</b>
764         * <p>
765         * Description: <b></b><br>
766         * Type: <b>token</b><br>
767         * Path: <b>StructureDefinition.snapshot.element.base.path | StructureDefinition.differential.element.base.path </b><br>
768         * </p>
769         */
770        @SearchParamDefinition(name="base-path", path="StructureDefinition.snapshot.element.base.path | StructureDefinition.differential.element.base.path ", description="", type="token"  )
771        public static final String SP_BASE_PATH = "base-path";
772
773        /**
774         * <b>Fluent Client</b> search parameter constant for <b>base-path</b>
775         * <p>
776         * Description: <b></b><br>
777         * Type: <b>token</b><br>
778         * Path: <b>StructureDefinition.snapshot.element.base.path | StructureDefinition.differential.element.base.path </b><br>
779         * </p>
780         */
781        public static final TokenClientParam BASE_PATH = new TokenClientParam(SP_BASE_PATH);
782
783
784        /**
785         * Constant for fluent queries to be used to add include statements. Specifies
786         * the path value of "<b>StructureDefinition:valueset</b>".
787         */
788        public static final Include INCLUDE_VALUESET = new Include("StructureDefinition:valueset");
789
790
791        @Child(name="url", type=UriDt.class, order=0, min=1, max=1, summary=true, modifier=false)       
792        @Description(
793                shortDefinition="id",
794                formalDefinition="An absolute URL that is used to identify this structure definition when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this structure definition is (or will be) published"
795        )
796        private UriDt myUrl;
797        
798        @Child(name="identifier", type=IdentifierDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)       
799        @Description(
800                shortDefinition="id",
801                formalDefinition="Formal identifier that is used to identify this StructureDefinition when it is represented in other formats, or referenced in a specification, model, design or an instance  (should be globally unique OID, UUID, or URI), (if it's not possible to use the literal URI)"
802        )
803        private java.util.List<IdentifierDt> myIdentifier;
804        
805        @Child(name="version", type=StringDt.class, order=2, min=0, max=1, summary=true, modifier=false)        
806        @Description(
807                shortDefinition="id.version",
808                formalDefinition="The identifier that is used to identify this version of the StructureDefinition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the StructureDefinition author manually"
809        )
810        private StringDt myVersion;
811        
812        @Child(name="name", type=StringDt.class, order=3, min=1, max=1, summary=true, modifier=false)   
813        @Description(
814                shortDefinition="",
815                formalDefinition="A free text natural language name identifying the StructureDefinition"
816        )
817        private StringDt myName;
818        
819        @Child(name="display", type=StringDt.class, order=4, min=0, max=1, summary=true, modifier=false)        
820        @Description(
821                shortDefinition="",
822                formalDefinition="Defined so that applications can use this name when displaying the value of the extension to the user"
823        )
824        private StringDt myDisplay;
825        
826        @Child(name="status", type=CodeDt.class, order=5, min=1, max=1, summary=true, modifier=false)   
827        @Description(
828                shortDefinition="status",
829                formalDefinition="The status of the StructureDefinition"
830        )
831        private BoundCodeDt<ConformanceResourceStatusEnum> myStatus;
832        
833        @Child(name="experimental", type=BooleanDt.class, order=6, min=0, max=1, summary=true, modifier=false)  
834        @Description(
835                shortDefinition="class",
836                formalDefinition="This StructureDefinition was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage"
837        )
838        private BooleanDt myExperimental;
839        
840        @Child(name="publisher", type=StringDt.class, order=7, min=0, max=1, summary=true, modifier=false)      
841        @Description(
842                shortDefinition="who.witness",
843                formalDefinition="The name of the individual or organization that published the structure definition"
844        )
845        private StringDt myPublisher;
846        
847        @Child(name="contact", order=8, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
848        @Description(
849                shortDefinition="",
850                formalDefinition="Contacts to assist a user in finding and communicating with the publisher"
851        )
852        private java.util.List<Contact> myContact;
853        
854        @Child(name="date", type=DateTimeDt.class, order=9, min=0, max=1, summary=true, modifier=false) 
855        @Description(
856                shortDefinition="when.recorded",
857                formalDefinition="The date this version of the structure definition was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the structure definition changes"
858        )
859        private DateTimeDt myDate;
860        
861        @Child(name="description", type=StringDt.class, order=10, min=0, max=1, summary=true, modifier=false)   
862        @Description(
863                shortDefinition="",
864                formalDefinition="A free text natural language description of the StructureDefinition and its use"
865        )
866        private StringDt myDescription;
867        
868        @Child(name="useContext", type=CodeableConceptDt.class, order=11, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false) 
869        @Description(
870                shortDefinition="",
871                formalDefinition="The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of structure definitions."
872        )
873        private java.util.List<CodeableConceptDt> myUseContext;
874        
875        @Child(name="requirements", type=StringDt.class, order=12, min=0, max=1, summary=false, modifier=false) 
876        @Description(
877                shortDefinition="why",
878                formalDefinition="Explains why this structure definition is needed and why it's been constrained as it has"
879        )
880        private StringDt myRequirements;
881        
882        @Child(name="copyright", type=StringDt.class, order=13, min=0, max=1, summary=false, modifier=false)    
883        @Description(
884                shortDefinition="",
885                formalDefinition="A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings"
886        )
887        private StringDt myCopyright;
888        
889        @Child(name="code", type=CodingDt.class, order=14, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
890        @Description(
891                shortDefinition="",
892                formalDefinition="A set of terms from external terminologies that may be used to assist with indexing and searching of templates."
893        )
894        private java.util.List<CodingDt> myCode;
895        
896        @Child(name="fhirVersion", type=IdDt.class, order=15, min=0, max=1, summary=true, modifier=false)       
897        @Description(
898                shortDefinition="",
899                formalDefinition="The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is $version$ for this version"
900        )
901        private IdDt myFhirVersion;
902        
903        @Child(name="mapping", order=16, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
904        @Description(
905                shortDefinition="",
906                formalDefinition="An external specification that the content is mapped to"
907        )
908        private java.util.List<Mapping> myMapping;
909        
910        @Child(name="kind", type=CodeDt.class, order=17, min=1, max=1, summary=true, modifier=false)    
911        @Description(
912                shortDefinition="",
913                formalDefinition="Defines the kind of structure that this definition is describing"
914        )
915        private BoundCodeDt<StructureDefinitionKindEnum> myKind;
916        
917        @Child(name="constrainedType", type=CodeDt.class, order=18, min=0, max=1, summary=true, modifier=false) 
918        @Description(
919                shortDefinition="",
920                formalDefinition="The type of type that is being constrained - a data type, an extension, a resource, including abstract ones. If this field is present, it indicates that the structure definition is a constraint. If it is not present, then the structure definition is the definition of a base structure"
921        )
922        private CodeDt myConstrainedType;
923        
924        @Child(name="abstract", type=BooleanDt.class, order=19, min=1, max=1, summary=true, modifier=false)     
925        @Description(
926                shortDefinition="",
927                formalDefinition="Whether structure this definition describes is abstract or not  - that is, whether an actual exchanged item can ever be of this type"
928        )
929        private BooleanDt myAbstract;
930        
931        @Child(name="contextType", type=CodeDt.class, order=20, min=0, max=1, summary=true, modifier=false)     
932        @Description(
933                shortDefinition="",
934                formalDefinition="If this is an extension, Identifies the context within FHIR resources where the extension can be used"
935        )
936        private BoundCodeDt<ExtensionContextEnum> myContextType;
937        
938        @Child(name="context", type=StringDt.class, order=21, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)     
939        @Description(
940                shortDefinition="",
941                formalDefinition="Identifies the types of resource or data type elements to which the extension can be applied"
942        )
943        private java.util.List<StringDt> myContext;
944        
945        @Child(name="base", type=UriDt.class, order=22, min=0, max=1, summary=true, modifier=false)     
946        @Description(
947                shortDefinition="",
948                formalDefinition="An absolute URI that is the base structure from which this set of constraints is derived"
949        )
950        private UriDt myBase;
951        
952        @Child(name="snapshot", order=23, min=0, max=1, summary=false, modifier=false)  
953        @Description(
954                shortDefinition="",
955                formalDefinition="A snapshot view is expressed in a stand alone form that can be used and interpreted without considering the base StructureDefinition"
956        )
957        private Snapshot mySnapshot;
958        
959        @Child(name="differential", order=24, min=0, max=1, summary=false, modifier=false)      
960        @Description(
961                shortDefinition="",
962                formalDefinition="A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies"
963        )
964        private Differential myDifferential;
965        
966
967        @Override
968        public boolean isEmpty() {
969                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myUrl,  myIdentifier,  myVersion,  myName,  myDisplay,  myStatus,  myExperimental,  myPublisher,  myContact,  myDate,  myDescription,  myUseContext,  myRequirements,  myCopyright,  myCode,  myFhirVersion,  myMapping,  myKind,  myConstrainedType,  myAbstract,  myContextType,  myContext,  myBase,  mySnapshot,  myDifferential);
970        }
971        
972        @Override
973        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
974                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myUrl, myIdentifier, myVersion, myName, myDisplay, myStatus, myExperimental, myPublisher, myContact, myDate, myDescription, myUseContext, myRequirements, myCopyright, myCode, myFhirVersion, myMapping, myKind, myConstrainedType, myAbstract, myContextType, myContext, myBase, mySnapshot, myDifferential);
975        }
976
977        /**
978         * Gets the value(s) for <b>url</b> (id).
979         * creating it if it does
980         * not exist. Will not return <code>null</code>.
981         *
982     * <p>
983     * <b>Definition:</b>
984     * An absolute URL that is used to identify this structure definition when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this structure definition is (or will be) published
985     * </p> 
986         */
987        public UriDt getUrlElement() {  
988                if (myUrl == null) {
989                        myUrl = new UriDt();
990                }
991                return myUrl;
992        }
993
994        
995        /**
996         * Gets the value(s) for <b>url</b> (id).
997         * creating it if it does
998         * not exist. Will not return <code>null</code>.
999         *
1000     * <p>
1001     * <b>Definition:</b>
1002     * An absolute URL that is used to identify this structure definition when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this structure definition is (or will be) published
1003     * </p> 
1004         */
1005        public String getUrl() {  
1006                return getUrlElement().getValue();
1007        }
1008
1009        /**
1010         * Sets the value(s) for <b>url</b> (id)
1011         *
1012     * <p>
1013     * <b>Definition:</b>
1014     * An absolute URL that is used to identify this structure definition when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this structure definition is (or will be) published
1015     * </p> 
1016         */
1017        public StructureDefinition setUrl(UriDt theValue) {
1018                myUrl = theValue;
1019                return this;
1020        }
1021        
1022        
1023
1024        /**
1025         * Sets the value for <b>url</b> (id)
1026         *
1027     * <p>
1028     * <b>Definition:</b>
1029     * An absolute URL that is used to identify this structure definition when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this structure definition is (or will be) published
1030     * </p> 
1031         */
1032        public StructureDefinition setUrl( String theUri) {
1033                myUrl = new UriDt(theUri); 
1034                return this; 
1035        }
1036
1037 
1038        /**
1039         * Gets the value(s) for <b>identifier</b> (id).
1040         * creating it if it does
1041         * not exist. Will not return <code>null</code>.
1042         *
1043     * <p>
1044     * <b>Definition:</b>
1045     * Formal identifier that is used to identify this StructureDefinition when it is represented in other formats, or referenced in a specification, model, design or an instance  (should be globally unique OID, UUID, or URI), (if it's not possible to use the literal URI)
1046     * </p> 
1047         */
1048        public java.util.List<IdentifierDt> getIdentifier() {  
1049                if (myIdentifier == null) {
1050                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
1051                }
1052                return myIdentifier;
1053        }
1054
1055        /**
1056         * Sets the value(s) for <b>identifier</b> (id)
1057         *
1058     * <p>
1059     * <b>Definition:</b>
1060     * Formal identifier that is used to identify this StructureDefinition when it is represented in other formats, or referenced in a specification, model, design or an instance  (should be globally unique OID, UUID, or URI), (if it's not possible to use the literal URI)
1061     * </p> 
1062         */
1063        public StructureDefinition setIdentifier(java.util.List<IdentifierDt> theValue) {
1064                myIdentifier = theValue;
1065                return this;
1066        }
1067        
1068        
1069
1070        /**
1071         * Adds and returns a new value for <b>identifier</b> (id)
1072         *
1073     * <p>
1074     * <b>Definition:</b>
1075     * Formal identifier that is used to identify this StructureDefinition when it is represented in other formats, or referenced in a specification, model, design or an instance  (should be globally unique OID, UUID, or URI), (if it's not possible to use the literal URI)
1076     * </p> 
1077         */
1078        public IdentifierDt addIdentifier() {
1079                IdentifierDt newType = new IdentifierDt();
1080                getIdentifier().add(newType);
1081                return newType; 
1082        }
1083
1084        /**
1085         * Adds a given new value for <b>identifier</b> (id)
1086         *
1087         * <p>
1088         * <b>Definition:</b>
1089         * Formal identifier that is used to identify this StructureDefinition when it is represented in other formats, or referenced in a specification, model, design or an instance  (should be globally unique OID, UUID, or URI), (if it's not possible to use the literal URI)
1090         * </p>
1091         * @param theValue The identifier to add (must not be <code>null</code>)
1092         */
1093        public StructureDefinition addIdentifier(IdentifierDt theValue) {
1094                if (theValue == null) {
1095                        throw new NullPointerException("theValue must not be null");
1096                }
1097                getIdentifier().add(theValue);
1098                return this;
1099        }
1100
1101        /**
1102         * Gets the first repetition for <b>identifier</b> (id),
1103         * creating it if it does not already exist.
1104         *
1105     * <p>
1106     * <b>Definition:</b>
1107     * Formal identifier that is used to identify this StructureDefinition when it is represented in other formats, or referenced in a specification, model, design or an instance  (should be globally unique OID, UUID, or URI), (if it's not possible to use the literal URI)
1108     * </p> 
1109         */
1110        public IdentifierDt getIdentifierFirstRep() {
1111                if (getIdentifier().isEmpty()) {
1112                        return addIdentifier();
1113                }
1114                return getIdentifier().get(0); 
1115        }
1116  
1117        /**
1118         * Gets the value(s) for <b>version</b> (id.version).
1119         * creating it if it does
1120         * not exist. Will not return <code>null</code>.
1121         *
1122     * <p>
1123     * <b>Definition:</b>
1124     * The identifier that is used to identify this version of the StructureDefinition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the StructureDefinition author manually
1125     * </p> 
1126         */
1127        public StringDt getVersionElement() {  
1128                if (myVersion == null) {
1129                        myVersion = new StringDt();
1130                }
1131                return myVersion;
1132        }
1133
1134        
1135        /**
1136         * Gets the value(s) for <b>version</b> (id.version).
1137         * creating it if it does
1138         * not exist. Will not return <code>null</code>.
1139         *
1140     * <p>
1141     * <b>Definition:</b>
1142     * The identifier that is used to identify this version of the StructureDefinition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the StructureDefinition author manually
1143     * </p> 
1144         */
1145        public String getVersion() {  
1146                return getVersionElement().getValue();
1147        }
1148
1149        /**
1150         * Sets the value(s) for <b>version</b> (id.version)
1151         *
1152     * <p>
1153     * <b>Definition:</b>
1154     * The identifier that is used to identify this version of the StructureDefinition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the StructureDefinition author manually
1155     * </p> 
1156         */
1157        public StructureDefinition setVersion(StringDt theValue) {
1158                myVersion = theValue;
1159                return this;
1160        }
1161        
1162        
1163
1164        /**
1165         * Sets the value for <b>version</b> (id.version)
1166         *
1167     * <p>
1168     * <b>Definition:</b>
1169     * The identifier that is used to identify this version of the StructureDefinition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the StructureDefinition author manually
1170     * </p> 
1171         */
1172        public StructureDefinition setVersion( String theString) {
1173                myVersion = new StringDt(theString); 
1174                return this; 
1175        }
1176
1177 
1178        /**
1179         * Gets the value(s) for <b>name</b> ().
1180         * creating it if it does
1181         * not exist. Will not return <code>null</code>.
1182         *
1183     * <p>
1184     * <b>Definition:</b>
1185     * A free text natural language name identifying the StructureDefinition
1186     * </p> 
1187         */
1188        public StringDt getNameElement() {  
1189                if (myName == null) {
1190                        myName = new StringDt();
1191                }
1192                return myName;
1193        }
1194
1195        
1196        /**
1197         * Gets the value(s) for <b>name</b> ().
1198         * creating it if it does
1199         * not exist. Will not return <code>null</code>.
1200         *
1201     * <p>
1202     * <b>Definition:</b>
1203     * A free text natural language name identifying the StructureDefinition
1204     * </p> 
1205         */
1206        public String getName() {  
1207                return getNameElement().getValue();
1208        }
1209
1210        /**
1211         * Sets the value(s) for <b>name</b> ()
1212         *
1213     * <p>
1214     * <b>Definition:</b>
1215     * A free text natural language name identifying the StructureDefinition
1216     * </p> 
1217         */
1218        public StructureDefinition setName(StringDt theValue) {
1219                myName = theValue;
1220                return this;
1221        }
1222        
1223        
1224
1225        /**
1226         * Sets the value for <b>name</b> ()
1227         *
1228     * <p>
1229     * <b>Definition:</b>
1230     * A free text natural language name identifying the StructureDefinition
1231     * </p> 
1232         */
1233        public StructureDefinition setName( String theString) {
1234                myName = new StringDt(theString); 
1235                return this; 
1236        }
1237
1238 
1239        /**
1240         * Gets the value(s) for <b>display</b> ().
1241         * creating it if it does
1242         * not exist. Will not return <code>null</code>.
1243         *
1244     * <p>
1245     * <b>Definition:</b>
1246     * Defined so that applications can use this name when displaying the value of the extension to the user
1247     * </p> 
1248         */
1249        public StringDt getDisplayElement() {  
1250                if (myDisplay == null) {
1251                        myDisplay = new StringDt();
1252                }
1253                return myDisplay;
1254        }
1255
1256        
1257        /**
1258         * Gets the value(s) for <b>display</b> ().
1259         * creating it if it does
1260         * not exist. Will not return <code>null</code>.
1261         *
1262     * <p>
1263     * <b>Definition:</b>
1264     * Defined so that applications can use this name when displaying the value of the extension to the user
1265     * </p> 
1266         */
1267        public String getDisplay() {  
1268                return getDisplayElement().getValue();
1269        }
1270
1271        /**
1272         * Sets the value(s) for <b>display</b> ()
1273         *
1274     * <p>
1275     * <b>Definition:</b>
1276     * Defined so that applications can use this name when displaying the value of the extension to the user
1277     * </p> 
1278         */
1279        public StructureDefinition setDisplay(StringDt theValue) {
1280                myDisplay = theValue;
1281                return this;
1282        }
1283        
1284        
1285
1286        /**
1287         * Sets the value for <b>display</b> ()
1288         *
1289     * <p>
1290     * <b>Definition:</b>
1291     * Defined so that applications can use this name when displaying the value of the extension to the user
1292     * </p> 
1293         */
1294        public StructureDefinition setDisplay( String theString) {
1295                myDisplay = new StringDt(theString); 
1296                return this; 
1297        }
1298
1299 
1300        /**
1301         * Gets the value(s) for <b>status</b> (status).
1302         * creating it if it does
1303         * not exist. Will not return <code>null</code>.
1304         *
1305     * <p>
1306     * <b>Definition:</b>
1307     * The status of the StructureDefinition
1308     * </p> 
1309         */
1310        public BoundCodeDt<ConformanceResourceStatusEnum> getStatusElement() {  
1311                if (myStatus == null) {
1312                        myStatus = new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER);
1313                }
1314                return myStatus;
1315        }
1316
1317        
1318        /**
1319         * Gets the value(s) for <b>status</b> (status).
1320         * creating it if it does
1321         * not exist. Will not return <code>null</code>.
1322         *
1323     * <p>
1324     * <b>Definition:</b>
1325     * The status of the StructureDefinition
1326     * </p> 
1327         */
1328        public String getStatus() {  
1329                return getStatusElement().getValue();
1330        }
1331
1332        /**
1333         * Sets the value(s) for <b>status</b> (status)
1334         *
1335     * <p>
1336     * <b>Definition:</b>
1337     * The status of the StructureDefinition
1338     * </p> 
1339         */
1340        public StructureDefinition setStatus(BoundCodeDt<ConformanceResourceStatusEnum> theValue) {
1341                myStatus = theValue;
1342                return this;
1343        }
1344        
1345        
1346
1347        /**
1348         * Sets the value(s) for <b>status</b> (status)
1349         *
1350     * <p>
1351     * <b>Definition:</b>
1352     * The status of the StructureDefinition
1353     * </p> 
1354         */
1355        public StructureDefinition setStatus(ConformanceResourceStatusEnum theValue) {
1356                setStatus(new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER, theValue));
1357                
1358/*
1359                getStatusElement().setValueAsEnum(theValue);
1360*/
1361                return this;
1362        }
1363
1364  
1365        /**
1366         * Gets the value(s) for <b>experimental</b> (class).
1367         * creating it if it does
1368         * not exist. Will not return <code>null</code>.
1369         *
1370     * <p>
1371     * <b>Definition:</b>
1372     * This StructureDefinition was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1373     * </p> 
1374         */
1375        public BooleanDt getExperimentalElement() {  
1376                if (myExperimental == null) {
1377                        myExperimental = new BooleanDt();
1378                }
1379                return myExperimental;
1380        }
1381
1382        
1383        /**
1384         * Gets the value(s) for <b>experimental</b> (class).
1385         * creating it if it does
1386         * not exist. Will not return <code>null</code>.
1387         *
1388     * <p>
1389     * <b>Definition:</b>
1390     * This StructureDefinition was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1391     * </p> 
1392         */
1393        public Boolean getExperimental() {  
1394                return getExperimentalElement().getValue();
1395        }
1396
1397        /**
1398         * Sets the value(s) for <b>experimental</b> (class)
1399         *
1400     * <p>
1401     * <b>Definition:</b>
1402     * This StructureDefinition was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1403     * </p> 
1404         */
1405        public StructureDefinition setExperimental(BooleanDt theValue) {
1406                myExperimental = theValue;
1407                return this;
1408        }
1409        
1410        
1411
1412        /**
1413         * Sets the value for <b>experimental</b> (class)
1414         *
1415     * <p>
1416     * <b>Definition:</b>
1417     * This StructureDefinition was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1418     * </p> 
1419         */
1420        public StructureDefinition setExperimental( boolean theBoolean) {
1421                myExperimental = new BooleanDt(theBoolean); 
1422                return this; 
1423        }
1424
1425 
1426        /**
1427         * Gets the value(s) for <b>publisher</b> (who.witness).
1428         * creating it if it does
1429         * not exist. Will not return <code>null</code>.
1430         *
1431     * <p>
1432     * <b>Definition:</b>
1433     * The name of the individual or organization that published the structure definition
1434     * </p> 
1435         */
1436        public StringDt getPublisherElement() {  
1437                if (myPublisher == null) {
1438                        myPublisher = new StringDt();
1439                }
1440                return myPublisher;
1441        }
1442
1443        
1444        /**
1445         * Gets the value(s) for <b>publisher</b> (who.witness).
1446         * creating it if it does
1447         * not exist. Will not return <code>null</code>.
1448         *
1449     * <p>
1450     * <b>Definition:</b>
1451     * The name of the individual or organization that published the structure definition
1452     * </p> 
1453         */
1454        public String getPublisher() {  
1455                return getPublisherElement().getValue();
1456        }
1457
1458        /**
1459         * Sets the value(s) for <b>publisher</b> (who.witness)
1460         *
1461     * <p>
1462     * <b>Definition:</b>
1463     * The name of the individual or organization that published the structure definition
1464     * </p> 
1465         */
1466        public StructureDefinition setPublisher(StringDt theValue) {
1467                myPublisher = theValue;
1468                return this;
1469        }
1470        
1471        
1472
1473        /**
1474         * Sets the value for <b>publisher</b> (who.witness)
1475         *
1476     * <p>
1477     * <b>Definition:</b>
1478     * The name of the individual or organization that published the structure definition
1479     * </p> 
1480         */
1481        public StructureDefinition setPublisher( String theString) {
1482                myPublisher = new StringDt(theString); 
1483                return this; 
1484        }
1485
1486 
1487        /**
1488         * Gets the value(s) for <b>contact</b> ().
1489         * creating it if it does
1490         * not exist. Will not return <code>null</code>.
1491         *
1492     * <p>
1493     * <b>Definition:</b>
1494     * Contacts to assist a user in finding and communicating with the publisher
1495     * </p> 
1496         */
1497        public java.util.List<Contact> getContact() {  
1498                if (myContact == null) {
1499                        myContact = new java.util.ArrayList<Contact>();
1500                }
1501                return myContact;
1502        }
1503
1504        /**
1505         * Sets the value(s) for <b>contact</b> ()
1506         *
1507     * <p>
1508     * <b>Definition:</b>
1509     * Contacts to assist a user in finding and communicating with the publisher
1510     * </p> 
1511         */
1512        public StructureDefinition setContact(java.util.List<Contact> theValue) {
1513                myContact = theValue;
1514                return this;
1515        }
1516        
1517        
1518
1519        /**
1520         * Adds and returns a new value for <b>contact</b> ()
1521         *
1522     * <p>
1523     * <b>Definition:</b>
1524     * Contacts to assist a user in finding and communicating with the publisher
1525     * </p> 
1526         */
1527        public Contact addContact() {
1528                Contact newType = new Contact();
1529                getContact().add(newType);
1530                return newType; 
1531        }
1532
1533        /**
1534         * Adds a given new value for <b>contact</b> ()
1535         *
1536         * <p>
1537         * <b>Definition:</b>
1538         * Contacts to assist a user in finding and communicating with the publisher
1539         * </p>
1540         * @param theValue The contact to add (must not be <code>null</code>)
1541         */
1542        public StructureDefinition addContact(Contact theValue) {
1543                if (theValue == null) {
1544                        throw new NullPointerException("theValue must not be null");
1545                }
1546                getContact().add(theValue);
1547                return this;
1548        }
1549
1550        /**
1551         * Gets the first repetition for <b>contact</b> (),
1552         * creating it if it does not already exist.
1553         *
1554     * <p>
1555     * <b>Definition:</b>
1556     * Contacts to assist a user in finding and communicating with the publisher
1557     * </p> 
1558         */
1559        public Contact getContactFirstRep() {
1560                if (getContact().isEmpty()) {
1561                        return addContact();
1562                }
1563                return getContact().get(0); 
1564        }
1565  
1566        /**
1567         * Gets the value(s) for <b>date</b> (when.recorded).
1568         * creating it if it does
1569         * not exist. Will not return <code>null</code>.
1570         *
1571     * <p>
1572     * <b>Definition:</b>
1573     * The date this version of the structure definition was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the structure definition changes
1574     * </p> 
1575         */
1576        public DateTimeDt getDateElement() {  
1577                if (myDate == null) {
1578                        myDate = new DateTimeDt();
1579                }
1580                return myDate;
1581        }
1582
1583        
1584        /**
1585         * Gets the value(s) for <b>date</b> (when.recorded).
1586         * creating it if it does
1587         * not exist. Will not return <code>null</code>.
1588         *
1589     * <p>
1590     * <b>Definition:</b>
1591     * The date this version of the structure definition was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the structure definition changes
1592     * </p> 
1593         */
1594        public Date getDate() {  
1595                return getDateElement().getValue();
1596        }
1597
1598        /**
1599         * Sets the value(s) for <b>date</b> (when.recorded)
1600         *
1601     * <p>
1602     * <b>Definition:</b>
1603     * The date this version of the structure definition was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the structure definition changes
1604     * </p> 
1605         */
1606        public StructureDefinition setDate(DateTimeDt theValue) {
1607                myDate = theValue;
1608                return this;
1609        }
1610        
1611        
1612
1613        /**
1614         * Sets the value for <b>date</b> (when.recorded)
1615         *
1616     * <p>
1617     * <b>Definition:</b>
1618     * The date this version of the structure definition was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the structure definition changes
1619     * </p> 
1620         */
1621        public StructureDefinition setDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
1622                myDate = new DateTimeDt(theDate, thePrecision); 
1623                return this; 
1624        }
1625
1626        /**
1627         * Sets the value for <b>date</b> (when.recorded)
1628         *
1629     * <p>
1630     * <b>Definition:</b>
1631     * The date this version of the structure definition was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the structure definition changes
1632     * </p> 
1633         */
1634        public StructureDefinition setDateWithSecondsPrecision( Date theDate) {
1635                myDate = new DateTimeDt(theDate); 
1636                return this; 
1637        }
1638
1639 
1640        /**
1641         * Gets the value(s) for <b>description</b> ().
1642         * creating it if it does
1643         * not exist. Will not return <code>null</code>.
1644         *
1645     * <p>
1646     * <b>Definition:</b>
1647     * A free text natural language description of the StructureDefinition and its use
1648     * </p> 
1649         */
1650        public StringDt getDescriptionElement() {  
1651                if (myDescription == null) {
1652                        myDescription = new StringDt();
1653                }
1654                return myDescription;
1655        }
1656
1657        
1658        /**
1659         * Gets the value(s) for <b>description</b> ().
1660         * creating it if it does
1661         * not exist. Will not return <code>null</code>.
1662         *
1663     * <p>
1664     * <b>Definition:</b>
1665     * A free text natural language description of the StructureDefinition and its use
1666     * </p> 
1667         */
1668        public String getDescription() {  
1669                return getDescriptionElement().getValue();
1670        }
1671
1672        /**
1673         * Sets the value(s) for <b>description</b> ()
1674         *
1675     * <p>
1676     * <b>Definition:</b>
1677     * A free text natural language description of the StructureDefinition and its use
1678     * </p> 
1679         */
1680        public StructureDefinition setDescription(StringDt theValue) {
1681                myDescription = theValue;
1682                return this;
1683        }
1684        
1685        
1686
1687        /**
1688         * Sets the value for <b>description</b> ()
1689         *
1690     * <p>
1691     * <b>Definition:</b>
1692     * A free text natural language description of the StructureDefinition and its use
1693     * </p> 
1694         */
1695        public StructureDefinition setDescription( String theString) {
1696                myDescription = new StringDt(theString); 
1697                return this; 
1698        }
1699
1700 
1701        /**
1702         * Gets the value(s) for <b>useContext</b> ().
1703         * creating it if it does
1704         * not exist. Will not return <code>null</code>.
1705         *
1706     * <p>
1707     * <b>Definition:</b>
1708     * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of structure definitions.
1709     * </p> 
1710         */
1711        public java.util.List<CodeableConceptDt> getUseContext() {  
1712                if (myUseContext == null) {
1713                        myUseContext = new java.util.ArrayList<CodeableConceptDt>();
1714                }
1715                return myUseContext;
1716        }
1717
1718        /**
1719         * Sets the value(s) for <b>useContext</b> ()
1720         *
1721     * <p>
1722     * <b>Definition:</b>
1723     * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of structure definitions.
1724     * </p> 
1725         */
1726        public StructureDefinition setUseContext(java.util.List<CodeableConceptDt> theValue) {
1727                myUseContext = theValue;
1728                return this;
1729        }
1730        
1731        
1732
1733        /**
1734         * Adds and returns a new value for <b>useContext</b> ()
1735         *
1736     * <p>
1737     * <b>Definition:</b>
1738     * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of structure definitions.
1739     * </p> 
1740         */
1741        public CodeableConceptDt addUseContext() {
1742                CodeableConceptDt newType = new CodeableConceptDt();
1743                getUseContext().add(newType);
1744                return newType; 
1745        }
1746
1747        /**
1748         * Adds a given new value for <b>useContext</b> ()
1749         *
1750         * <p>
1751         * <b>Definition:</b>
1752         * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of structure definitions.
1753         * </p>
1754         * @param theValue The useContext to add (must not be <code>null</code>)
1755         */
1756        public StructureDefinition addUseContext(CodeableConceptDt theValue) {
1757                if (theValue == null) {
1758                        throw new NullPointerException("theValue must not be null");
1759                }
1760                getUseContext().add(theValue);
1761                return this;
1762        }
1763
1764        /**
1765         * Gets the first repetition for <b>useContext</b> (),
1766         * creating it if it does not already exist.
1767         *
1768     * <p>
1769     * <b>Definition:</b>
1770     * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of structure definitions.
1771     * </p> 
1772         */
1773        public CodeableConceptDt getUseContextFirstRep() {
1774                if (getUseContext().isEmpty()) {
1775                        return addUseContext();
1776                }
1777                return getUseContext().get(0); 
1778        }
1779  
1780        /**
1781         * Gets the value(s) for <b>requirements</b> (why).
1782         * creating it if it does
1783         * not exist. Will not return <code>null</code>.
1784         *
1785     * <p>
1786     * <b>Definition:</b>
1787     * Explains why this structure definition is needed and why it's been constrained as it has
1788     * </p> 
1789         */
1790        public StringDt getRequirementsElement() {  
1791                if (myRequirements == null) {
1792                        myRequirements = new StringDt();
1793                }
1794                return myRequirements;
1795        }
1796
1797        
1798        /**
1799         * Gets the value(s) for <b>requirements</b> (why).
1800         * creating it if it does
1801         * not exist. Will not return <code>null</code>.
1802         *
1803     * <p>
1804     * <b>Definition:</b>
1805     * Explains why this structure definition is needed and why it's been constrained as it has
1806     * </p> 
1807         */
1808        public String getRequirements() {  
1809                return getRequirementsElement().getValue();
1810        }
1811
1812        /**
1813         * Sets the value(s) for <b>requirements</b> (why)
1814         *
1815     * <p>
1816     * <b>Definition:</b>
1817     * Explains why this structure definition is needed and why it's been constrained as it has
1818     * </p> 
1819         */
1820        public StructureDefinition setRequirements(StringDt theValue) {
1821                myRequirements = theValue;
1822                return this;
1823        }
1824        
1825        
1826
1827        /**
1828         * Sets the value for <b>requirements</b> (why)
1829         *
1830     * <p>
1831     * <b>Definition:</b>
1832     * Explains why this structure definition is needed and why it's been constrained as it has
1833     * </p> 
1834         */
1835        public StructureDefinition setRequirements( String theString) {
1836                myRequirements = new StringDt(theString); 
1837                return this; 
1838        }
1839
1840 
1841        /**
1842         * Gets the value(s) for <b>copyright</b> ().
1843         * creating it if it does
1844         * not exist. Will not return <code>null</code>.
1845         *
1846     * <p>
1847     * <b>Definition:</b>
1848     * A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings
1849     * </p> 
1850         */
1851        public StringDt getCopyrightElement() {  
1852                if (myCopyright == null) {
1853                        myCopyright = new StringDt();
1854                }
1855                return myCopyright;
1856        }
1857
1858        
1859        /**
1860         * Gets the value(s) for <b>copyright</b> ().
1861         * creating it if it does
1862         * not exist. Will not return <code>null</code>.
1863         *
1864     * <p>
1865     * <b>Definition:</b>
1866     * A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings
1867     * </p> 
1868         */
1869        public String getCopyright() {  
1870                return getCopyrightElement().getValue();
1871        }
1872
1873        /**
1874         * Sets the value(s) for <b>copyright</b> ()
1875         *
1876     * <p>
1877     * <b>Definition:</b>
1878     * A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings
1879     * </p> 
1880         */
1881        public StructureDefinition setCopyright(StringDt theValue) {
1882                myCopyright = theValue;
1883                return this;
1884        }
1885        
1886        
1887
1888        /**
1889         * Sets the value for <b>copyright</b> ()
1890         *
1891     * <p>
1892     * <b>Definition:</b>
1893     * A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings
1894     * </p> 
1895         */
1896        public StructureDefinition setCopyright( String theString) {
1897                myCopyright = new StringDt(theString); 
1898                return this; 
1899        }
1900
1901 
1902        /**
1903         * Gets the value(s) for <b>code</b> ().
1904         * creating it if it does
1905         * not exist. Will not return <code>null</code>.
1906         *
1907     * <p>
1908     * <b>Definition:</b>
1909     * A set of terms from external terminologies that may be used to assist with indexing and searching of templates.
1910     * </p> 
1911         */
1912        public java.util.List<CodingDt> getCode() {  
1913                if (myCode == null) {
1914                        myCode = new java.util.ArrayList<CodingDt>();
1915                }
1916                return myCode;
1917        }
1918
1919        /**
1920         * Sets the value(s) for <b>code</b> ()
1921         *
1922     * <p>
1923     * <b>Definition:</b>
1924     * A set of terms from external terminologies that may be used to assist with indexing and searching of templates.
1925     * </p> 
1926         */
1927        public StructureDefinition setCode(java.util.List<CodingDt> theValue) {
1928                myCode = theValue;
1929                return this;
1930        }
1931        
1932        
1933
1934        /**
1935         * Adds and returns a new value for <b>code</b> ()
1936         *
1937     * <p>
1938     * <b>Definition:</b>
1939     * A set of terms from external terminologies that may be used to assist with indexing and searching of templates.
1940     * </p> 
1941         */
1942        public CodingDt addCode() {
1943                CodingDt newType = new CodingDt();
1944                getCode().add(newType);
1945                return newType; 
1946        }
1947
1948        /**
1949         * Adds a given new value for <b>code</b> ()
1950         *
1951         * <p>
1952         * <b>Definition:</b>
1953         * A set of terms from external terminologies that may be used to assist with indexing and searching of templates.
1954         * </p>
1955         * @param theValue The code to add (must not be <code>null</code>)
1956         */
1957        public StructureDefinition addCode(CodingDt theValue) {
1958                if (theValue == null) {
1959                        throw new NullPointerException("theValue must not be null");
1960                }
1961                getCode().add(theValue);
1962                return this;
1963        }
1964
1965        /**
1966         * Gets the first repetition for <b>code</b> (),
1967         * creating it if it does not already exist.
1968         *
1969     * <p>
1970     * <b>Definition:</b>
1971     * A set of terms from external terminologies that may be used to assist with indexing and searching of templates.
1972     * </p> 
1973         */
1974        public CodingDt getCodeFirstRep() {
1975                if (getCode().isEmpty()) {
1976                        return addCode();
1977                }
1978                return getCode().get(0); 
1979        }
1980  
1981        /**
1982         * Gets the value(s) for <b>fhirVersion</b> ().
1983         * creating it if it does
1984         * not exist. Will not return <code>null</code>.
1985         *
1986     * <p>
1987     * <b>Definition:</b>
1988     * The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is $version$ for this version
1989     * </p> 
1990         */
1991        public IdDt getFhirVersionElement() {  
1992                if (myFhirVersion == null) {
1993                        myFhirVersion = new IdDt();
1994                }
1995                return myFhirVersion;
1996        }
1997
1998        
1999        /**
2000         * Gets the value(s) for <b>fhirVersion</b> ().
2001         * creating it if it does
2002         * not exist. Will not return <code>null</code>.
2003         *
2004     * <p>
2005     * <b>Definition:</b>
2006     * The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is $version$ for this version
2007     * </p> 
2008         */
2009        public String getFhirVersion() {  
2010                return getFhirVersionElement().getValue();
2011        }
2012
2013        /**
2014         * Sets the value(s) for <b>fhirVersion</b> ()
2015         *
2016     * <p>
2017     * <b>Definition:</b>
2018     * The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is $version$ for this version
2019     * </p> 
2020         */
2021        public StructureDefinition setFhirVersion(IdDt theValue) {
2022                myFhirVersion = theValue;
2023                return this;
2024        }
2025        
2026        
2027
2028        /**
2029         * Sets the value for <b>fhirVersion</b> ()
2030         *
2031     * <p>
2032     * <b>Definition:</b>
2033     * The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is $version$ for this version
2034     * </p> 
2035         */
2036        public StructureDefinition setFhirVersion( String theId) {
2037                myFhirVersion = new IdDt(theId); 
2038                return this; 
2039        }
2040
2041 
2042        /**
2043         * Gets the value(s) for <b>mapping</b> ().
2044         * creating it if it does
2045         * not exist. Will not return <code>null</code>.
2046         *
2047     * <p>
2048     * <b>Definition:</b>
2049     * An external specification that the content is mapped to
2050     * </p> 
2051         */
2052        public java.util.List<Mapping> getMapping() {  
2053                if (myMapping == null) {
2054                        myMapping = new java.util.ArrayList<Mapping>();
2055                }
2056                return myMapping;
2057        }
2058
2059        /**
2060         * Sets the value(s) for <b>mapping</b> ()
2061         *
2062     * <p>
2063     * <b>Definition:</b>
2064     * An external specification that the content is mapped to
2065     * </p> 
2066         */
2067        public StructureDefinition setMapping(java.util.List<Mapping> theValue) {
2068                myMapping = theValue;
2069                return this;
2070        }
2071        
2072        
2073
2074        /**
2075         * Adds and returns a new value for <b>mapping</b> ()
2076         *
2077     * <p>
2078     * <b>Definition:</b>
2079     * An external specification that the content is mapped to
2080     * </p> 
2081         */
2082        public Mapping addMapping() {
2083                Mapping newType = new Mapping();
2084                getMapping().add(newType);
2085                return newType; 
2086        }
2087
2088        /**
2089         * Adds a given new value for <b>mapping</b> ()
2090         *
2091         * <p>
2092         * <b>Definition:</b>
2093         * An external specification that the content is mapped to
2094         * </p>
2095         * @param theValue The mapping to add (must not be <code>null</code>)
2096         */
2097        public StructureDefinition addMapping(Mapping theValue) {
2098                if (theValue == null) {
2099                        throw new NullPointerException("theValue must not be null");
2100                }
2101                getMapping().add(theValue);
2102                return this;
2103        }
2104
2105        /**
2106         * Gets the first repetition for <b>mapping</b> (),
2107         * creating it if it does not already exist.
2108         *
2109     * <p>
2110     * <b>Definition:</b>
2111     * An external specification that the content is mapped to
2112     * </p> 
2113         */
2114        public Mapping getMappingFirstRep() {
2115                if (getMapping().isEmpty()) {
2116                        return addMapping();
2117                }
2118                return getMapping().get(0); 
2119        }
2120  
2121        /**
2122         * Gets the value(s) for <b>kind</b> ().
2123         * creating it if it does
2124         * not exist. Will not return <code>null</code>.
2125         *
2126     * <p>
2127     * <b>Definition:</b>
2128     * Defines the kind of structure that this definition is describing
2129     * </p> 
2130         */
2131        public BoundCodeDt<StructureDefinitionKindEnum> getKindElement() {  
2132                if (myKind == null) {
2133                        myKind = new BoundCodeDt<StructureDefinitionKindEnum>(StructureDefinitionKindEnum.VALUESET_BINDER);
2134                }
2135                return myKind;
2136        }
2137
2138        
2139        /**
2140         * Gets the value(s) for <b>kind</b> ().
2141         * creating it if it does
2142         * not exist. Will not return <code>null</code>.
2143         *
2144     * <p>
2145     * <b>Definition:</b>
2146     * Defines the kind of structure that this definition is describing
2147     * </p> 
2148         */
2149        public String getKind() {  
2150                return getKindElement().getValue();
2151        }
2152
2153        /**
2154         * Sets the value(s) for <b>kind</b> ()
2155         *
2156     * <p>
2157     * <b>Definition:</b>
2158     * Defines the kind of structure that this definition is describing
2159     * </p> 
2160         */
2161        public StructureDefinition setKind(BoundCodeDt<StructureDefinitionKindEnum> theValue) {
2162                myKind = theValue;
2163                return this;
2164        }
2165        
2166        
2167
2168        /**
2169         * Sets the value(s) for <b>kind</b> ()
2170         *
2171     * <p>
2172     * <b>Definition:</b>
2173     * Defines the kind of structure that this definition is describing
2174     * </p> 
2175         */
2176        public StructureDefinition setKind(StructureDefinitionKindEnum theValue) {
2177                setKind(new BoundCodeDt<StructureDefinitionKindEnum>(StructureDefinitionKindEnum.VALUESET_BINDER, theValue));
2178                
2179/*
2180                getKindElement().setValueAsEnum(theValue);
2181*/
2182                return this;
2183        }
2184
2185  
2186        /**
2187         * Gets the value(s) for <b>constrainedType</b> ().
2188         * creating it if it does
2189         * not exist. Will not return <code>null</code>.
2190         *
2191     * <p>
2192     * <b>Definition:</b>
2193     * The type of type that is being constrained - a data type, an extension, a resource, including abstract ones. If this field is present, it indicates that the structure definition is a constraint. If it is not present, then the structure definition is the definition of a base structure
2194     * </p> 
2195         */
2196        public CodeDt getConstrainedTypeElement() {  
2197                if (myConstrainedType == null) {
2198                        myConstrainedType = new CodeDt();
2199                }
2200                return myConstrainedType;
2201        }
2202
2203        
2204        /**
2205         * Gets the value(s) for <b>constrainedType</b> ().
2206         * creating it if it does
2207         * not exist. Will not return <code>null</code>.
2208         *
2209     * <p>
2210     * <b>Definition:</b>
2211     * The type of type that is being constrained - a data type, an extension, a resource, including abstract ones. If this field is present, it indicates that the structure definition is a constraint. If it is not present, then the structure definition is the definition of a base structure
2212     * </p> 
2213         */
2214        public String getConstrainedType() {  
2215                return getConstrainedTypeElement().getValue();
2216        }
2217
2218        /**
2219         * Sets the value(s) for <b>constrainedType</b> ()
2220         *
2221     * <p>
2222     * <b>Definition:</b>
2223     * The type of type that is being constrained - a data type, an extension, a resource, including abstract ones. If this field is present, it indicates that the structure definition is a constraint. If it is not present, then the structure definition is the definition of a base structure
2224     * </p> 
2225         */
2226        public StructureDefinition setConstrainedType(CodeDt theValue) {
2227                myConstrainedType = theValue;
2228                return this;
2229        }
2230        
2231        
2232
2233        /**
2234         * Sets the value for <b>constrainedType</b> ()
2235         *
2236     * <p>
2237     * <b>Definition:</b>
2238     * The type of type that is being constrained - a data type, an extension, a resource, including abstract ones. If this field is present, it indicates that the structure definition is a constraint. If it is not present, then the structure definition is the definition of a base structure
2239     * </p> 
2240         */
2241        public StructureDefinition setConstrainedType( String theCode) {
2242                myConstrainedType = new CodeDt(theCode); 
2243                return this; 
2244        }
2245
2246 
2247        /**
2248         * Gets the value(s) for <b>abstract</b> ().
2249         * creating it if it does
2250         * not exist. Will not return <code>null</code>.
2251         *
2252     * <p>
2253     * <b>Definition:</b>
2254     * Whether structure this definition describes is abstract or not  - that is, whether an actual exchanged item can ever be of this type
2255     * </p> 
2256         */
2257        public BooleanDt getAbstractElement() {  
2258                if (myAbstract == null) {
2259                        myAbstract = new BooleanDt();
2260                }
2261                return myAbstract;
2262        }
2263
2264        
2265        /**
2266         * Gets the value(s) for <b>abstract</b> ().
2267         * creating it if it does
2268         * not exist. Will not return <code>null</code>.
2269         *
2270     * <p>
2271     * <b>Definition:</b>
2272     * Whether structure this definition describes is abstract or not  - that is, whether an actual exchanged item can ever be of this type
2273     * </p> 
2274         */
2275        public Boolean getAbstract() {  
2276                return getAbstractElement().getValue();
2277        }
2278
2279        /**
2280         * Sets the value(s) for <b>abstract</b> ()
2281         *
2282     * <p>
2283     * <b>Definition:</b>
2284     * Whether structure this definition describes is abstract or not  - that is, whether an actual exchanged item can ever be of this type
2285     * </p> 
2286         */
2287        public StructureDefinition setAbstract(BooleanDt theValue) {
2288                myAbstract = theValue;
2289                return this;
2290        }
2291        
2292        
2293
2294        /**
2295         * Sets the value for <b>abstract</b> ()
2296         *
2297     * <p>
2298     * <b>Definition:</b>
2299     * Whether structure this definition describes is abstract or not  - that is, whether an actual exchanged item can ever be of this type
2300     * </p> 
2301         */
2302        public StructureDefinition setAbstract( boolean theBoolean) {
2303                myAbstract = new BooleanDt(theBoolean); 
2304                return this; 
2305        }
2306
2307 
2308        /**
2309         * Gets the value(s) for <b>contextType</b> ().
2310         * creating it if it does
2311         * not exist. Will not return <code>null</code>.
2312         *
2313     * <p>
2314     * <b>Definition:</b>
2315     * If this is an extension, Identifies the context within FHIR resources where the extension can be used
2316     * </p> 
2317         */
2318        public BoundCodeDt<ExtensionContextEnum> getContextTypeElement() {  
2319                if (myContextType == null) {
2320                        myContextType = new BoundCodeDt<ExtensionContextEnum>(ExtensionContextEnum.VALUESET_BINDER);
2321                }
2322                return myContextType;
2323        }
2324
2325        
2326        /**
2327         * Gets the value(s) for <b>contextType</b> ().
2328         * creating it if it does
2329         * not exist. Will not return <code>null</code>.
2330         *
2331     * <p>
2332     * <b>Definition:</b>
2333     * If this is an extension, Identifies the context within FHIR resources where the extension can be used
2334     * </p> 
2335         */
2336        public String getContextType() {  
2337                return getContextTypeElement().getValue();
2338        }
2339
2340        /**
2341         * Sets the value(s) for <b>contextType</b> ()
2342         *
2343     * <p>
2344     * <b>Definition:</b>
2345     * If this is an extension, Identifies the context within FHIR resources where the extension can be used
2346     * </p> 
2347         */
2348        public StructureDefinition setContextType(BoundCodeDt<ExtensionContextEnum> theValue) {
2349                myContextType = theValue;
2350                return this;
2351        }
2352        
2353        
2354
2355        /**
2356         * Sets the value(s) for <b>contextType</b> ()
2357         *
2358     * <p>
2359     * <b>Definition:</b>
2360     * If this is an extension, Identifies the context within FHIR resources where the extension can be used
2361     * </p> 
2362         */
2363        public StructureDefinition setContextType(ExtensionContextEnum theValue) {
2364                setContextType(new BoundCodeDt<ExtensionContextEnum>(ExtensionContextEnum.VALUESET_BINDER, theValue));
2365                
2366/*
2367                getContextTypeElement().setValueAsEnum(theValue);
2368*/
2369                return this;
2370        }
2371
2372  
2373        /**
2374         * Gets the value(s) for <b>context</b> ().
2375         * creating it if it does
2376         * not exist. Will not return <code>null</code>.
2377         *
2378     * <p>
2379     * <b>Definition:</b>
2380     * Identifies the types of resource or data type elements to which the extension can be applied
2381     * </p> 
2382         */
2383        public java.util.List<StringDt> getContext() {  
2384                if (myContext == null) {
2385                        myContext = new java.util.ArrayList<StringDt>();
2386                }
2387                return myContext;
2388        }
2389
2390        /**
2391         * Sets the value(s) for <b>context</b> ()
2392         *
2393     * <p>
2394     * <b>Definition:</b>
2395     * Identifies the types of resource or data type elements to which the extension can be applied
2396     * </p> 
2397         */
2398        public StructureDefinition setContext(java.util.List<StringDt> theValue) {
2399                myContext = theValue;
2400                return this;
2401        }
2402        
2403        
2404
2405        /**
2406         * Adds and returns a new value for <b>context</b> ()
2407         *
2408     * <p>
2409     * <b>Definition:</b>
2410     * Identifies the types of resource or data type elements to which the extension can be applied
2411     * </p> 
2412         */
2413        public StringDt addContext() {
2414                StringDt newType = new StringDt();
2415                getContext().add(newType);
2416                return newType; 
2417        }
2418
2419        /**
2420         * Adds a given new value for <b>context</b> ()
2421         *
2422         * <p>
2423         * <b>Definition:</b>
2424         * Identifies the types of resource or data type elements to which the extension can be applied
2425         * </p>
2426         * @param theValue The context to add (must not be <code>null</code>)
2427         */
2428        public StructureDefinition addContext(StringDt theValue) {
2429                if (theValue == null) {
2430                        throw new NullPointerException("theValue must not be null");
2431                }
2432                getContext().add(theValue);
2433                return this;
2434        }
2435
2436        /**
2437         * Gets the first repetition for <b>context</b> (),
2438         * creating it if it does not already exist.
2439         *
2440     * <p>
2441     * <b>Definition:</b>
2442     * Identifies the types of resource or data type elements to which the extension can be applied
2443     * </p> 
2444         */
2445        public StringDt getContextFirstRep() {
2446                if (getContext().isEmpty()) {
2447                        return addContext();
2448                }
2449                return getContext().get(0); 
2450        }
2451        /**
2452         * Adds a new value for <b>context</b> ()
2453         *
2454     * <p>
2455     * <b>Definition:</b>
2456     * Identifies the types of resource or data type elements to which the extension can be applied
2457     * </p> 
2458     *
2459     * @return Returns a reference to this object, to allow for simple chaining.
2460         */
2461        public StructureDefinition addContext( String theString) {
2462                if (myContext == null) {
2463                        myContext = new java.util.ArrayList<StringDt>();
2464                }
2465                myContext.add(new StringDt(theString));
2466                return this; 
2467        }
2468
2469 
2470        /**
2471         * Gets the value(s) for <b>base</b> ().
2472         * creating it if it does
2473         * not exist. Will not return <code>null</code>.
2474         *
2475     * <p>
2476     * <b>Definition:</b>
2477     * An absolute URI that is the base structure from which this set of constraints is derived
2478     * </p> 
2479         */
2480        public UriDt getBaseElement() {  
2481                if (myBase == null) {
2482                        myBase = new UriDt();
2483                }
2484                return myBase;
2485        }
2486
2487        
2488        /**
2489         * Gets the value(s) for <b>base</b> ().
2490         * creating it if it does
2491         * not exist. Will not return <code>null</code>.
2492         *
2493     * <p>
2494     * <b>Definition:</b>
2495     * An absolute URI that is the base structure from which this set of constraints is derived
2496     * </p> 
2497         */
2498        public String getBase() {  
2499                return getBaseElement().getValue();
2500        }
2501
2502        /**
2503         * Sets the value(s) for <b>base</b> ()
2504         *
2505     * <p>
2506     * <b>Definition:</b>
2507     * An absolute URI that is the base structure from which this set of constraints is derived
2508     * </p> 
2509         */
2510        public StructureDefinition setBase(UriDt theValue) {
2511                myBase = theValue;
2512                return this;
2513        }
2514        
2515        
2516
2517        /**
2518         * Sets the value for <b>base</b> ()
2519         *
2520     * <p>
2521     * <b>Definition:</b>
2522     * An absolute URI that is the base structure from which this set of constraints is derived
2523     * </p> 
2524         */
2525        public StructureDefinition setBase( String theUri) {
2526                myBase = new UriDt(theUri); 
2527                return this; 
2528        }
2529
2530 
2531        /**
2532         * Gets the value(s) for <b>snapshot</b> ().
2533         * creating it if it does
2534         * not exist. Will not return <code>null</code>.
2535         *
2536     * <p>
2537     * <b>Definition:</b>
2538     * A snapshot view is expressed in a stand alone form that can be used and interpreted without considering the base StructureDefinition
2539     * </p> 
2540         */
2541        public Snapshot getSnapshot() {  
2542                if (mySnapshot == null) {
2543                        mySnapshot = new Snapshot();
2544                }
2545                return mySnapshot;
2546        }
2547
2548        /**
2549         * Sets the value(s) for <b>snapshot</b> ()
2550         *
2551     * <p>
2552     * <b>Definition:</b>
2553     * A snapshot view is expressed in a stand alone form that can be used and interpreted without considering the base StructureDefinition
2554     * </p> 
2555         */
2556        public StructureDefinition setSnapshot(Snapshot theValue) {
2557                mySnapshot = theValue;
2558                return this;
2559        }
2560        
2561        
2562
2563  
2564        /**
2565         * Gets the value(s) for <b>differential</b> ().
2566         * creating it if it does
2567         * not exist. Will not return <code>null</code>.
2568         *
2569     * <p>
2570     * <b>Definition:</b>
2571     * A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies
2572     * </p> 
2573         */
2574        public Differential getDifferential() {  
2575                if (myDifferential == null) {
2576                        myDifferential = new Differential();
2577                }
2578                return myDifferential;
2579        }
2580
2581        /**
2582         * Sets the value(s) for <b>differential</b> ()
2583         *
2584     * <p>
2585     * <b>Definition:</b>
2586     * A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies
2587     * </p> 
2588         */
2589        public StructureDefinition setDifferential(Differential theValue) {
2590                myDifferential = theValue;
2591                return this;
2592        }
2593        
2594        
2595
2596  
2597        /**
2598         * Block class for child element: <b>StructureDefinition.contact</b> ()
2599         *
2600     * <p>
2601     * <b>Definition:</b>
2602     * Contacts to assist a user in finding and communicating with the publisher
2603     * </p> 
2604         */
2605        @Block()        
2606        public static class Contact 
2607            extends  BaseIdentifiableElement        implements IResourceBlock {
2608        
2609        @Child(name="name", type=StringDt.class, order=0, min=0, max=1, summary=true, modifier=false)   
2610        @Description(
2611                shortDefinition="",
2612                formalDefinition="The name of an individual to contact regarding the structure definition"
2613        )
2614        private StringDt myName;
2615        
2616        @Child(name="telecom", type=ContactPointDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
2617        @Description(
2618                shortDefinition="",
2619                formalDefinition="Contact details for individual (if a name was provided) or the publisher"
2620        )
2621        private java.util.List<ContactPointDt> myTelecom;
2622        
2623
2624        @Override
2625        public boolean isEmpty() {
2626                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myTelecom);
2627        }
2628        
2629        @Override
2630        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2631                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myTelecom);
2632        }
2633
2634        /**
2635         * Gets the value(s) for <b>name</b> ().
2636         * creating it if it does
2637         * not exist. Will not return <code>null</code>.
2638         *
2639     * <p>
2640     * <b>Definition:</b>
2641     * The name of an individual to contact regarding the structure definition
2642     * </p> 
2643         */
2644        public StringDt getNameElement() {  
2645                if (myName == null) {
2646                        myName = new StringDt();
2647                }
2648                return myName;
2649        }
2650
2651        
2652        /**
2653         * Gets the value(s) for <b>name</b> ().
2654         * creating it if it does
2655         * not exist. Will not return <code>null</code>.
2656         *
2657     * <p>
2658     * <b>Definition:</b>
2659     * The name of an individual to contact regarding the structure definition
2660     * </p> 
2661         */
2662        public String getName() {  
2663                return getNameElement().getValue();
2664        }
2665
2666        /**
2667         * Sets the value(s) for <b>name</b> ()
2668         *
2669     * <p>
2670     * <b>Definition:</b>
2671     * The name of an individual to contact regarding the structure definition
2672     * </p> 
2673         */
2674        public Contact setName(StringDt theValue) {
2675                myName = theValue;
2676                return this;
2677        }
2678        
2679        
2680
2681        /**
2682         * Sets the value for <b>name</b> ()
2683         *
2684     * <p>
2685     * <b>Definition:</b>
2686     * The name of an individual to contact regarding the structure definition
2687     * </p> 
2688         */
2689        public Contact setName( String theString) {
2690                myName = new StringDt(theString); 
2691                return this; 
2692        }
2693
2694 
2695        /**
2696         * Gets the value(s) for <b>telecom</b> ().
2697         * creating it if it does
2698         * not exist. Will not return <code>null</code>.
2699         *
2700     * <p>
2701     * <b>Definition:</b>
2702     * Contact details for individual (if a name was provided) or the publisher
2703     * </p> 
2704         */
2705        public java.util.List<ContactPointDt> getTelecom() {  
2706                if (myTelecom == null) {
2707                        myTelecom = new java.util.ArrayList<ContactPointDt>();
2708                }
2709                return myTelecom;
2710        }
2711
2712        /**
2713         * Sets the value(s) for <b>telecom</b> ()
2714         *
2715     * <p>
2716     * <b>Definition:</b>
2717     * Contact details for individual (if a name was provided) or the publisher
2718     * </p> 
2719         */
2720        public Contact setTelecom(java.util.List<ContactPointDt> theValue) {
2721                myTelecom = theValue;
2722                return this;
2723        }
2724        
2725        
2726
2727        /**
2728         * Adds and returns a new value for <b>telecom</b> ()
2729         *
2730     * <p>
2731     * <b>Definition:</b>
2732     * Contact details for individual (if a name was provided) or the publisher
2733     * </p> 
2734         */
2735        public ContactPointDt addTelecom() {
2736                ContactPointDt newType = new ContactPointDt();
2737                getTelecom().add(newType);
2738                return newType; 
2739        }
2740
2741        /**
2742         * Adds a given new value for <b>telecom</b> ()
2743         *
2744         * <p>
2745         * <b>Definition:</b>
2746         * Contact details for individual (if a name was provided) or the publisher
2747         * </p>
2748         * @param theValue The telecom to add (must not be <code>null</code>)
2749         */
2750        public Contact addTelecom(ContactPointDt theValue) {
2751                if (theValue == null) {
2752                        throw new NullPointerException("theValue must not be null");
2753                }
2754                getTelecom().add(theValue);
2755                return this;
2756        }
2757
2758        /**
2759         * Gets the first repetition for <b>telecom</b> (),
2760         * creating it if it does not already exist.
2761         *
2762     * <p>
2763     * <b>Definition:</b>
2764     * Contact details for individual (if a name was provided) or the publisher
2765     * </p> 
2766         */
2767        public ContactPointDt getTelecomFirstRep() {
2768                if (getTelecom().isEmpty()) {
2769                        return addTelecom();
2770                }
2771                return getTelecom().get(0); 
2772        }
2773  
2774
2775
2776        }
2777
2778
2779        /**
2780         * Block class for child element: <b>StructureDefinition.mapping</b> ()
2781         *
2782     * <p>
2783     * <b>Definition:</b>
2784     * An external specification that the content is mapped to
2785     * </p> 
2786         */
2787        @Block()        
2788        public static class Mapping 
2789            extends  BaseIdentifiableElement        implements IResourceBlock {
2790        
2791        @Child(name="identity", type=IdDt.class, order=0, min=1, max=1, summary=false, modifier=false)  
2792        @Description(
2793                shortDefinition="",
2794                formalDefinition="An Internal id that is used to identify this mapping set when specific mappings are made"
2795        )
2796        private IdDt myIdentity;
2797        
2798        @Child(name="uri", type=UriDt.class, order=1, min=0, max=1, summary=false, modifier=false)      
2799        @Description(
2800                shortDefinition="",
2801                formalDefinition="An absolute URI that identifies the specification that this mapping is expressed to"
2802        )
2803        private UriDt myUri;
2804        
2805        @Child(name="name", type=StringDt.class, order=2, min=0, max=1, summary=false, modifier=false)  
2806        @Description(
2807                shortDefinition="",
2808                formalDefinition="A name for the specification that is being mapped to"
2809        )
2810        private StringDt myName;
2811        
2812        @Child(name="comments", type=StringDt.class, order=3, min=0, max=1, summary=false, modifier=false)      
2813        @Description(
2814                shortDefinition="",
2815                formalDefinition="Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage"
2816        )
2817        private StringDt myComments;
2818        
2819
2820        @Override
2821        public boolean isEmpty() {
2822                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentity,  myUri,  myName,  myComments);
2823        }
2824        
2825        @Override
2826        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2827                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentity, myUri, myName, myComments);
2828        }
2829
2830        /**
2831         * Gets the value(s) for <b>identity</b> ().
2832         * creating it if it does
2833         * not exist. Will not return <code>null</code>.
2834         *
2835     * <p>
2836     * <b>Definition:</b>
2837     * An Internal id that is used to identify this mapping set when specific mappings are made
2838     * </p> 
2839         */
2840        public IdDt getIdentityElement() {  
2841                if (myIdentity == null) {
2842                        myIdentity = new IdDt();
2843                }
2844                return myIdentity;
2845        }
2846
2847        
2848        /**
2849         * Gets the value(s) for <b>identity</b> ().
2850         * creating it if it does
2851         * not exist. Will not return <code>null</code>.
2852         *
2853     * <p>
2854     * <b>Definition:</b>
2855     * An Internal id that is used to identify this mapping set when specific mappings are made
2856     * </p> 
2857         */
2858        public String getIdentity() {  
2859                return getIdentityElement().getValue();
2860        }
2861
2862        /**
2863         * Sets the value(s) for <b>identity</b> ()
2864         *
2865     * <p>
2866     * <b>Definition:</b>
2867     * An Internal id that is used to identify this mapping set when specific mappings are made
2868     * </p> 
2869         */
2870        public Mapping setIdentity(IdDt theValue) {
2871                myIdentity = theValue;
2872                return this;
2873        }
2874        
2875        
2876
2877        /**
2878         * Sets the value for <b>identity</b> ()
2879         *
2880     * <p>
2881     * <b>Definition:</b>
2882     * An Internal id that is used to identify this mapping set when specific mappings are made
2883     * </p> 
2884         */
2885        public Mapping setIdentity( String theId) {
2886                myIdentity = new IdDt(theId); 
2887                return this; 
2888        }
2889
2890 
2891        /**
2892         * Gets the value(s) for <b>uri</b> ().
2893         * creating it if it does
2894         * not exist. Will not return <code>null</code>.
2895         *
2896     * <p>
2897     * <b>Definition:</b>
2898     * An absolute URI that identifies the specification that this mapping is expressed to
2899     * </p> 
2900         */
2901        public UriDt getUriElement() {  
2902                if (myUri == null) {
2903                        myUri = new UriDt();
2904                }
2905                return myUri;
2906        }
2907
2908        
2909        /**
2910         * Gets the value(s) for <b>uri</b> ().
2911         * creating it if it does
2912         * not exist. Will not return <code>null</code>.
2913         *
2914     * <p>
2915     * <b>Definition:</b>
2916     * An absolute URI that identifies the specification that this mapping is expressed to
2917     * </p> 
2918         */
2919        public String getUri() {  
2920                return getUriElement().getValue();
2921        }
2922
2923        /**
2924         * Sets the value(s) for <b>uri</b> ()
2925         *
2926     * <p>
2927     * <b>Definition:</b>
2928     * An absolute URI that identifies the specification that this mapping is expressed to
2929     * </p> 
2930         */
2931        public Mapping setUri(UriDt theValue) {
2932                myUri = theValue;
2933                return this;
2934        }
2935        
2936        
2937
2938        /**
2939         * Sets the value for <b>uri</b> ()
2940         *
2941     * <p>
2942     * <b>Definition:</b>
2943     * An absolute URI that identifies the specification that this mapping is expressed to
2944     * </p> 
2945         */
2946        public Mapping setUri( String theUri) {
2947                myUri = new UriDt(theUri); 
2948                return this; 
2949        }
2950
2951 
2952        /**
2953         * Gets the value(s) for <b>name</b> ().
2954         * creating it if it does
2955         * not exist. Will not return <code>null</code>.
2956         *
2957     * <p>
2958     * <b>Definition:</b>
2959     * A name for the specification that is being mapped to
2960     * </p> 
2961         */
2962        public StringDt getNameElement() {  
2963                if (myName == null) {
2964                        myName = new StringDt();
2965                }
2966                return myName;
2967        }
2968
2969        
2970        /**
2971         * Gets the value(s) for <b>name</b> ().
2972         * creating it if it does
2973         * not exist. Will not return <code>null</code>.
2974         *
2975     * <p>
2976     * <b>Definition:</b>
2977     * A name for the specification that is being mapped to
2978     * </p> 
2979         */
2980        public String getName() {  
2981                return getNameElement().getValue();
2982        }
2983
2984        /**
2985         * Sets the value(s) for <b>name</b> ()
2986         *
2987     * <p>
2988     * <b>Definition:</b>
2989     * A name for the specification that is being mapped to
2990     * </p> 
2991         */
2992        public Mapping setName(StringDt theValue) {
2993                myName = theValue;
2994                return this;
2995        }
2996        
2997        
2998
2999        /**
3000         * Sets the value for <b>name</b> ()
3001         *
3002     * <p>
3003     * <b>Definition:</b>
3004     * A name for the specification that is being mapped to
3005     * </p> 
3006         */
3007        public Mapping setName( String theString) {
3008                myName = new StringDt(theString); 
3009                return this; 
3010        }
3011
3012 
3013        /**
3014         * Gets the value(s) for <b>comments</b> ().
3015         * creating it if it does
3016         * not exist. Will not return <code>null</code>.
3017         *
3018     * <p>
3019     * <b>Definition:</b>
3020     * Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage
3021     * </p> 
3022         */
3023        public StringDt getCommentsElement() {  
3024                if (myComments == null) {
3025                        myComments = new StringDt();
3026                }
3027                return myComments;
3028        }
3029
3030        
3031        /**
3032         * Gets the value(s) for <b>comments</b> ().
3033         * creating it if it does
3034         * not exist. Will not return <code>null</code>.
3035         *
3036     * <p>
3037     * <b>Definition:</b>
3038     * Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage
3039     * </p> 
3040         */
3041        public String getComments() {  
3042                return getCommentsElement().getValue();
3043        }
3044
3045        /**
3046         * Sets the value(s) for <b>comments</b> ()
3047         *
3048     * <p>
3049     * <b>Definition:</b>
3050     * Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage
3051     * </p> 
3052         */
3053        public Mapping setComments(StringDt theValue) {
3054                myComments = theValue;
3055                return this;
3056        }
3057        
3058        
3059
3060        /**
3061         * Sets the value for <b>comments</b> ()
3062         *
3063     * <p>
3064     * <b>Definition:</b>
3065     * Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage
3066     * </p> 
3067         */
3068        public Mapping setComments( String theString) {
3069                myComments = new StringDt(theString); 
3070                return this; 
3071        }
3072
3073 
3074
3075
3076        }
3077
3078
3079        /**
3080         * Block class for child element: <b>StructureDefinition.snapshot</b> ()
3081         *
3082     * <p>
3083     * <b>Definition:</b>
3084     * A snapshot view is expressed in a stand alone form that can be used and interpreted without considering the base StructureDefinition
3085     * </p> 
3086         */
3087        @Block()        
3088        public static class Snapshot 
3089            extends  BaseIdentifiableElement        implements IResourceBlock {
3090        
3091        @Child(name="element", type=ElementDefinitionDt.class, order=0, min=1, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
3092        @Description(
3093                shortDefinition="",
3094                formalDefinition="Captures constraints on each element within the resource"
3095        )
3096        private java.util.List<ElementDefinitionDt> myElement;
3097        
3098
3099        @Override
3100        public boolean isEmpty() {
3101                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myElement);
3102        }
3103        
3104        @Override
3105        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
3106                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myElement);
3107        }
3108
3109        /**
3110         * Gets the value(s) for <b>element</b> ().
3111         * creating it if it does
3112         * not exist. Will not return <code>null</code>.
3113         *
3114     * <p>
3115     * <b>Definition:</b>
3116     * Captures constraints on each element within the resource
3117     * </p> 
3118         */
3119        public java.util.List<ElementDefinitionDt> getElement() {  
3120                if (myElement == null) {
3121                        myElement = new java.util.ArrayList<ElementDefinitionDt>();
3122                }
3123                return myElement;
3124        }
3125
3126        /**
3127         * Sets the value(s) for <b>element</b> ()
3128         *
3129     * <p>
3130     * <b>Definition:</b>
3131     * Captures constraints on each element within the resource
3132     * </p> 
3133         */
3134        public Snapshot setElement(java.util.List<ElementDefinitionDt> theValue) {
3135                myElement = theValue;
3136                return this;
3137        }
3138        
3139        
3140
3141        /**
3142         * Adds and returns a new value for <b>element</b> ()
3143         *
3144     * <p>
3145     * <b>Definition:</b>
3146     * Captures constraints on each element within the resource
3147     * </p> 
3148         */
3149        public ElementDefinitionDt addElement() {
3150                ElementDefinitionDt newType = new ElementDefinitionDt();
3151                getElement().add(newType);
3152                return newType; 
3153        }
3154
3155        /**
3156         * Adds a given new value for <b>element</b> ()
3157         *
3158         * <p>
3159         * <b>Definition:</b>
3160         * Captures constraints on each element within the resource
3161         * </p>
3162         * @param theValue The element to add (must not be <code>null</code>)
3163         */
3164        public Snapshot addElement(ElementDefinitionDt theValue) {
3165                if (theValue == null) {
3166                        throw new NullPointerException("theValue must not be null");
3167                }
3168                getElement().add(theValue);
3169                return this;
3170        }
3171
3172        /**
3173         * Gets the first repetition for <b>element</b> (),
3174         * creating it if it does not already exist.
3175         *
3176     * <p>
3177     * <b>Definition:</b>
3178     * Captures constraints on each element within the resource
3179     * </p> 
3180         */
3181        public ElementDefinitionDt getElementFirstRep() {
3182                if (getElement().isEmpty()) {
3183                        return addElement();
3184                }
3185                return getElement().get(0); 
3186        }
3187  
3188
3189
3190        }
3191
3192
3193        /**
3194         * Block class for child element: <b>StructureDefinition.differential</b> ()
3195         *
3196     * <p>
3197     * <b>Definition:</b>
3198     * A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies
3199     * </p> 
3200         */
3201        @Block()        
3202        public static class Differential 
3203            extends  BaseIdentifiableElement        implements IResourceBlock {
3204        
3205        @Child(name="element", type=ElementDefinitionDt.class, order=0, min=1, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
3206        @Description(
3207                shortDefinition="",
3208                formalDefinition="Captures constraints on each element within the resource"
3209        )
3210        private java.util.List<ElementDefinitionDt> myElement;
3211        
3212
3213        @Override
3214        public boolean isEmpty() {
3215                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myElement);
3216        }
3217        
3218        @Override
3219        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
3220                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myElement);
3221        }
3222
3223        /**
3224         * Gets the value(s) for <b>element</b> ().
3225         * creating it if it does
3226         * not exist. Will not return <code>null</code>.
3227         *
3228     * <p>
3229     * <b>Definition:</b>
3230     * Captures constraints on each element within the resource
3231     * </p> 
3232         */
3233        public java.util.List<ElementDefinitionDt> getElement() {  
3234                if (myElement == null) {
3235                        myElement = new java.util.ArrayList<ElementDefinitionDt>();
3236                }
3237                return myElement;
3238        }
3239
3240        /**
3241         * Sets the value(s) for <b>element</b> ()
3242         *
3243     * <p>
3244     * <b>Definition:</b>
3245     * Captures constraints on each element within the resource
3246     * </p> 
3247         */
3248        public Differential setElement(java.util.List<ElementDefinitionDt> theValue) {
3249                myElement = theValue;
3250                return this;
3251        }
3252        
3253        
3254
3255        /**
3256         * Adds and returns a new value for <b>element</b> ()
3257         *
3258     * <p>
3259     * <b>Definition:</b>
3260     * Captures constraints on each element within the resource
3261     * </p> 
3262         */
3263        public ElementDefinitionDt addElement() {
3264                ElementDefinitionDt newType = new ElementDefinitionDt();
3265                getElement().add(newType);
3266                return newType; 
3267        }
3268
3269        /**
3270         * Adds a given new value for <b>element</b> ()
3271         *
3272         * <p>
3273         * <b>Definition:</b>
3274         * Captures constraints on each element within the resource
3275         * </p>
3276         * @param theValue The element to add (must not be <code>null</code>)
3277         */
3278        public Differential addElement(ElementDefinitionDt theValue) {
3279                if (theValue == null) {
3280                        throw new NullPointerException("theValue must not be null");
3281                }
3282                getElement().add(theValue);
3283                return this;
3284        }
3285
3286        /**
3287         * Gets the first repetition for <b>element</b> (),
3288         * creating it if it does not already exist.
3289         *
3290     * <p>
3291     * <b>Definition:</b>
3292     * Captures constraints on each element within the resource
3293     * </p> 
3294         */
3295        public ElementDefinitionDt getElementFirstRep() {
3296                if (getElement().isEmpty()) {
3297                        return addElement();
3298                }
3299                return getElement().get(0); 
3300        }
3301  
3302
3303
3304        }
3305
3306
3307
3308
3309    @Override
3310    public String getResourceName() {
3311        return "StructureDefinition";
3312    }
3313    
3314    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
3315        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
3316    }
3317
3318
3319}