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>DataElement</b> Resource
320 * ()
321 *
322 * <p>
323 * <b>Definition:</b>
324 * The formal description of a single piece of information that can be gathered and reported.
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/DataElement">http://hl7.org/fhir/profiles/DataElement</a> 
335 * </p>
336 *
337 */
338@ResourceDef(name="DataElement", profile="http://hl7.org/fhir/profiles/DataElement", id="dataelement")
339public class DataElement extends ca.uhn.fhir.model.dstu2.resource.BaseResource
340    implements  IResource     {
341
342        /**
343         * Search parameter constant for <b>identifier</b>
344         * <p>
345         * Description: <b>The identifier of the data element</b><br>
346         * Type: <b>token</b><br>
347         * Path: <b>DataElement.identifier</b><br>
348         * </p>
349         */
350        @SearchParamDefinition(name="identifier", path="DataElement.identifier", description="The identifier of the data element", type="token"  )
351        public static final String SP_IDENTIFIER = "identifier";
352
353        /**
354         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
355         * <p>
356         * Description: <b>The identifier of the data element</b><br>
357         * Type: <b>token</b><br>
358         * Path: <b>DataElement.identifier</b><br>
359         * </p>
360         */
361        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
362
363        /**
364         * Search parameter constant for <b>version</b>
365         * <p>
366         * Description: <b>The version identifier of the data element</b><br>
367         * Type: <b>string</b><br>
368         * Path: <b>DataElement.version</b><br>
369         * </p>
370         */
371        @SearchParamDefinition(name="version", path="DataElement.version", description="The version identifier of the data element", type="string"  )
372        public static final String SP_VERSION = "version";
373
374        /**
375         * <b>Fluent Client</b> search parameter constant for <b>version</b>
376         * <p>
377         * Description: <b>The version identifier of the data element</b><br>
378         * Type: <b>string</b><br>
379         * Path: <b>DataElement.version</b><br>
380         * </p>
381         */
382        public static final StringClientParam VERSION = new StringClientParam(SP_VERSION);
383
384        /**
385         * Search parameter constant for <b>name</b>
386         * <p>
387         * Description: <b>Name of the data element</b><br>
388         * Type: <b>string</b><br>
389         * Path: <b>DataElement.name</b><br>
390         * </p>
391         */
392        @SearchParamDefinition(name="name", path="DataElement.name", description="Name of the data element", type="string"  )
393        public static final String SP_NAME = "name";
394
395        /**
396         * <b>Fluent Client</b> search parameter constant for <b>name</b>
397         * <p>
398         * Description: <b>Name of the data element</b><br>
399         * Type: <b>string</b><br>
400         * Path: <b>DataElement.name</b><br>
401         * </p>
402         */
403        public static final StringClientParam NAME = new StringClientParam(SP_NAME);
404
405        /**
406         * Search parameter constant for <b>publisher</b>
407         * <p>
408         * Description: <b>Name of the publisher of the data element</b><br>
409         * Type: <b>string</b><br>
410         * Path: <b>DataElement.publisher</b><br>
411         * </p>
412         */
413        @SearchParamDefinition(name="publisher", path="DataElement.publisher", description="Name of the publisher of the data element", type="string"  )
414        public static final String SP_PUBLISHER = "publisher";
415
416        /**
417         * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
418         * <p>
419         * Description: <b>Name of the publisher of the data element</b><br>
420         * Type: <b>string</b><br>
421         * Path: <b>DataElement.publisher</b><br>
422         * </p>
423         */
424        public static final StringClientParam PUBLISHER = new StringClientParam(SP_PUBLISHER);
425
426        /**
427         * Search parameter constant for <b>description</b>
428         * <p>
429         * Description: <b>Text search in the description of the data element.  This corresponds to the definition of the first DataElement.element.</b><br>
430         * Type: <b>string</b><br>
431         * Path: <b>DataElement.element.definition</b><br>
432         * </p>
433         */
434        @SearchParamDefinition(name="description", path="DataElement.element.definition", description="Text search in the description of the data element.  This corresponds to the definition of the first DataElement.element.", type="string"  )
435        public static final String SP_DESCRIPTION = "description";
436
437        /**
438         * <b>Fluent Client</b> search parameter constant for <b>description</b>
439         * <p>
440         * Description: <b>Text search in the description of the data element.  This corresponds to the definition of the first DataElement.element.</b><br>
441         * Type: <b>string</b><br>
442         * Path: <b>DataElement.element.definition</b><br>
443         * </p>
444         */
445        public static final StringClientParam DESCRIPTION = new StringClientParam(SP_DESCRIPTION);
446
447        /**
448         * Search parameter constant for <b>status</b>
449         * <p>
450         * Description: <b>The current status of the data element</b><br>
451         * Type: <b>token</b><br>
452         * Path: <b>DataElement.status</b><br>
453         * </p>
454         */
455        @SearchParamDefinition(name="status", path="DataElement.status", description="The current status of the data element", type="token"  )
456        public static final String SP_STATUS = "status";
457
458        /**
459         * <b>Fluent Client</b> search parameter constant for <b>status</b>
460         * <p>
461         * Description: <b>The current status of the data element</b><br>
462         * Type: <b>token</b><br>
463         * Path: <b>DataElement.status</b><br>
464         * </p>
465         */
466        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
467
468        /**
469         * Search parameter constant for <b>date</b>
470         * <p>
471         * Description: <b>The data element publication date</b><br>
472         * Type: <b>date</b><br>
473         * Path: <b>DataElement.date</b><br>
474         * </p>
475         */
476        @SearchParamDefinition(name="date", path="DataElement.date", description="The data element publication date", type="date"  )
477        public static final String SP_DATE = "date";
478
479        /**
480         * <b>Fluent Client</b> search parameter constant for <b>date</b>
481         * <p>
482         * Description: <b>The data element publication date</b><br>
483         * Type: <b>date</b><br>
484         * Path: <b>DataElement.date</b><br>
485         * </p>
486         */
487        public static final DateClientParam DATE = new DateClientParam(SP_DATE);
488
489        /**
490         * Search parameter constant for <b>code</b>
491         * <p>
492         * Description: <b>A code for the data element (server may choose to do subsumption)</b><br>
493         * Type: <b>token</b><br>
494         * Path: <b>DataElement.element.code</b><br>
495         * </p>
496         */
497        @SearchParamDefinition(name="code", path="DataElement.element.code", description="A code for the data element (server may choose to do subsumption)", type="token"  )
498        public static final String SP_CODE = "code";
499
500        /**
501         * <b>Fluent Client</b> search parameter constant for <b>code</b>
502         * <p>
503         * Description: <b>A code for the data element (server may choose to do subsumption)</b><br>
504         * Type: <b>token</b><br>
505         * Path: <b>DataElement.element.code</b><br>
506         * </p>
507         */
508        public static final TokenClientParam CODE = new TokenClientParam(SP_CODE);
509
510        /**
511         * Search parameter constant for <b>context</b>
512         * <p>
513         * Description: <b>A use context assigned to the data element</b><br>
514         * Type: <b>token</b><br>
515         * Path: <b>DataElement.useContext</b><br>
516         * </p>
517         */
518        @SearchParamDefinition(name="context", path="DataElement.useContext", description="A use context assigned to the data element", type="token"  )
519        public static final String SP_CONTEXT = "context";
520
521        /**
522         * <b>Fluent Client</b> search parameter constant for <b>context</b>
523         * <p>
524         * Description: <b>A use context assigned to the data element</b><br>
525         * Type: <b>token</b><br>
526         * Path: <b>DataElement.useContext</b><br>
527         * </p>
528         */
529        public static final TokenClientParam CONTEXT = new TokenClientParam(SP_CONTEXT);
530
531        /**
532         * Search parameter constant for <b>url</b>
533         * <p>
534         * Description: <b>The official URL for the data element</b><br>
535         * Type: <b>uri</b><br>
536         * Path: <b>DataElement.url</b><br>
537         * </p>
538         */
539        @SearchParamDefinition(name="url", path="DataElement.url", description="The official URL for the data element", type="uri"  )
540        public static final String SP_URL = "url";
541
542        /**
543         * <b>Fluent Client</b> search parameter constant for <b>url</b>
544         * <p>
545         * Description: <b>The official URL for the data element</b><br>
546         * Type: <b>uri</b><br>
547         * Path: <b>DataElement.url</b><br>
548         * </p>
549         */
550        public static final UriClientParam URL = new UriClientParam(SP_URL);
551
552        /**
553         * Search parameter constant for <b>stringency</b>
554         * <p>
555         * Description: <b>The stringency of the data element definition</b><br>
556         * Type: <b>token</b><br>
557         * Path: <b>DataElement.stringency</b><br>
558         * </p>
559         */
560        @SearchParamDefinition(name="stringency", path="DataElement.stringency", description="The stringency of the data element definition", type="token"  )
561        public static final String SP_STRINGENCY = "stringency";
562
563        /**
564         * <b>Fluent Client</b> search parameter constant for <b>stringency</b>
565         * <p>
566         * Description: <b>The stringency of the data element definition</b><br>
567         * Type: <b>token</b><br>
568         * Path: <b>DataElement.stringency</b><br>
569         * </p>
570         */
571        public static final TokenClientParam STRINGENCY = new TokenClientParam(SP_STRINGENCY);
572
573
574
575        @Child(name="url", type=UriDt.class, order=0, min=0, max=1, summary=true, modifier=false)       
576        @Description(
577                shortDefinition="",
578                formalDefinition="An absolute URL that is used to identify this data element 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 data element is (or will be) published"
579        )
580        private UriDt myUrl;
581        
582        @Child(name="identifier", type=IdentifierDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)       
583        @Description(
584                shortDefinition="",
585                formalDefinition="Formal identifier that is used to identify this data element when it is represented in other formats, or referenced in a specification, model, design or an instance."
586        )
587        private java.util.List<IdentifierDt> myIdentifier;
588        
589        @Child(name="version", type=StringDt.class, order=2, min=0, max=1, summary=true, modifier=false)        
590        @Description(
591                shortDefinition="",
592                formalDefinition="The identifier that is used to identify this version of the data element when it is referenced in a StructureDefinition, Questionnaire or instance. This is an arbitrary value managed by the definition author manually."
593        )
594        private StringDt myVersion;
595        
596        @Child(name="name", type=StringDt.class, order=3, min=0, max=1, summary=true, modifier=false)   
597        @Description(
598                shortDefinition="",
599                formalDefinition="The term used by humans to refer to the data element.  Should ideally be unique within the context in which the data element is expected to be used."
600        )
601        private StringDt myName;
602        
603        @Child(name="status", type=CodeDt.class, order=4, min=1, max=1, summary=true, modifier=false)   
604        @Description(
605                shortDefinition="",
606                formalDefinition="The status of the data element"
607        )
608        private BoundCodeDt<ConformanceResourceStatusEnum> myStatus;
609        
610        @Child(name="experimental", type=BooleanDt.class, order=5, min=0, max=1, summary=true, modifier=false)  
611        @Description(
612                shortDefinition="",
613                formalDefinition="A flag to indicate that this search data element definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage"
614        )
615        private BooleanDt myExperimental;
616        
617        @Child(name="publisher", type=StringDt.class, order=6, min=0, max=1, summary=true, modifier=false)      
618        @Description(
619                shortDefinition="",
620                formalDefinition="The name of the individual or organization that published the data element"
621        )
622        private StringDt myPublisher;
623        
624        @Child(name="contact", order=7, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
625        @Description(
626                shortDefinition="",
627                formalDefinition="Contacts to assist a user in finding and communicating with the publisher"
628        )
629        private java.util.List<Contact> myContact;
630        
631        @Child(name="date", type=DateTimeDt.class, order=8, min=0, max=1, summary=true, modifier=false) 
632        @Description(
633                shortDefinition="",
634                formalDefinition="The date this version of the data element 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 data element  changes"
635        )
636        private DateTimeDt myDate;
637        
638        @Child(name="useContext", type=CodeableConceptDt.class, order=9, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)  
639        @Description(
640                shortDefinition="",
641                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 data element definitions."
642        )
643        private java.util.List<CodeableConceptDt> myUseContext;
644        
645        @Child(name="copyright", type=StringDt.class, order=10, min=0, max=1, summary=false, modifier=false)    
646        @Description(
647                shortDefinition="",
648                formalDefinition="A copyright statement relating to the definition of the data element. Copyright statements are generally legal restrictions on the use and publishing of the details of the definition of the data element"
649        )
650        private StringDt myCopyright;
651        
652        @Child(name="stringency", type=CodeDt.class, order=11, min=0, max=1, summary=true, modifier=false)      
653        @Description(
654                shortDefinition="",
655                formalDefinition="Identifies how precise the data element is in its definition"
656        )
657        private BoundCodeDt<DataElementStringencyEnum> myStringency;
658        
659        @Child(name="mapping", order=12, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
660        @Description(
661                shortDefinition="",
662                formalDefinition="Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence with"
663        )
664        private java.util.List<Mapping> myMapping;
665        
666        @Child(name="element", type=ElementDefinitionDt.class, order=13, min=1, max=Child.MAX_UNLIMITED, summary=true, modifier=false)  
667        @Description(
668                shortDefinition="",
669                formalDefinition="Defines the structure, type, allowed values and other constraining characteristics of the data element"
670        )
671        private java.util.List<ElementDefinitionDt> myElement;
672        
673
674        @Override
675        public boolean isEmpty() {
676                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myUrl,  myIdentifier,  myVersion,  myName,  myStatus,  myExperimental,  myPublisher,  myContact,  myDate,  myUseContext,  myCopyright,  myStringency,  myMapping,  myElement);
677        }
678        
679        @Override
680        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
681                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myUrl, myIdentifier, myVersion, myName, myStatus, myExperimental, myPublisher, myContact, myDate, myUseContext, myCopyright, myStringency, myMapping, myElement);
682        }
683
684        /**
685         * Gets the value(s) for <b>url</b> ().
686         * creating it if it does
687         * not exist. Will not return <code>null</code>.
688         *
689     * <p>
690     * <b>Definition:</b>
691     * An absolute URL that is used to identify this data element 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 data element is (or will be) published
692     * </p> 
693         */
694        public UriDt getUrlElement() {  
695                if (myUrl == null) {
696                        myUrl = new UriDt();
697                }
698                return myUrl;
699        }
700
701        
702        /**
703         * Gets the value(s) for <b>url</b> ().
704         * creating it if it does
705         * not exist. Will not return <code>null</code>.
706         *
707     * <p>
708     * <b>Definition:</b>
709     * An absolute URL that is used to identify this data element 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 data element is (or will be) published
710     * </p> 
711         */
712        public String getUrl() {  
713                return getUrlElement().getValue();
714        }
715
716        /**
717         * Sets the value(s) for <b>url</b> ()
718         *
719     * <p>
720     * <b>Definition:</b>
721     * An absolute URL that is used to identify this data element 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 data element is (or will be) published
722     * </p> 
723         */
724        public DataElement setUrl(UriDt theValue) {
725                myUrl = theValue;
726                return this;
727        }
728        
729        
730
731        /**
732         * Sets the value for <b>url</b> ()
733         *
734     * <p>
735     * <b>Definition:</b>
736     * An absolute URL that is used to identify this data element 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 data element is (or will be) published
737     * </p> 
738         */
739        public DataElement setUrl( String theUri) {
740                myUrl = new UriDt(theUri); 
741                return this; 
742        }
743
744 
745        /**
746         * Gets the value(s) for <b>identifier</b> ().
747         * creating it if it does
748         * not exist. Will not return <code>null</code>.
749         *
750     * <p>
751     * <b>Definition:</b>
752     * Formal identifier that is used to identify this data element when it is represented in other formats, or referenced in a specification, model, design or an instance.
753     * </p> 
754         */
755        public java.util.List<IdentifierDt> getIdentifier() {  
756                if (myIdentifier == null) {
757                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
758                }
759                return myIdentifier;
760        }
761
762        /**
763         * Sets the value(s) for <b>identifier</b> ()
764         *
765     * <p>
766     * <b>Definition:</b>
767     * Formal identifier that is used to identify this data element when it is represented in other formats, or referenced in a specification, model, design or an instance.
768     * </p> 
769         */
770        public DataElement setIdentifier(java.util.List<IdentifierDt> theValue) {
771                myIdentifier = theValue;
772                return this;
773        }
774        
775        
776
777        /**
778         * Adds and returns a new value for <b>identifier</b> ()
779         *
780     * <p>
781     * <b>Definition:</b>
782     * Formal identifier that is used to identify this data element when it is represented in other formats, or referenced in a specification, model, design or an instance.
783     * </p> 
784         */
785        public IdentifierDt addIdentifier() {
786                IdentifierDt newType = new IdentifierDt();
787                getIdentifier().add(newType);
788                return newType; 
789        }
790
791        /**
792         * Adds a given new value for <b>identifier</b> ()
793         *
794         * <p>
795         * <b>Definition:</b>
796         * Formal identifier that is used to identify this data element when it is represented in other formats, or referenced in a specification, model, design or an instance.
797         * </p>
798         * @param theValue The identifier to add (must not be <code>null</code>)
799         */
800        public DataElement addIdentifier(IdentifierDt theValue) {
801                if (theValue == null) {
802                        throw new NullPointerException("theValue must not be null");
803                }
804                getIdentifier().add(theValue);
805                return this;
806        }
807
808        /**
809         * Gets the first repetition for <b>identifier</b> (),
810         * creating it if it does not already exist.
811         *
812     * <p>
813     * <b>Definition:</b>
814     * Formal identifier that is used to identify this data element when it is represented in other formats, or referenced in a specification, model, design or an instance.
815     * </p> 
816         */
817        public IdentifierDt getIdentifierFirstRep() {
818                if (getIdentifier().isEmpty()) {
819                        return addIdentifier();
820                }
821                return getIdentifier().get(0); 
822        }
823  
824        /**
825         * Gets the value(s) for <b>version</b> ().
826         * creating it if it does
827         * not exist. Will not return <code>null</code>.
828         *
829     * <p>
830     * <b>Definition:</b>
831     * The identifier that is used to identify this version of the data element when it is referenced in a StructureDefinition, Questionnaire or instance. This is an arbitrary value managed by the definition author manually.
832     * </p> 
833         */
834        public StringDt getVersionElement() {  
835                if (myVersion == null) {
836                        myVersion = new StringDt();
837                }
838                return myVersion;
839        }
840
841        
842        /**
843         * Gets the value(s) for <b>version</b> ().
844         * creating it if it does
845         * not exist. Will not return <code>null</code>.
846         *
847     * <p>
848     * <b>Definition:</b>
849     * The identifier that is used to identify this version of the data element when it is referenced in a StructureDefinition, Questionnaire or instance. This is an arbitrary value managed by the definition author manually.
850     * </p> 
851         */
852        public String getVersion() {  
853                return getVersionElement().getValue();
854        }
855
856        /**
857         * Sets the value(s) for <b>version</b> ()
858         *
859     * <p>
860     * <b>Definition:</b>
861     * The identifier that is used to identify this version of the data element when it is referenced in a StructureDefinition, Questionnaire or instance. This is an arbitrary value managed by the definition author manually.
862     * </p> 
863         */
864        public DataElement setVersion(StringDt theValue) {
865                myVersion = theValue;
866                return this;
867        }
868        
869        
870
871        /**
872         * Sets the value for <b>version</b> ()
873         *
874     * <p>
875     * <b>Definition:</b>
876     * The identifier that is used to identify this version of the data element when it is referenced in a StructureDefinition, Questionnaire or instance. This is an arbitrary value managed by the definition author manually.
877     * </p> 
878         */
879        public DataElement setVersion( String theString) {
880                myVersion = new StringDt(theString); 
881                return this; 
882        }
883
884 
885        /**
886         * Gets the value(s) for <b>name</b> ().
887         * creating it if it does
888         * not exist. Will not return <code>null</code>.
889         *
890     * <p>
891     * <b>Definition:</b>
892     * The term used by humans to refer to the data element.  Should ideally be unique within the context in which the data element is expected to be used.
893     * </p> 
894         */
895        public StringDt getNameElement() {  
896                if (myName == null) {
897                        myName = new StringDt();
898                }
899                return myName;
900        }
901
902        
903        /**
904         * Gets the value(s) for <b>name</b> ().
905         * creating it if it does
906         * not exist. Will not return <code>null</code>.
907         *
908     * <p>
909     * <b>Definition:</b>
910     * The term used by humans to refer to the data element.  Should ideally be unique within the context in which the data element is expected to be used.
911     * </p> 
912         */
913        public String getName() {  
914                return getNameElement().getValue();
915        }
916
917        /**
918         * Sets the value(s) for <b>name</b> ()
919         *
920     * <p>
921     * <b>Definition:</b>
922     * The term used by humans to refer to the data element.  Should ideally be unique within the context in which the data element is expected to be used.
923     * </p> 
924         */
925        public DataElement setName(StringDt theValue) {
926                myName = theValue;
927                return this;
928        }
929        
930        
931
932        /**
933         * Sets the value for <b>name</b> ()
934         *
935     * <p>
936     * <b>Definition:</b>
937     * The term used by humans to refer to the data element.  Should ideally be unique within the context in which the data element is expected to be used.
938     * </p> 
939         */
940        public DataElement setName( String theString) {
941                myName = new StringDt(theString); 
942                return this; 
943        }
944
945 
946        /**
947         * Gets the value(s) for <b>status</b> ().
948         * creating it if it does
949         * not exist. Will not return <code>null</code>.
950         *
951     * <p>
952     * <b>Definition:</b>
953     * The status of the data element
954     * </p> 
955         */
956        public BoundCodeDt<ConformanceResourceStatusEnum> getStatusElement() {  
957                if (myStatus == null) {
958                        myStatus = new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER);
959                }
960                return myStatus;
961        }
962
963        
964        /**
965         * Gets the value(s) for <b>status</b> ().
966         * creating it if it does
967         * not exist. Will not return <code>null</code>.
968         *
969     * <p>
970     * <b>Definition:</b>
971     * The status of the data element
972     * </p> 
973         */
974        public String getStatus() {  
975                return getStatusElement().getValue();
976        }
977
978        /**
979         * Sets the value(s) for <b>status</b> ()
980         *
981     * <p>
982     * <b>Definition:</b>
983     * The status of the data element
984     * </p> 
985         */
986        public DataElement setStatus(BoundCodeDt<ConformanceResourceStatusEnum> theValue) {
987                myStatus = theValue;
988                return this;
989        }
990        
991        
992
993        /**
994         * Sets the value(s) for <b>status</b> ()
995         *
996     * <p>
997     * <b>Definition:</b>
998     * The status of the data element
999     * </p> 
1000         */
1001        public DataElement setStatus(ConformanceResourceStatusEnum theValue) {
1002                setStatus(new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER, theValue));
1003                
1004/*
1005                getStatusElement().setValueAsEnum(theValue);
1006*/
1007                return this;
1008        }
1009
1010  
1011        /**
1012         * Gets the value(s) for <b>experimental</b> ().
1013         * creating it if it does
1014         * not exist. Will not return <code>null</code>.
1015         *
1016     * <p>
1017     * <b>Definition:</b>
1018     * A flag to indicate that this search data element definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1019     * </p> 
1020         */
1021        public BooleanDt getExperimentalElement() {  
1022                if (myExperimental == null) {
1023                        myExperimental = new BooleanDt();
1024                }
1025                return myExperimental;
1026        }
1027
1028        
1029        /**
1030         * Gets the value(s) for <b>experimental</b> ().
1031         * creating it if it does
1032         * not exist. Will not return <code>null</code>.
1033         *
1034     * <p>
1035     * <b>Definition:</b>
1036     * A flag to indicate that this search data element definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1037     * </p> 
1038         */
1039        public Boolean getExperimental() {  
1040                return getExperimentalElement().getValue();
1041        }
1042
1043        /**
1044         * Sets the value(s) for <b>experimental</b> ()
1045         *
1046     * <p>
1047     * <b>Definition:</b>
1048     * A flag to indicate that this search data element definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1049     * </p> 
1050         */
1051        public DataElement setExperimental(BooleanDt theValue) {
1052                myExperimental = theValue;
1053                return this;
1054        }
1055        
1056        
1057
1058        /**
1059         * Sets the value for <b>experimental</b> ()
1060         *
1061     * <p>
1062     * <b>Definition:</b>
1063     * A flag to indicate that this search data element definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1064     * </p> 
1065         */
1066        public DataElement setExperimental( boolean theBoolean) {
1067                myExperimental = new BooleanDt(theBoolean); 
1068                return this; 
1069        }
1070
1071 
1072        /**
1073         * Gets the value(s) for <b>publisher</b> ().
1074         * creating it if it does
1075         * not exist. Will not return <code>null</code>.
1076         *
1077     * <p>
1078     * <b>Definition:</b>
1079     * The name of the individual or organization that published the data element
1080     * </p> 
1081         */
1082        public StringDt getPublisherElement() {  
1083                if (myPublisher == null) {
1084                        myPublisher = new StringDt();
1085                }
1086                return myPublisher;
1087        }
1088
1089        
1090        /**
1091         * Gets the value(s) for <b>publisher</b> ().
1092         * creating it if it does
1093         * not exist. Will not return <code>null</code>.
1094         *
1095     * <p>
1096     * <b>Definition:</b>
1097     * The name of the individual or organization that published the data element
1098     * </p> 
1099         */
1100        public String getPublisher() {  
1101                return getPublisherElement().getValue();
1102        }
1103
1104        /**
1105         * Sets the value(s) for <b>publisher</b> ()
1106         *
1107     * <p>
1108     * <b>Definition:</b>
1109     * The name of the individual or organization that published the data element
1110     * </p> 
1111         */
1112        public DataElement setPublisher(StringDt theValue) {
1113                myPublisher = theValue;
1114                return this;
1115        }
1116        
1117        
1118
1119        /**
1120         * Sets the value for <b>publisher</b> ()
1121         *
1122     * <p>
1123     * <b>Definition:</b>
1124     * The name of the individual or organization that published the data element
1125     * </p> 
1126         */
1127        public DataElement setPublisher( String theString) {
1128                myPublisher = new StringDt(theString); 
1129                return this; 
1130        }
1131
1132 
1133        /**
1134         * Gets the value(s) for <b>contact</b> ().
1135         * creating it if it does
1136         * not exist. Will not return <code>null</code>.
1137         *
1138     * <p>
1139     * <b>Definition:</b>
1140     * Contacts to assist a user in finding and communicating with the publisher
1141     * </p> 
1142         */
1143        public java.util.List<Contact> getContact() {  
1144                if (myContact == null) {
1145                        myContact = new java.util.ArrayList<Contact>();
1146                }
1147                return myContact;
1148        }
1149
1150        /**
1151         * Sets the value(s) for <b>contact</b> ()
1152         *
1153     * <p>
1154     * <b>Definition:</b>
1155     * Contacts to assist a user in finding and communicating with the publisher
1156     * </p> 
1157         */
1158        public DataElement setContact(java.util.List<Contact> theValue) {
1159                myContact = theValue;
1160                return this;
1161        }
1162        
1163        
1164
1165        /**
1166         * Adds and returns a new value for <b>contact</b> ()
1167         *
1168     * <p>
1169     * <b>Definition:</b>
1170     * Contacts to assist a user in finding and communicating with the publisher
1171     * </p> 
1172         */
1173        public Contact addContact() {
1174                Contact newType = new Contact();
1175                getContact().add(newType);
1176                return newType; 
1177        }
1178
1179        /**
1180         * Adds a given new value for <b>contact</b> ()
1181         *
1182         * <p>
1183         * <b>Definition:</b>
1184         * Contacts to assist a user in finding and communicating with the publisher
1185         * </p>
1186         * @param theValue The contact to add (must not be <code>null</code>)
1187         */
1188        public DataElement addContact(Contact theValue) {
1189                if (theValue == null) {
1190                        throw new NullPointerException("theValue must not be null");
1191                }
1192                getContact().add(theValue);
1193                return this;
1194        }
1195
1196        /**
1197         * Gets the first repetition for <b>contact</b> (),
1198         * creating it if it does not already exist.
1199         *
1200     * <p>
1201     * <b>Definition:</b>
1202     * Contacts to assist a user in finding and communicating with the publisher
1203     * </p> 
1204         */
1205        public Contact getContactFirstRep() {
1206                if (getContact().isEmpty()) {
1207                        return addContact();
1208                }
1209                return getContact().get(0); 
1210        }
1211  
1212        /**
1213         * Gets the value(s) for <b>date</b> ().
1214         * creating it if it does
1215         * not exist. Will not return <code>null</code>.
1216         *
1217     * <p>
1218     * <b>Definition:</b>
1219     * The date this version of the data element 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 data element  changes
1220     * </p> 
1221         */
1222        public DateTimeDt getDateElement() {  
1223                if (myDate == null) {
1224                        myDate = new DateTimeDt();
1225                }
1226                return myDate;
1227        }
1228
1229        
1230        /**
1231         * Gets the value(s) for <b>date</b> ().
1232         * creating it if it does
1233         * not exist. Will not return <code>null</code>.
1234         *
1235     * <p>
1236     * <b>Definition:</b>
1237     * The date this version of the data element 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 data element  changes
1238     * </p> 
1239         */
1240        public Date getDate() {  
1241                return getDateElement().getValue();
1242        }
1243
1244        /**
1245         * Sets the value(s) for <b>date</b> ()
1246         *
1247     * <p>
1248     * <b>Definition:</b>
1249     * The date this version of the data element 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 data element  changes
1250     * </p> 
1251         */
1252        public DataElement setDate(DateTimeDt theValue) {
1253                myDate = theValue;
1254                return this;
1255        }
1256        
1257        
1258
1259        /**
1260         * Sets the value for <b>date</b> ()
1261         *
1262     * <p>
1263     * <b>Definition:</b>
1264     * The date this version of the data element 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 data element  changes
1265     * </p> 
1266         */
1267        public DataElement setDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
1268                myDate = new DateTimeDt(theDate, thePrecision); 
1269                return this; 
1270        }
1271
1272        /**
1273         * Sets the value for <b>date</b> ()
1274         *
1275     * <p>
1276     * <b>Definition:</b>
1277     * The date this version of the data element 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 data element  changes
1278     * </p> 
1279         */
1280        public DataElement setDateWithSecondsPrecision( Date theDate) {
1281                myDate = new DateTimeDt(theDate); 
1282                return this; 
1283        }
1284
1285 
1286        /**
1287         * Gets the value(s) for <b>useContext</b> ().
1288         * creating it if it does
1289         * not exist. Will not return <code>null</code>.
1290         *
1291     * <p>
1292     * <b>Definition:</b>
1293     * 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 data element definitions.
1294     * </p> 
1295         */
1296        public java.util.List<CodeableConceptDt> getUseContext() {  
1297                if (myUseContext == null) {
1298                        myUseContext = new java.util.ArrayList<CodeableConceptDt>();
1299                }
1300                return myUseContext;
1301        }
1302
1303        /**
1304         * Sets the value(s) for <b>useContext</b> ()
1305         *
1306     * <p>
1307     * <b>Definition:</b>
1308     * 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 data element definitions.
1309     * </p> 
1310         */
1311        public DataElement setUseContext(java.util.List<CodeableConceptDt> theValue) {
1312                myUseContext = theValue;
1313                return this;
1314        }
1315        
1316        
1317
1318        /**
1319         * Adds and returns a new value for <b>useContext</b> ()
1320         *
1321     * <p>
1322     * <b>Definition:</b>
1323     * 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 data element definitions.
1324     * </p> 
1325         */
1326        public CodeableConceptDt addUseContext() {
1327                CodeableConceptDt newType = new CodeableConceptDt();
1328                getUseContext().add(newType);
1329                return newType; 
1330        }
1331
1332        /**
1333         * Adds a given new value for <b>useContext</b> ()
1334         *
1335         * <p>
1336         * <b>Definition:</b>
1337         * 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 data element definitions.
1338         * </p>
1339         * @param theValue The useContext to add (must not be <code>null</code>)
1340         */
1341        public DataElement addUseContext(CodeableConceptDt theValue) {
1342                if (theValue == null) {
1343                        throw new NullPointerException("theValue must not be null");
1344                }
1345                getUseContext().add(theValue);
1346                return this;
1347        }
1348
1349        /**
1350         * Gets the first repetition for <b>useContext</b> (),
1351         * creating it if it does not already exist.
1352         *
1353     * <p>
1354     * <b>Definition:</b>
1355     * 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 data element definitions.
1356     * </p> 
1357         */
1358        public CodeableConceptDt getUseContextFirstRep() {
1359                if (getUseContext().isEmpty()) {
1360                        return addUseContext();
1361                }
1362                return getUseContext().get(0); 
1363        }
1364  
1365        /**
1366         * Gets the value(s) for <b>copyright</b> ().
1367         * creating it if it does
1368         * not exist. Will not return <code>null</code>.
1369         *
1370     * <p>
1371     * <b>Definition:</b>
1372     * A copyright statement relating to the definition of the data element. Copyright statements are generally legal restrictions on the use and publishing of the details of the definition of the data element
1373     * </p> 
1374         */
1375        public StringDt getCopyrightElement() {  
1376                if (myCopyright == null) {
1377                        myCopyright = new StringDt();
1378                }
1379                return myCopyright;
1380        }
1381
1382        
1383        /**
1384         * Gets the value(s) for <b>copyright</b> ().
1385         * creating it if it does
1386         * not exist. Will not return <code>null</code>.
1387         *
1388     * <p>
1389     * <b>Definition:</b>
1390     * A copyright statement relating to the definition of the data element. Copyright statements are generally legal restrictions on the use and publishing of the details of the definition of the data element
1391     * </p> 
1392         */
1393        public String getCopyright() {  
1394                return getCopyrightElement().getValue();
1395        }
1396
1397        /**
1398         * Sets the value(s) for <b>copyright</b> ()
1399         *
1400     * <p>
1401     * <b>Definition:</b>
1402     * A copyright statement relating to the definition of the data element. Copyright statements are generally legal restrictions on the use and publishing of the details of the definition of the data element
1403     * </p> 
1404         */
1405        public DataElement setCopyright(StringDt theValue) {
1406                myCopyright = theValue;
1407                return this;
1408        }
1409        
1410        
1411
1412        /**
1413         * Sets the value for <b>copyright</b> ()
1414         *
1415     * <p>
1416     * <b>Definition:</b>
1417     * A copyright statement relating to the definition of the data element. Copyright statements are generally legal restrictions on the use and publishing of the details of the definition of the data element
1418     * </p> 
1419         */
1420        public DataElement setCopyright( String theString) {
1421                myCopyright = new StringDt(theString); 
1422                return this; 
1423        }
1424
1425 
1426        /**
1427         * Gets the value(s) for <b>stringency</b> ().
1428         * creating it if it does
1429         * not exist. Will not return <code>null</code>.
1430         *
1431     * <p>
1432     * <b>Definition:</b>
1433     * Identifies how precise the data element is in its definition
1434     * </p> 
1435         */
1436        public BoundCodeDt<DataElementStringencyEnum> getStringencyElement() {  
1437                if (myStringency == null) {
1438                        myStringency = new BoundCodeDt<DataElementStringencyEnum>(DataElementStringencyEnum.VALUESET_BINDER);
1439                }
1440                return myStringency;
1441        }
1442
1443        
1444        /**
1445         * Gets the value(s) for <b>stringency</b> ().
1446         * creating it if it does
1447         * not exist. Will not return <code>null</code>.
1448         *
1449     * <p>
1450     * <b>Definition:</b>
1451     * Identifies how precise the data element is in its definition
1452     * </p> 
1453         */
1454        public String getStringency() {  
1455                return getStringencyElement().getValue();
1456        }
1457
1458        /**
1459         * Sets the value(s) for <b>stringency</b> ()
1460         *
1461     * <p>
1462     * <b>Definition:</b>
1463     * Identifies how precise the data element is in its definition
1464     * </p> 
1465         */
1466        public DataElement setStringency(BoundCodeDt<DataElementStringencyEnum> theValue) {
1467                myStringency = theValue;
1468                return this;
1469        }
1470        
1471        
1472
1473        /**
1474         * Sets the value(s) for <b>stringency</b> ()
1475         *
1476     * <p>
1477     * <b>Definition:</b>
1478     * Identifies how precise the data element is in its definition
1479     * </p> 
1480         */
1481        public DataElement setStringency(DataElementStringencyEnum theValue) {
1482                setStringency(new BoundCodeDt<DataElementStringencyEnum>(DataElementStringencyEnum.VALUESET_BINDER, theValue));
1483                
1484/*
1485                getStringencyElement().setValueAsEnum(theValue);
1486*/
1487                return this;
1488        }
1489
1490  
1491        /**
1492         * Gets the value(s) for <b>mapping</b> ().
1493         * creating it if it does
1494         * not exist. Will not return <code>null</code>.
1495         *
1496     * <p>
1497     * <b>Definition:</b>
1498     * Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence with
1499     * </p> 
1500         */
1501        public java.util.List<Mapping> getMapping() {  
1502                if (myMapping == null) {
1503                        myMapping = new java.util.ArrayList<Mapping>();
1504                }
1505                return myMapping;
1506        }
1507
1508        /**
1509         * Sets the value(s) for <b>mapping</b> ()
1510         *
1511     * <p>
1512     * <b>Definition:</b>
1513     * Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence with
1514     * </p> 
1515         */
1516        public DataElement setMapping(java.util.List<Mapping> theValue) {
1517                myMapping = theValue;
1518                return this;
1519        }
1520        
1521        
1522
1523        /**
1524         * Adds and returns a new value for <b>mapping</b> ()
1525         *
1526     * <p>
1527     * <b>Definition:</b>
1528     * Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence with
1529     * </p> 
1530         */
1531        public Mapping addMapping() {
1532                Mapping newType = new Mapping();
1533                getMapping().add(newType);
1534                return newType; 
1535        }
1536
1537        /**
1538         * Adds a given new value for <b>mapping</b> ()
1539         *
1540         * <p>
1541         * <b>Definition:</b>
1542         * Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence with
1543         * </p>
1544         * @param theValue The mapping to add (must not be <code>null</code>)
1545         */
1546        public DataElement addMapping(Mapping theValue) {
1547                if (theValue == null) {
1548                        throw new NullPointerException("theValue must not be null");
1549                }
1550                getMapping().add(theValue);
1551                return this;
1552        }
1553
1554        /**
1555         * Gets the first repetition for <b>mapping</b> (),
1556         * creating it if it does not already exist.
1557         *
1558     * <p>
1559     * <b>Definition:</b>
1560     * Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence with
1561     * </p> 
1562         */
1563        public Mapping getMappingFirstRep() {
1564                if (getMapping().isEmpty()) {
1565                        return addMapping();
1566                }
1567                return getMapping().get(0); 
1568        }
1569  
1570        /**
1571         * Gets the value(s) for <b>element</b> ().
1572         * creating it if it does
1573         * not exist. Will not return <code>null</code>.
1574         *
1575     * <p>
1576     * <b>Definition:</b>
1577     * Defines the structure, type, allowed values and other constraining characteristics of the data element
1578     * </p> 
1579         */
1580        public java.util.List<ElementDefinitionDt> getElement() {  
1581                if (myElement == null) {
1582                        myElement = new java.util.ArrayList<ElementDefinitionDt>();
1583                }
1584                return myElement;
1585        }
1586
1587        /**
1588         * Sets the value(s) for <b>element</b> ()
1589         *
1590     * <p>
1591     * <b>Definition:</b>
1592     * Defines the structure, type, allowed values and other constraining characteristics of the data element
1593     * </p> 
1594         */
1595        public DataElement setElement(java.util.List<ElementDefinitionDt> theValue) {
1596                myElement = theValue;
1597                return this;
1598        }
1599        
1600        
1601
1602        /**
1603         * Adds and returns a new value for <b>element</b> ()
1604         *
1605     * <p>
1606     * <b>Definition:</b>
1607     * Defines the structure, type, allowed values and other constraining characteristics of the data element
1608     * </p> 
1609         */
1610        public ElementDefinitionDt addElement() {
1611                ElementDefinitionDt newType = new ElementDefinitionDt();
1612                getElement().add(newType);
1613                return newType; 
1614        }
1615
1616        /**
1617         * Adds a given new value for <b>element</b> ()
1618         *
1619         * <p>
1620         * <b>Definition:</b>
1621         * Defines the structure, type, allowed values and other constraining characteristics of the data element
1622         * </p>
1623         * @param theValue The element to add (must not be <code>null</code>)
1624         */
1625        public DataElement addElement(ElementDefinitionDt theValue) {
1626                if (theValue == null) {
1627                        throw new NullPointerException("theValue must not be null");
1628                }
1629                getElement().add(theValue);
1630                return this;
1631        }
1632
1633        /**
1634         * Gets the first repetition for <b>element</b> (),
1635         * creating it if it does not already exist.
1636         *
1637     * <p>
1638     * <b>Definition:</b>
1639     * Defines the structure, type, allowed values and other constraining characteristics of the data element
1640     * </p> 
1641         */
1642        public ElementDefinitionDt getElementFirstRep() {
1643                if (getElement().isEmpty()) {
1644                        return addElement();
1645                }
1646                return getElement().get(0); 
1647        }
1648  
1649        /**
1650         * Block class for child element: <b>DataElement.contact</b> ()
1651         *
1652     * <p>
1653     * <b>Definition:</b>
1654     * Contacts to assist a user in finding and communicating with the publisher
1655     * </p> 
1656         */
1657        @Block()        
1658        public static class Contact 
1659            extends  BaseIdentifiableElement        implements IResourceBlock {
1660        
1661        @Child(name="name", type=StringDt.class, order=0, min=0, max=1, summary=true, modifier=false)   
1662        @Description(
1663                shortDefinition="",
1664                formalDefinition="The name of an individual to contact regarding the data element"
1665        )
1666        private StringDt myName;
1667        
1668        @Child(name="telecom", type=ContactPointDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
1669        @Description(
1670                shortDefinition="",
1671                formalDefinition="Contact details for individual (if a name was provided) or the publisher"
1672        )
1673        private java.util.List<ContactPointDt> myTelecom;
1674        
1675
1676        @Override
1677        public boolean isEmpty() {
1678                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myTelecom);
1679        }
1680        
1681        @Override
1682        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1683                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myTelecom);
1684        }
1685
1686        /**
1687         * Gets the value(s) for <b>name</b> ().
1688         * creating it if it does
1689         * not exist. Will not return <code>null</code>.
1690         *
1691     * <p>
1692     * <b>Definition:</b>
1693     * The name of an individual to contact regarding the data element
1694     * </p> 
1695         */
1696        public StringDt getNameElement() {  
1697                if (myName == null) {
1698                        myName = new StringDt();
1699                }
1700                return myName;
1701        }
1702
1703        
1704        /**
1705         * Gets the value(s) for <b>name</b> ().
1706         * creating it if it does
1707         * not exist. Will not return <code>null</code>.
1708         *
1709     * <p>
1710     * <b>Definition:</b>
1711     * The name of an individual to contact regarding the data element
1712     * </p> 
1713         */
1714        public String getName() {  
1715                return getNameElement().getValue();
1716        }
1717
1718        /**
1719         * Sets the value(s) for <b>name</b> ()
1720         *
1721     * <p>
1722     * <b>Definition:</b>
1723     * The name of an individual to contact regarding the data element
1724     * </p> 
1725         */
1726        public Contact setName(StringDt theValue) {
1727                myName = theValue;
1728                return this;
1729        }
1730        
1731        
1732
1733        /**
1734         * Sets the value for <b>name</b> ()
1735         *
1736     * <p>
1737     * <b>Definition:</b>
1738     * The name of an individual to contact regarding the data element
1739     * </p> 
1740         */
1741        public Contact setName( String theString) {
1742                myName = new StringDt(theString); 
1743                return this; 
1744        }
1745
1746 
1747        /**
1748         * Gets the value(s) for <b>telecom</b> ().
1749         * creating it if it does
1750         * not exist. Will not return <code>null</code>.
1751         *
1752     * <p>
1753     * <b>Definition:</b>
1754     * Contact details for individual (if a name was provided) or the publisher
1755     * </p> 
1756         */
1757        public java.util.List<ContactPointDt> getTelecom() {  
1758                if (myTelecom == null) {
1759                        myTelecom = new java.util.ArrayList<ContactPointDt>();
1760                }
1761                return myTelecom;
1762        }
1763
1764        /**
1765         * Sets the value(s) for <b>telecom</b> ()
1766         *
1767     * <p>
1768     * <b>Definition:</b>
1769     * Contact details for individual (if a name was provided) or the publisher
1770     * </p> 
1771         */
1772        public Contact setTelecom(java.util.List<ContactPointDt> theValue) {
1773                myTelecom = theValue;
1774                return this;
1775        }
1776        
1777        
1778
1779        /**
1780         * Adds and returns a new value for <b>telecom</b> ()
1781         *
1782     * <p>
1783     * <b>Definition:</b>
1784     * Contact details for individual (if a name was provided) or the publisher
1785     * </p> 
1786         */
1787        public ContactPointDt addTelecom() {
1788                ContactPointDt newType = new ContactPointDt();
1789                getTelecom().add(newType);
1790                return newType; 
1791        }
1792
1793        /**
1794         * Adds a given new value for <b>telecom</b> ()
1795         *
1796         * <p>
1797         * <b>Definition:</b>
1798         * Contact details for individual (if a name was provided) or the publisher
1799         * </p>
1800         * @param theValue The telecom to add (must not be <code>null</code>)
1801         */
1802        public Contact addTelecom(ContactPointDt theValue) {
1803                if (theValue == null) {
1804                        throw new NullPointerException("theValue must not be null");
1805                }
1806                getTelecom().add(theValue);
1807                return this;
1808        }
1809
1810        /**
1811         * Gets the first repetition for <b>telecom</b> (),
1812         * creating it if it does not already exist.
1813         *
1814     * <p>
1815     * <b>Definition:</b>
1816     * Contact details for individual (if a name was provided) or the publisher
1817     * </p> 
1818         */
1819        public ContactPointDt getTelecomFirstRep() {
1820                if (getTelecom().isEmpty()) {
1821                        return addTelecom();
1822                }
1823                return getTelecom().get(0); 
1824        }
1825  
1826
1827
1828        }
1829
1830
1831        /**
1832         * Block class for child element: <b>DataElement.mapping</b> ()
1833         *
1834     * <p>
1835     * <b>Definition:</b>
1836     * Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence with
1837     * </p> 
1838         */
1839        @Block()        
1840        public static class Mapping 
1841            extends  BaseIdentifiableElement        implements IResourceBlock {
1842        
1843        @Child(name="identity", type=IdDt.class, order=0, min=1, max=1, summary=false, modifier=false)  
1844        @Description(
1845                shortDefinition="",
1846                formalDefinition="An internal id that is used to identify this mapping set when specific mappings are made on a per-element basis"
1847        )
1848        private IdDt myIdentity;
1849        
1850        @Child(name="uri", type=UriDt.class, order=1, min=0, max=1, summary=false, modifier=false)      
1851        @Description(
1852                shortDefinition="",
1853                formalDefinition="An absolute URI that identifies the specification that this mapping is expressed to"
1854        )
1855        private UriDt myUri;
1856        
1857        @Child(name="name", type=StringDt.class, order=2, min=0, max=1, summary=false, modifier=false)  
1858        @Description(
1859                shortDefinition="",
1860                formalDefinition="A name for the specification that is being mapped to"
1861        )
1862        private StringDt myName;
1863        
1864        @Child(name="comments", type=StringDt.class, order=3, min=0, max=1, summary=false, modifier=false)      
1865        @Description(
1866                shortDefinition="",
1867                formalDefinition="Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage"
1868        )
1869        private StringDt myComments;
1870        
1871
1872        @Override
1873        public boolean isEmpty() {
1874                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentity,  myUri,  myName,  myComments);
1875        }
1876        
1877        @Override
1878        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1879                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentity, myUri, myName, myComments);
1880        }
1881
1882        /**
1883         * Gets the value(s) for <b>identity</b> ().
1884         * creating it if it does
1885         * not exist. Will not return <code>null</code>.
1886         *
1887     * <p>
1888     * <b>Definition:</b>
1889     * An internal id that is used to identify this mapping set when specific mappings are made on a per-element basis
1890     * </p> 
1891         */
1892        public IdDt getIdentityElement() {  
1893                if (myIdentity == null) {
1894                        myIdentity = new IdDt();
1895                }
1896                return myIdentity;
1897        }
1898
1899        
1900        /**
1901         * Gets the value(s) for <b>identity</b> ().
1902         * creating it if it does
1903         * not exist. Will not return <code>null</code>.
1904         *
1905     * <p>
1906     * <b>Definition:</b>
1907     * An internal id that is used to identify this mapping set when specific mappings are made on a per-element basis
1908     * </p> 
1909         */
1910        public String getIdentity() {  
1911                return getIdentityElement().getValue();
1912        }
1913
1914        /**
1915         * Sets the value(s) for <b>identity</b> ()
1916         *
1917     * <p>
1918     * <b>Definition:</b>
1919     * An internal id that is used to identify this mapping set when specific mappings are made on a per-element basis
1920     * </p> 
1921         */
1922        public Mapping setIdentity(IdDt theValue) {
1923                myIdentity = theValue;
1924                return this;
1925        }
1926        
1927        
1928
1929        /**
1930         * Sets the value for <b>identity</b> ()
1931         *
1932     * <p>
1933     * <b>Definition:</b>
1934     * An internal id that is used to identify this mapping set when specific mappings are made on a per-element basis
1935     * </p> 
1936         */
1937        public Mapping setIdentity( String theId) {
1938                myIdentity = new IdDt(theId); 
1939                return this; 
1940        }
1941
1942 
1943        /**
1944         * Gets the value(s) for <b>uri</b> ().
1945         * creating it if it does
1946         * not exist. Will not return <code>null</code>.
1947         *
1948     * <p>
1949     * <b>Definition:</b>
1950     * An absolute URI that identifies the specification that this mapping is expressed to
1951     * </p> 
1952         */
1953        public UriDt getUriElement() {  
1954                if (myUri == null) {
1955                        myUri = new UriDt();
1956                }
1957                return myUri;
1958        }
1959
1960        
1961        /**
1962         * Gets the value(s) for <b>uri</b> ().
1963         * creating it if it does
1964         * not exist. Will not return <code>null</code>.
1965         *
1966     * <p>
1967     * <b>Definition:</b>
1968     * An absolute URI that identifies the specification that this mapping is expressed to
1969     * </p> 
1970         */
1971        public String getUri() {  
1972                return getUriElement().getValue();
1973        }
1974
1975        /**
1976         * Sets the value(s) for <b>uri</b> ()
1977         *
1978     * <p>
1979     * <b>Definition:</b>
1980     * An absolute URI that identifies the specification that this mapping is expressed to
1981     * </p> 
1982         */
1983        public Mapping setUri(UriDt theValue) {
1984                myUri = theValue;
1985                return this;
1986        }
1987        
1988        
1989
1990        /**
1991         * Sets the value for <b>uri</b> ()
1992         *
1993     * <p>
1994     * <b>Definition:</b>
1995     * An absolute URI that identifies the specification that this mapping is expressed to
1996     * </p> 
1997         */
1998        public Mapping setUri( String theUri) {
1999                myUri = new UriDt(theUri); 
2000                return this; 
2001        }
2002
2003 
2004        /**
2005         * Gets the value(s) for <b>name</b> ().
2006         * creating it if it does
2007         * not exist. Will not return <code>null</code>.
2008         *
2009     * <p>
2010     * <b>Definition:</b>
2011     * A name for the specification that is being mapped to
2012     * </p> 
2013         */
2014        public StringDt getNameElement() {  
2015                if (myName == null) {
2016                        myName = new StringDt();
2017                }
2018                return myName;
2019        }
2020
2021        
2022        /**
2023         * Gets the value(s) for <b>name</b> ().
2024         * creating it if it does
2025         * not exist. Will not return <code>null</code>.
2026         *
2027     * <p>
2028     * <b>Definition:</b>
2029     * A name for the specification that is being mapped to
2030     * </p> 
2031         */
2032        public String getName() {  
2033                return getNameElement().getValue();
2034        }
2035
2036        /**
2037         * Sets the value(s) for <b>name</b> ()
2038         *
2039     * <p>
2040     * <b>Definition:</b>
2041     * A name for the specification that is being mapped to
2042     * </p> 
2043         */
2044        public Mapping setName(StringDt theValue) {
2045                myName = theValue;
2046                return this;
2047        }
2048        
2049        
2050
2051        /**
2052         * Sets the value for <b>name</b> ()
2053         *
2054     * <p>
2055     * <b>Definition:</b>
2056     * A name for the specification that is being mapped to
2057     * </p> 
2058         */
2059        public Mapping setName( String theString) {
2060                myName = new StringDt(theString); 
2061                return this; 
2062        }
2063
2064 
2065        /**
2066         * Gets the value(s) for <b>comments</b> ().
2067         * creating it if it does
2068         * not exist. Will not return <code>null</code>.
2069         *
2070     * <p>
2071     * <b>Definition:</b>
2072     * Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage
2073     * </p> 
2074         */
2075        public StringDt getCommentsElement() {  
2076                if (myComments == null) {
2077                        myComments = new StringDt();
2078                }
2079                return myComments;
2080        }
2081
2082        
2083        /**
2084         * Gets the value(s) for <b>comments</b> ().
2085         * creating it if it does
2086         * not exist. Will not return <code>null</code>.
2087         *
2088     * <p>
2089     * <b>Definition:</b>
2090     * Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage
2091     * </p> 
2092         */
2093        public String getComments() {  
2094                return getCommentsElement().getValue();
2095        }
2096
2097        /**
2098         * Sets the value(s) for <b>comments</b> ()
2099         *
2100     * <p>
2101     * <b>Definition:</b>
2102     * Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage
2103     * </p> 
2104         */
2105        public Mapping setComments(StringDt theValue) {
2106                myComments = theValue;
2107                return this;
2108        }
2109        
2110        
2111
2112        /**
2113         * Sets the value for <b>comments</b> ()
2114         *
2115     * <p>
2116     * <b>Definition:</b>
2117     * Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage
2118     * </p> 
2119         */
2120        public Mapping setComments( String theString) {
2121                myComments = new StringDt(theString); 
2122                return this; 
2123        }
2124
2125 
2126
2127
2128        }
2129
2130
2131
2132
2133    @Override
2134    public String getResourceName() {
2135        return "DataElement";
2136    }
2137    
2138    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
2139        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
2140    }
2141
2142
2143}