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.composite.AnnotationDt;
042import ca.uhn.fhir.model.dstu2.valueset.AnswerFormatEnum;
043import ca.uhn.fhir.model.dstu2.resource.Appointment;
044import ca.uhn.fhir.model.dstu2.valueset.AppointmentStatusEnum;
045import ca.uhn.fhir.model.dstu2.valueset.AssertionDirectionTypeEnum;
046import ca.uhn.fhir.model.dstu2.valueset.AssertionOperatorTypeEnum;
047import ca.uhn.fhir.model.dstu2.valueset.AssertionResponseTypesEnum;
048import ca.uhn.fhir.model.dstu2.composite.AttachmentDt;
049import ca.uhn.fhir.model.dstu2.valueset.AuditEventActionEnum;
050import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectLifecycleEnum;
051import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectRoleEnum;
052import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectTypeEnum;
053import ca.uhn.fhir.model.dstu2.valueset.AuditEventOutcomeEnum;
054import ca.uhn.fhir.model.dstu2.valueset.AuditEventParticipantNetworkTypeEnum;
055import ca.uhn.fhir.model.dstu2.valueset.AuditEventSourceTypeEnum;
056import ca.uhn.fhir.model.dstu2.valueset.BindingStrengthEnum;
057import ca.uhn.fhir.model.dstu2.resource.BodySite;
058import ca.uhn.fhir.model.dstu2.valueset.BundleTypeEnum;
059import ca.uhn.fhir.model.dstu2.resource.CarePlan;
060import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityStatusEnum;
061import ca.uhn.fhir.model.dstu2.valueset.CarePlanRelationshipEnum;
062import ca.uhn.fhir.model.dstu2.valueset.CarePlanStatusEnum;
063import ca.uhn.fhir.model.dstu2.resource.Claim;
064import ca.uhn.fhir.model.dstu2.resource.ClaimResponse;
065import ca.uhn.fhir.model.dstu2.valueset.ClaimTypeEnum;
066import ca.uhn.fhir.model.dstu2.resource.ClinicalImpression;
067import ca.uhn.fhir.model.dstu2.valueset.ClinicalImpressionStatusEnum;
068import ca.uhn.fhir.model.dstu2.composite.CodeableConceptDt;
069import ca.uhn.fhir.model.dstu2.composite.CodingDt;
070import ca.uhn.fhir.model.dstu2.resource.CommunicationRequest;
071import ca.uhn.fhir.model.dstu2.valueset.CommunicationRequestStatusEnum;
072import ca.uhn.fhir.model.dstu2.valueset.CommunicationStatusEnum;
073import ca.uhn.fhir.model.dstu2.resource.Composition;
074import ca.uhn.fhir.model.dstu2.valueset.CompositionAttestationModeEnum;
075import ca.uhn.fhir.model.dstu2.valueset.CompositionStatusEnum;
076import ca.uhn.fhir.model.dstu2.valueset.ConceptMapEquivalenceEnum;
077import ca.uhn.fhir.model.dstu2.resource.Condition;
078import ca.uhn.fhir.model.dstu2.valueset.ConditionCategoryCodesEnum;
079import ca.uhn.fhir.model.dstu2.valueset.ConditionClinicalStatusCodesEnum;
080import ca.uhn.fhir.model.dstu2.valueset.ConditionVerificationStatusEnum;
081import ca.uhn.fhir.model.dstu2.valueset.ConditionalDeleteStatusEnum;
082import ca.uhn.fhir.model.dstu2.resource.Conformance;
083import ca.uhn.fhir.model.dstu2.valueset.ConformanceEventModeEnum;
084import ca.uhn.fhir.model.dstu2.valueset.ConformanceResourceStatusEnum;
085import ca.uhn.fhir.model.dstu2.valueset.ConformanceStatementKindEnum;
086import ca.uhn.fhir.model.dstu2.composite.ContactPointDt;
087import ca.uhn.fhir.model.dstu2.valueset.ContentTypeEnum;
088import ca.uhn.fhir.model.dstu2.resource.Contract;
089import ca.uhn.fhir.model.dstu2.resource.Coverage;
090import ca.uhn.fhir.model.dstu2.valueset.DataElementStringencyEnum;
091import ca.uhn.fhir.model.dstu2.valueset.DaysOfWeekEnum;
092import ca.uhn.fhir.model.dstu2.valueset.DetectedIssueSeverityEnum;
093import ca.uhn.fhir.model.dstu2.resource.Device;
094import ca.uhn.fhir.model.dstu2.resource.DeviceComponent;
095import ca.uhn.fhir.model.dstu2.resource.DeviceMetric;
096import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationStateEnum;
097import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationTypeEnum;
098import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCategoryEnum;
099import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricColorEnum;
100import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricOperationalStatusEnum;
101import ca.uhn.fhir.model.dstu2.valueset.DeviceStatusEnum;
102import ca.uhn.fhir.model.dstu2.resource.DeviceUseRequest;
103import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestPriorityEnum;
104import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestStatusEnum;
105import ca.uhn.fhir.model.dstu2.resource.DiagnosticOrder;
106import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderPriorityEnum;
107import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderStatusEnum;
108import ca.uhn.fhir.model.dstu2.resource.DiagnosticReport;
109import ca.uhn.fhir.model.dstu2.valueset.DiagnosticReportStatusEnum;
110import ca.uhn.fhir.model.dstu2.valueset.DigitalMediaTypeEnum;
111import ca.uhn.fhir.model.dstu2.valueset.DocumentModeEnum;
112import ca.uhn.fhir.model.dstu2.resource.DocumentReference;
113import ca.uhn.fhir.model.dstu2.valueset.DocumentReferenceStatusEnum;
114import ca.uhn.fhir.model.dstu2.valueset.DocumentRelationshipTypeEnum;
115import ca.uhn.fhir.model.dstu2.composite.ElementDefinitionDt;
116import ca.uhn.fhir.model.dstu2.resource.EligibilityRequest;
117import ca.uhn.fhir.model.dstu2.resource.Encounter;
118import ca.uhn.fhir.model.dstu2.valueset.EncounterClassEnum;
119import ca.uhn.fhir.model.dstu2.valueset.EncounterLocationStatusEnum;
120import ca.uhn.fhir.model.dstu2.valueset.EncounterStateEnum;
121import ca.uhn.fhir.model.dstu2.resource.EnrollmentRequest;
122import ca.uhn.fhir.model.dstu2.resource.EpisodeOfCare;
123import ca.uhn.fhir.model.dstu2.valueset.EpisodeOfCareStatusEnum;
124import ca.uhn.fhir.model.dstu2.valueset.ExtensionContextEnum;
125import ca.uhn.fhir.model.dstu2.valueset.FamilyHistoryStatusEnum;
126import ca.uhn.fhir.model.dstu2.resource.FamilyMemberHistory;
127import ca.uhn.fhir.model.dstu2.valueset.FilterOperatorEnum;
128import ca.uhn.fhir.model.dstu2.valueset.FlagStatusEnum;
129import ca.uhn.fhir.model.dstu2.resource.Goal;
130import ca.uhn.fhir.model.dstu2.valueset.GoalPriorityEnum;
131import ca.uhn.fhir.model.dstu2.valueset.GoalStatusEnum;
132import ca.uhn.fhir.model.dstu2.resource.Group;
133import ca.uhn.fhir.model.dstu2.valueset.GroupTypeEnum;
134import ca.uhn.fhir.model.dstu2.valueset.GuideDependencyTypeEnum;
135import ca.uhn.fhir.model.dstu2.valueset.GuidePageKindEnum;
136import ca.uhn.fhir.model.dstu2.valueset.GuideResourcePurposeEnum;
137import ca.uhn.fhir.model.dstu2.valueset.HTTPVerbEnum;
138import ca.uhn.fhir.model.dstu2.resource.HealthcareService;
139import ca.uhn.fhir.model.dstu2.composite.HumanNameDt;
140import ca.uhn.fhir.model.dstu2.composite.IdentifierDt;
141import ca.uhn.fhir.model.dstu2.valueset.IdentifierTypeCodesEnum;
142import ca.uhn.fhir.model.dstu2.valueset.IdentityAssuranceLevelEnum;
143import ca.uhn.fhir.model.dstu2.resource.ImagingObjectSelection;
144import ca.uhn.fhir.model.dstu2.resource.ImagingStudy;
145import ca.uhn.fhir.model.dstu2.resource.Immunization;
146import ca.uhn.fhir.model.dstu2.valueset.InstanceAvailabilityEnum;
147import ca.uhn.fhir.model.dstu2.valueset.IssueSeverityEnum;
148import ca.uhn.fhir.model.dstu2.valueset.IssueTypeEnum;
149import ca.uhn.fhir.model.dstu2.valueset.KOStitleEnum;
150import ca.uhn.fhir.model.dstu2.valueset.LinkTypeEnum;
151import ca.uhn.fhir.model.dstu2.valueset.ListModeEnum;
152import ca.uhn.fhir.model.dstu2.valueset.ListOrderCodesEnum;
153import ca.uhn.fhir.model.dstu2.valueset.ListStatusEnum;
154import ca.uhn.fhir.model.dstu2.resource.Location;
155import ca.uhn.fhir.model.dstu2.valueset.LocationModeEnum;
156import ca.uhn.fhir.model.dstu2.valueset.LocationStatusEnum;
157import ca.uhn.fhir.model.dstu2.valueset.LocationTypeEnum;
158import ca.uhn.fhir.model.dstu2.valueset.MaritalStatusCodesEnum;
159import ca.uhn.fhir.model.dstu2.valueset.MeasmntPrincipleEnum;
160import ca.uhn.fhir.model.dstu2.resource.Media;
161import ca.uhn.fhir.model.dstu2.resource.Medication;
162import ca.uhn.fhir.model.dstu2.valueset.MedicationAdministrationStatusEnum;
163import ca.uhn.fhir.model.dstu2.valueset.MedicationDispenseStatusEnum;
164import ca.uhn.fhir.model.dstu2.resource.MedicationOrder;
165import ca.uhn.fhir.model.dstu2.valueset.MedicationOrderStatusEnum;
166import ca.uhn.fhir.model.dstu2.resource.MedicationStatement;
167import ca.uhn.fhir.model.dstu2.valueset.MedicationStatementStatusEnum;
168import ca.uhn.fhir.model.dstu2.valueset.MessageEventEnum;
169import ca.uhn.fhir.model.dstu2.valueset.MessageSignificanceCategoryEnum;
170import ca.uhn.fhir.model.dstu2.valueset.MessageTransportEnum;
171import ca.uhn.fhir.model.dstu2.resource.NamingSystem;
172import ca.uhn.fhir.model.dstu2.valueset.NamingSystemIdentifierTypeEnum;
173import ca.uhn.fhir.model.dstu2.valueset.NamingSystemTypeEnum;
174import ca.uhn.fhir.model.dstu2.valueset.NoteTypeEnum;
175import ca.uhn.fhir.model.dstu2.resource.NutritionOrder;
176import ca.uhn.fhir.model.dstu2.valueset.NutritionOrderStatusEnum;
177import ca.uhn.fhir.model.dstu2.resource.Observation;
178import ca.uhn.fhir.model.dstu2.valueset.ObservationRelationshipTypeEnum;
179import ca.uhn.fhir.model.dstu2.valueset.ObservationStatusEnum;
180import ca.uhn.fhir.model.dstu2.resource.OperationDefinition;
181import ca.uhn.fhir.model.dstu2.valueset.OperationKindEnum;
182import ca.uhn.fhir.model.dstu2.resource.OperationOutcome;
183import ca.uhn.fhir.model.dstu2.valueset.OperationParameterUseEnum;
184import ca.uhn.fhir.model.dstu2.resource.Order;
185import ca.uhn.fhir.model.dstu2.valueset.OrderStatusEnum;
186import ca.uhn.fhir.model.dstu2.resource.Organization;
187import ca.uhn.fhir.model.dstu2.valueset.ParticipantRequiredEnum;
188import ca.uhn.fhir.model.dstu2.valueset.ParticipantStatusEnum;
189import ca.uhn.fhir.model.dstu2.valueset.ParticipantTypeEnum;
190import ca.uhn.fhir.model.dstu2.valueset.ParticipationStatusEnum;
191import ca.uhn.fhir.model.dstu2.resource.Patient;
192import ca.uhn.fhir.model.dstu2.valueset.PayeeTypeCodesEnum;
193import ca.uhn.fhir.model.dstu2.composite.PeriodDt;
194import ca.uhn.fhir.model.dstu2.resource.Person;
195import ca.uhn.fhir.model.dstu2.resource.Practitioner;
196import ca.uhn.fhir.model.dstu2.resource.Procedure;
197import ca.uhn.fhir.model.dstu2.resource.ProcedureRequest;
198import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestPriorityEnum;
199import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestStatusEnum;
200import ca.uhn.fhir.model.dstu2.valueset.ProcedureStatusEnum;
201import ca.uhn.fhir.model.dstu2.resource.ProcessRequest;
202import ca.uhn.fhir.model.dstu2.valueset.ProvenanceEntityRoleEnum;
203import ca.uhn.fhir.model.dstu2.composite.QuantityDt;
204import ca.uhn.fhir.model.dstu2.resource.Questionnaire;
205import ca.uhn.fhir.model.dstu2.resource.QuestionnaireResponse;
206import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireResponseStatusEnum;
207import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireStatusEnum;
208import ca.uhn.fhir.model.dstu2.composite.RangeDt;
209import ca.uhn.fhir.model.dstu2.composite.RatioDt;
210import ca.uhn.fhir.model.dstu2.valueset.ReferralMethodEnum;
211import ca.uhn.fhir.model.dstu2.resource.ReferralRequest;
212import ca.uhn.fhir.model.dstu2.valueset.ReferralStatusEnum;
213import ca.uhn.fhir.model.dstu2.resource.RelatedPerson;
214import ca.uhn.fhir.model.dstu2.valueset.RemittanceOutcomeEnum;
215import ca.uhn.fhir.model.dstu2.valueset.ResourceTypeEnum;
216import ca.uhn.fhir.model.dstu2.valueset.ResourceVersionPolicyEnum;
217import ca.uhn.fhir.model.dstu2.valueset.ResponseTypeEnum;
218import ca.uhn.fhir.model.dstu2.valueset.RestfulConformanceModeEnum;
219import ca.uhn.fhir.model.dstu2.valueset.RestfulSecurityServiceEnum;
220import ca.uhn.fhir.model.dstu2.resource.RiskAssessment;
221import ca.uhn.fhir.model.dstu2.valueset.RulesetCodesEnum;
222import ca.uhn.fhir.model.dstu2.composite.SampledDataDt;
223import ca.uhn.fhir.model.dstu2.resource.Schedule;
224import ca.uhn.fhir.model.dstu2.valueset.SearchEntryModeEnum;
225import ca.uhn.fhir.model.dstu2.valueset.SearchModifierCodeEnum;
226import ca.uhn.fhir.model.dstu2.valueset.SearchParamTypeEnum;
227import ca.uhn.fhir.model.dstu2.valueset.ServiceProvisionConditionsEnum;
228import ca.uhn.fhir.model.dstu2.composite.SignatureDt;
229import ca.uhn.fhir.model.dstu2.resource.Slot;
230import ca.uhn.fhir.model.dstu2.valueset.SlotStatusEnum;
231import ca.uhn.fhir.model.dstu2.resource.Specimen;
232import ca.uhn.fhir.model.dstu2.valueset.SpecimenStatusEnum;
233import ca.uhn.fhir.model.dstu2.resource.StructureDefinition;
234import ca.uhn.fhir.model.dstu2.valueset.StructureDefinitionKindEnum;
235import ca.uhn.fhir.model.dstu2.valueset.SubscriptionChannelTypeEnum;
236import ca.uhn.fhir.model.dstu2.valueset.SubscriptionStatusEnum;
237import ca.uhn.fhir.model.dstu2.resource.Substance;
238import ca.uhn.fhir.model.dstu2.valueset.SubstanceCategoryCodesEnum;
239import ca.uhn.fhir.model.dstu2.valueset.SupplyDeliveryStatusEnum;
240import ca.uhn.fhir.model.dstu2.resource.SupplyRequest;
241import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestStatusEnum;
242import ca.uhn.fhir.model.dstu2.valueset.SystemRestfulInteractionEnum;
243import ca.uhn.fhir.model.api.TemporalPrecisionEnum;
244import ca.uhn.fhir.model.dstu2.composite.TimingDt;
245import ca.uhn.fhir.model.dstu2.valueset.TransactionModeEnum;
246import ca.uhn.fhir.model.dstu2.valueset.TypeRestfulInteractionEnum;
247import ca.uhn.fhir.model.dstu2.valueset.UnknownContentCodeEnum;
248import ca.uhn.fhir.model.dstu2.valueset.UseEnum;
249import ca.uhn.fhir.model.dstu2.resource.ValueSet;
250import ca.uhn.fhir.model.dstu2.valueset.VisionBaseEnum;
251import ca.uhn.fhir.model.dstu2.valueset.VisionEyesEnum;
252import ca.uhn.fhir.model.dstu2.resource.VisionPrescription;
253import ca.uhn.fhir.model.dstu2.valueset.XPathUsageTypeEnum;
254import ca.uhn.fhir.model.api.IResource;
255import ca.uhn.fhir.model.dstu2.composite.AgeDt;
256import ca.uhn.fhir.model.dstu2.composite.BoundCodeableConceptDt;
257import ca.uhn.fhir.model.dstu2.composite.DurationDt;
258import ca.uhn.fhir.model.dstu2.composite.MoneyDt;
259import ca.uhn.fhir.model.dstu2.composite.NarrativeDt;
260import ca.uhn.fhir.model.dstu2.composite.ResourceReferenceDt;
261import ca.uhn.fhir.model.dstu2.composite.SimpleQuantityDt;
262import ca.uhn.fhir.model.primitive.Base64BinaryDt;
263import ca.uhn.fhir.model.primitive.BooleanDt;
264import ca.uhn.fhir.model.primitive.BoundCodeDt;
265import ca.uhn.fhir.model.primitive.CodeDt;
266import ca.uhn.fhir.model.primitive.DateDt;
267import ca.uhn.fhir.model.primitive.DateTimeDt;
268import ca.uhn.fhir.model.primitive.DecimalDt;
269import ca.uhn.fhir.model.primitive.IdDt;
270import ca.uhn.fhir.model.primitive.InstantDt;
271import ca.uhn.fhir.model.primitive.IntegerDt;
272import ca.uhn.fhir.model.primitive.OidDt;
273import ca.uhn.fhir.model.primitive.PositiveIntDt;
274import ca.uhn.fhir.model.primitive.StringDt;
275import ca.uhn.fhir.model.primitive.TimeDt;
276import ca.uhn.fhir.model.primitive.UnsignedIntDt;
277import ca.uhn.fhir.model.primitive.UriDt;
278
279
280/**
281 * HAPI/FHIR <b>DataElement</b> Resource
282 * ()
283 *
284 * <p>
285 * <b>Definition:</b>
286 * The formal description of a single piece of information that can be gathered and reported.
287 * </p> 
288 *
289 * <p>
290 * <b>Requirements:</b>
291 * 
292 * </p> 
293 *
294 * <p>
295 * <b>Profile Definition:</b>
296 * <a href="http://hl7.org/fhir/profiles/DataElement">http://hl7.org/fhir/profiles/DataElement</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="DataElement", profile="http://hl7.org/fhir/profiles/DataElement", id="dataelement")
301public class DataElement extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource     {
303
304        /**
305         * Search parameter constant for <b>identifier</b>
306         * <p>
307         * Description: <b>The identifier of the data element</b><br>
308         * Type: <b>token</b><br>
309         * Path: <b>DataElement.identifier</b><br>
310         * </p>
311         */
312        @SearchParamDefinition(name="identifier", path="DataElement.identifier", description="The identifier of the data element", type="token"  )
313        public static final String SP_IDENTIFIER = "identifier";
314
315        /**
316         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
317         * <p>
318         * Description: <b>The identifier of the data element</b><br>
319         * Type: <b>token</b><br>
320         * Path: <b>DataElement.identifier</b><br>
321         * </p>
322         */
323        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
324
325        /**
326         * Search parameter constant for <b>version</b>
327         * <p>
328         * Description: <b>The version identifier of the data element</b><br>
329         * Type: <b>string</b><br>
330         * Path: <b>DataElement.version</b><br>
331         * </p>
332         */
333        @SearchParamDefinition(name="version", path="DataElement.version", description="The version identifier of the data element", type="string"  )
334        public static final String SP_VERSION = "version";
335
336        /**
337         * <b>Fluent Client</b> search parameter constant for <b>version</b>
338         * <p>
339         * Description: <b>The version identifier of the data element</b><br>
340         * Type: <b>string</b><br>
341         * Path: <b>DataElement.version</b><br>
342         * </p>
343         */
344        public static final StringClientParam VERSION = new StringClientParam(SP_VERSION);
345
346        /**
347         * Search parameter constant for <b>name</b>
348         * <p>
349         * Description: <b>Name of the data element</b><br>
350         * Type: <b>string</b><br>
351         * Path: <b>DataElement.name</b><br>
352         * </p>
353         */
354        @SearchParamDefinition(name="name", path="DataElement.name", description="Name of the data element", type="string"  )
355        public static final String SP_NAME = "name";
356
357        /**
358         * <b>Fluent Client</b> search parameter constant for <b>name</b>
359         * <p>
360         * Description: <b>Name of the data element</b><br>
361         * Type: <b>string</b><br>
362         * Path: <b>DataElement.name</b><br>
363         * </p>
364         */
365        public static final StringClientParam NAME = new StringClientParam(SP_NAME);
366
367        /**
368         * Search parameter constant for <b>publisher</b>
369         * <p>
370         * Description: <b>Name of the publisher of the data element</b><br>
371         * Type: <b>string</b><br>
372         * Path: <b>DataElement.publisher</b><br>
373         * </p>
374         */
375        @SearchParamDefinition(name="publisher", path="DataElement.publisher", description="Name of the publisher of the data element", type="string"  )
376        public static final String SP_PUBLISHER = "publisher";
377
378        /**
379         * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
380         * <p>
381         * Description: <b>Name of the publisher of the data element</b><br>
382         * Type: <b>string</b><br>
383         * Path: <b>DataElement.publisher</b><br>
384         * </p>
385         */
386        public static final StringClientParam PUBLISHER = new StringClientParam(SP_PUBLISHER);
387
388        /**
389         * Search parameter constant for <b>description</b>
390         * <p>
391         * Description: <b>Text search in the description of the data element.  This corresponds to the definition of the first DataElement.element.</b><br>
392         * Type: <b>string</b><br>
393         * Path: <b>DataElement.element.definition</b><br>
394         * </p>
395         */
396        @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"  )
397        public static final String SP_DESCRIPTION = "description";
398
399        /**
400         * <b>Fluent Client</b> search parameter constant for <b>description</b>
401         * <p>
402         * Description: <b>Text search in the description of the data element.  This corresponds to the definition of the first DataElement.element.</b><br>
403         * Type: <b>string</b><br>
404         * Path: <b>DataElement.element.definition</b><br>
405         * </p>
406         */
407        public static final StringClientParam DESCRIPTION = new StringClientParam(SP_DESCRIPTION);
408
409        /**
410         * Search parameter constant for <b>status</b>
411         * <p>
412         * Description: <b>The current status of the data element</b><br>
413         * Type: <b>token</b><br>
414         * Path: <b>DataElement.status</b><br>
415         * </p>
416         */
417        @SearchParamDefinition(name="status", path="DataElement.status", description="The current status of the data element", type="token"  )
418        public static final String SP_STATUS = "status";
419
420        /**
421         * <b>Fluent Client</b> search parameter constant for <b>status</b>
422         * <p>
423         * Description: <b>The current status of the data element</b><br>
424         * Type: <b>token</b><br>
425         * Path: <b>DataElement.status</b><br>
426         * </p>
427         */
428        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
429
430        /**
431         * Search parameter constant for <b>date</b>
432         * <p>
433         * Description: <b>The data element publication date</b><br>
434         * Type: <b>date</b><br>
435         * Path: <b>DataElement.date</b><br>
436         * </p>
437         */
438        @SearchParamDefinition(name="date", path="DataElement.date", description="The data element publication date", type="date"  )
439        public static final String SP_DATE = "date";
440
441        /**
442         * <b>Fluent Client</b> search parameter constant for <b>date</b>
443         * <p>
444         * Description: <b>The data element publication date</b><br>
445         * Type: <b>date</b><br>
446         * Path: <b>DataElement.date</b><br>
447         * </p>
448         */
449        public static final DateClientParam DATE = new DateClientParam(SP_DATE);
450
451        /**
452         * Search parameter constant for <b>code</b>
453         * <p>
454         * Description: <b>A code for the data element (server may choose to do subsumption)</b><br>
455         * Type: <b>token</b><br>
456         * Path: <b>DataElement.element.code</b><br>
457         * </p>
458         */
459        @SearchParamDefinition(name="code", path="DataElement.element.code", description="A code for the data element (server may choose to do subsumption)", type="token"  )
460        public static final String SP_CODE = "code";
461
462        /**
463         * <b>Fluent Client</b> search parameter constant for <b>code</b>
464         * <p>
465         * Description: <b>A code for the data element (server may choose to do subsumption)</b><br>
466         * Type: <b>token</b><br>
467         * Path: <b>DataElement.element.code</b><br>
468         * </p>
469         */
470        public static final TokenClientParam CODE = new TokenClientParam(SP_CODE);
471
472        /**
473         * Search parameter constant for <b>context</b>
474         * <p>
475         * Description: <b>A use context assigned to the data element</b><br>
476         * Type: <b>token</b><br>
477         * Path: <b>DataElement.useContext</b><br>
478         * </p>
479         */
480        @SearchParamDefinition(name="context", path="DataElement.useContext", description="A use context assigned to the data element", type="token"  )
481        public static final String SP_CONTEXT = "context";
482
483        /**
484         * <b>Fluent Client</b> search parameter constant for <b>context</b>
485         * <p>
486         * Description: <b>A use context assigned to the data element</b><br>
487         * Type: <b>token</b><br>
488         * Path: <b>DataElement.useContext</b><br>
489         * </p>
490         */
491        public static final TokenClientParam CONTEXT = new TokenClientParam(SP_CONTEXT);
492
493        /**
494         * Search parameter constant for <b>url</b>
495         * <p>
496         * Description: <b>The official URL for the data element</b><br>
497         * Type: <b>uri</b><br>
498         * Path: <b>DataElement.url</b><br>
499         * </p>
500         */
501        @SearchParamDefinition(name="url", path="DataElement.url", description="The official URL for the data element", type="uri"  )
502        public static final String SP_URL = "url";
503
504        /**
505         * <b>Fluent Client</b> search parameter constant for <b>url</b>
506         * <p>
507         * Description: <b>The official URL for the data element</b><br>
508         * Type: <b>uri</b><br>
509         * Path: <b>DataElement.url</b><br>
510         * </p>
511         */
512        public static final UriClientParam URL = new UriClientParam(SP_URL);
513
514        /**
515         * Search parameter constant for <b>stringency</b>
516         * <p>
517         * Description: <b>The stringency of the data element definition</b><br>
518         * Type: <b>token</b><br>
519         * Path: <b>DataElement.stringency</b><br>
520         * </p>
521         */
522        @SearchParamDefinition(name="stringency", path="DataElement.stringency", description="The stringency of the data element definition", type="token"  )
523        public static final String SP_STRINGENCY = "stringency";
524
525        /**
526         * <b>Fluent Client</b> search parameter constant for <b>stringency</b>
527         * <p>
528         * Description: <b>The stringency of the data element definition</b><br>
529         * Type: <b>token</b><br>
530         * Path: <b>DataElement.stringency</b><br>
531         * </p>
532         */
533        public static final TokenClientParam STRINGENCY = new TokenClientParam(SP_STRINGENCY);
534
535
536
537        @Child(name="url", type=UriDt.class, order=0, min=0, max=1, summary=true, modifier=false)       
538        @Description(
539                shortDefinition="",
540                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"
541        )
542        private UriDt myUrl;
543        
544        @Child(name="identifier", type=IdentifierDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)       
545        @Description(
546                shortDefinition="",
547                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."
548        )
549        private java.util.List<IdentifierDt> myIdentifier;
550        
551        @Child(name="version", type=StringDt.class, order=2, min=0, max=1, summary=true, modifier=false)        
552        @Description(
553                shortDefinition="",
554                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."
555        )
556        private StringDt myVersion;
557        
558        @Child(name="name", type=StringDt.class, order=3, min=0, max=1, summary=true, modifier=false)   
559        @Description(
560                shortDefinition="",
561                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."
562        )
563        private StringDt myName;
564        
565        @Child(name="status", type=CodeDt.class, order=4, min=1, max=1, summary=true, modifier=false)   
566        @Description(
567                shortDefinition="",
568                formalDefinition="The status of the data element"
569        )
570        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/conformance-resource-status")
571        private BoundCodeDt<ConformanceResourceStatusEnum> myStatus;
572        
573        @Child(name="experimental", type=BooleanDt.class, order=5, min=0, max=1, summary=true, modifier=false)  
574        @Description(
575                shortDefinition="",
576                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"
577        )
578        private BooleanDt myExperimental;
579        
580        @Child(name="publisher", type=StringDt.class, order=6, min=0, max=1, summary=true, modifier=false)      
581        @Description(
582                shortDefinition="",
583                formalDefinition="The name of the individual or organization that published the data element"
584        )
585        private StringDt myPublisher;
586        
587        @Child(name="contact", order=7, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
588        @Description(
589                shortDefinition="",
590                formalDefinition="Contacts to assist a user in finding and communicating with the publisher"
591        )
592        private java.util.List<Contact> myContact;
593        
594        @Child(name="date", type=DateTimeDt.class, order=8, min=0, max=1, summary=true, modifier=false) 
595        @Description(
596                shortDefinition="",
597                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"
598        )
599        private DateTimeDt myDate;
600        
601        @Child(name="useContext", type=CodeableConceptDt.class, order=9, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)  
602        @Description(
603                shortDefinition="",
604                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."
605        )
606        private java.util.List<CodeableConceptDt> myUseContext;
607        
608        @Child(name="copyright", type=StringDt.class, order=10, min=0, max=1, summary=false, modifier=false)    
609        @Description(
610                shortDefinition="",
611                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"
612        )
613        private StringDt myCopyright;
614        
615        @Child(name="stringency", type=CodeDt.class, order=11, min=0, max=1, summary=true, modifier=false)      
616        @Description(
617                shortDefinition="",
618                formalDefinition="Identifies how precise the data element is in its definition"
619        )
620        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/dataelement-stringency")
621        private BoundCodeDt<DataElementStringencyEnum> myStringency;
622        
623        @Child(name="mapping", order=12, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
624        @Description(
625                shortDefinition="",
626                formalDefinition="Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence with"
627        )
628        private java.util.List<Mapping> myMapping;
629        
630        @Child(name="element", type=ElementDefinitionDt.class, order=13, min=1, max=Child.MAX_UNLIMITED, summary=true, modifier=false)  
631        @Description(
632                shortDefinition="",
633                formalDefinition="Defines the structure, type, allowed values and other constraining characteristics of the data element"
634        )
635        private java.util.List<ElementDefinitionDt> myElement;
636        
637
638        @Override
639        public boolean isEmpty() {
640                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myUrl,  myIdentifier,  myVersion,  myName,  myStatus,  myExperimental,  myPublisher,  myContact,  myDate,  myUseContext,  myCopyright,  myStringency,  myMapping,  myElement);
641        }
642        
643        @Override
644        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
645                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myUrl, myIdentifier, myVersion, myName, myStatus, myExperimental, myPublisher, myContact, myDate, myUseContext, myCopyright, myStringency, myMapping, myElement);
646        }
647
648        /**
649         * Gets the value(s) for <b>url</b> ().
650         * creating it if it does
651         * not exist. Will not return <code>null</code>.
652         *
653     * <p>
654     * <b>Definition:</b>
655     * 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
656     * </p> 
657         */
658        public UriDt getUrlElement() {  
659                if (myUrl == null) {
660                        myUrl = new UriDt();
661                }
662                return myUrl;
663        }
664
665        
666        /**
667         * Gets the value(s) for <b>url</b> ().
668         * creating it if it does
669         * not exist. This method may return <code>null</code>.
670         *
671     * <p>
672     * <b>Definition:</b>
673     * 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
674     * </p> 
675         */
676        public String getUrl() {  
677                return getUrlElement().getValue();
678        }
679
680        /**
681         * Sets the value(s) for <b>url</b> ()
682         *
683     * <p>
684     * <b>Definition:</b>
685     * 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
686     * </p> 
687         */
688        public DataElement setUrl(UriDt theValue) {
689                myUrl = theValue;
690                return this;
691        }
692        
693        
694
695        /**
696         * Sets the value for <b>url</b> ()
697         *
698     * <p>
699     * <b>Definition:</b>
700     * 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
701     * </p> 
702         */
703        public DataElement setUrl( String theUri) {
704                myUrl = new UriDt(theUri); 
705                return this; 
706        }
707
708 
709        /**
710         * Gets the value(s) for <b>identifier</b> ().
711         * creating it if it does
712         * not exist. Will not return <code>null</code>.
713         *
714     * <p>
715     * <b>Definition:</b>
716     * 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.
717     * </p> 
718         */
719        public java.util.List<IdentifierDt> getIdentifier() {  
720                if (myIdentifier == null) {
721                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
722                }
723                return myIdentifier;
724        }
725
726        /**
727         * Sets the value(s) for <b>identifier</b> ()
728         *
729     * <p>
730     * <b>Definition:</b>
731     * 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.
732     * </p> 
733         */
734        public DataElement setIdentifier(java.util.List<IdentifierDt> theValue) {
735                myIdentifier = theValue;
736                return this;
737        }
738        
739        
740
741        /**
742         * Adds and returns a new value for <b>identifier</b> ()
743         *
744     * <p>
745     * <b>Definition:</b>
746     * 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.
747     * </p> 
748         */
749        public IdentifierDt addIdentifier() {
750                IdentifierDt newType = new IdentifierDt();
751                getIdentifier().add(newType);
752                return newType; 
753        }
754
755        /**
756         * Adds a given new value for <b>identifier</b> ()
757         *
758         * <p>
759         * <b>Definition:</b>
760         * 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.
761         * </p>
762         * @param theValue The identifier to add (must not be <code>null</code>)
763         */
764        public DataElement addIdentifier(IdentifierDt theValue) {
765                if (theValue == null) {
766                        throw new NullPointerException("theValue must not be null");
767                }
768                getIdentifier().add(theValue);
769                return this;
770        }
771
772        /**
773         * Gets the first repetition for <b>identifier</b> (),
774         * creating it if it does not already exist.
775         *
776     * <p>
777     * <b>Definition:</b>
778     * 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.
779     * </p> 
780         */
781        public IdentifierDt getIdentifierFirstRep() {
782                if (getIdentifier().isEmpty()) {
783                        return addIdentifier();
784                }
785                return getIdentifier().get(0); 
786        }
787  
788        /**
789         * Gets the value(s) for <b>version</b> ().
790         * creating it if it does
791         * not exist. Will not return <code>null</code>.
792         *
793     * <p>
794     * <b>Definition:</b>
795     * 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.
796     * </p> 
797         */
798        public StringDt getVersionElement() {  
799                if (myVersion == null) {
800                        myVersion = new StringDt();
801                }
802                return myVersion;
803        }
804
805        
806        /**
807         * Gets the value(s) for <b>version</b> ().
808         * creating it if it does
809         * not exist. This method may return <code>null</code>.
810         *
811     * <p>
812     * <b>Definition:</b>
813     * 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.
814     * </p> 
815         */
816        public String getVersion() {  
817                return getVersionElement().getValue();
818        }
819
820        /**
821         * Sets the value(s) for <b>version</b> ()
822         *
823     * <p>
824     * <b>Definition:</b>
825     * 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.
826     * </p> 
827         */
828        public DataElement setVersion(StringDt theValue) {
829                myVersion = theValue;
830                return this;
831        }
832        
833        
834
835        /**
836         * Sets the value for <b>version</b> ()
837         *
838     * <p>
839     * <b>Definition:</b>
840     * 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.
841     * </p> 
842         */
843        public DataElement setVersion( String theString) {
844                myVersion = new StringDt(theString); 
845                return this; 
846        }
847
848 
849        /**
850         * Gets the value(s) for <b>name</b> ().
851         * creating it if it does
852         * not exist. Will not return <code>null</code>.
853         *
854     * <p>
855     * <b>Definition:</b>
856     * 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.
857     * </p> 
858         */
859        public StringDt getNameElement() {  
860                if (myName == null) {
861                        myName = new StringDt();
862                }
863                return myName;
864        }
865
866        
867        /**
868         * Gets the value(s) for <b>name</b> ().
869         * creating it if it does
870         * not exist. This method may return <code>null</code>.
871         *
872     * <p>
873     * <b>Definition:</b>
874     * 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.
875     * </p> 
876         */
877        public String getName() {  
878                return getNameElement().getValue();
879        }
880
881        /**
882         * Sets the value(s) for <b>name</b> ()
883         *
884     * <p>
885     * <b>Definition:</b>
886     * 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.
887     * </p> 
888         */
889        public DataElement setName(StringDt theValue) {
890                myName = theValue;
891                return this;
892        }
893        
894        
895
896        /**
897         * Sets the value for <b>name</b> ()
898         *
899     * <p>
900     * <b>Definition:</b>
901     * 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.
902     * </p> 
903         */
904        public DataElement setName( String theString) {
905                myName = new StringDt(theString); 
906                return this; 
907        }
908
909 
910        /**
911         * Gets the value(s) for <b>status</b> ().
912         * creating it if it does
913         * not exist. Will not return <code>null</code>.
914         *
915     * <p>
916     * <b>Definition:</b>
917     * The status of the data element
918     * </p> 
919         */
920        public BoundCodeDt<ConformanceResourceStatusEnum> getStatusElement() {  
921                if (myStatus == null) {
922                        myStatus = new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER);
923                }
924                return myStatus;
925        }
926
927        
928        /**
929         * Gets the value(s) for <b>status</b> ().
930         * creating it if it does
931         * not exist. This method may return <code>null</code>.
932         *
933     * <p>
934     * <b>Definition:</b>
935     * The status of the data element
936     * </p> 
937         */
938        public String getStatus() {  
939                return getStatusElement().getValue();
940        }
941
942        /**
943         * Sets the value(s) for <b>status</b> ()
944         *
945     * <p>
946     * <b>Definition:</b>
947     * The status of the data element
948     * </p> 
949         */
950        public DataElement setStatus(BoundCodeDt<ConformanceResourceStatusEnum> theValue) {
951                myStatus = theValue;
952                return this;
953        }
954        
955        
956
957        /**
958         * Sets the value(s) for <b>status</b> ()
959         *
960     * <p>
961     * <b>Definition:</b>
962     * The status of the data element
963     * </p> 
964         */
965        public DataElement setStatus(ConformanceResourceStatusEnum theValue) {
966                setStatus(new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER, theValue));
967                
968/*
969                getStatusElement().setValueAsEnum(theValue);
970*/
971                return this;
972        }
973
974  
975        /**
976         * Gets the value(s) for <b>experimental</b> ().
977         * creating it if it does
978         * not exist. Will not return <code>null</code>.
979         *
980     * <p>
981     * <b>Definition:</b>
982     * 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
983     * </p> 
984         */
985        public BooleanDt getExperimentalElement() {  
986                if (myExperimental == null) {
987                        myExperimental = new BooleanDt();
988                }
989                return myExperimental;
990        }
991
992        
993        /**
994         * Gets the value(s) for <b>experimental</b> ().
995         * creating it if it does
996         * not exist. This method may return <code>null</code>.
997         *
998     * <p>
999     * <b>Definition:</b>
1000     * 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
1001     * </p> 
1002         */
1003        public Boolean getExperimental() {  
1004                return getExperimentalElement().getValue();
1005        }
1006
1007        /**
1008         * Sets the value(s) for <b>experimental</b> ()
1009         *
1010     * <p>
1011     * <b>Definition:</b>
1012     * 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
1013     * </p> 
1014         */
1015        public DataElement setExperimental(BooleanDt theValue) {
1016                myExperimental = theValue;
1017                return this;
1018        }
1019        
1020        
1021
1022        /**
1023         * Sets the value for <b>experimental</b> ()
1024         *
1025     * <p>
1026     * <b>Definition:</b>
1027     * 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
1028     * </p> 
1029         */
1030        public DataElement setExperimental( boolean theBoolean) {
1031                myExperimental = new BooleanDt(theBoolean); 
1032                return this; 
1033        }
1034
1035 
1036        /**
1037         * Gets the value(s) for <b>publisher</b> ().
1038         * creating it if it does
1039         * not exist. Will not return <code>null</code>.
1040         *
1041     * <p>
1042     * <b>Definition:</b>
1043     * The name of the individual or organization that published the data element
1044     * </p> 
1045         */
1046        public StringDt getPublisherElement() {  
1047                if (myPublisher == null) {
1048                        myPublisher = new StringDt();
1049                }
1050                return myPublisher;
1051        }
1052
1053        
1054        /**
1055         * Gets the value(s) for <b>publisher</b> ().
1056         * creating it if it does
1057         * not exist. This method may return <code>null</code>.
1058         *
1059     * <p>
1060     * <b>Definition:</b>
1061     * The name of the individual or organization that published the data element
1062     * </p> 
1063         */
1064        public String getPublisher() {  
1065                return getPublisherElement().getValue();
1066        }
1067
1068        /**
1069         * Sets the value(s) for <b>publisher</b> ()
1070         *
1071     * <p>
1072     * <b>Definition:</b>
1073     * The name of the individual or organization that published the data element
1074     * </p> 
1075         */
1076        public DataElement setPublisher(StringDt theValue) {
1077                myPublisher = theValue;
1078                return this;
1079        }
1080        
1081        
1082
1083        /**
1084         * Sets the value for <b>publisher</b> ()
1085         *
1086     * <p>
1087     * <b>Definition:</b>
1088     * The name of the individual or organization that published the data element
1089     * </p> 
1090         */
1091        public DataElement setPublisher( String theString) {
1092                myPublisher = new StringDt(theString); 
1093                return this; 
1094        }
1095
1096 
1097        /**
1098         * Gets the value(s) for <b>contact</b> ().
1099         * creating it if it does
1100         * not exist. Will not return <code>null</code>.
1101         *
1102     * <p>
1103     * <b>Definition:</b>
1104     * Contacts to assist a user in finding and communicating with the publisher
1105     * </p> 
1106         */
1107        public java.util.List<Contact> getContact() {  
1108                if (myContact == null) {
1109                        myContact = new java.util.ArrayList<Contact>();
1110                }
1111                return myContact;
1112        }
1113
1114        /**
1115         * Sets the value(s) for <b>contact</b> ()
1116         *
1117     * <p>
1118     * <b>Definition:</b>
1119     * Contacts to assist a user in finding and communicating with the publisher
1120     * </p> 
1121         */
1122        public DataElement setContact(java.util.List<Contact> theValue) {
1123                myContact = theValue;
1124                return this;
1125        }
1126        
1127        
1128
1129        /**
1130         * Adds and returns a new value for <b>contact</b> ()
1131         *
1132     * <p>
1133     * <b>Definition:</b>
1134     * Contacts to assist a user in finding and communicating with the publisher
1135     * </p> 
1136         */
1137        public Contact addContact() {
1138                Contact newType = new Contact();
1139                getContact().add(newType);
1140                return newType; 
1141        }
1142
1143        /**
1144         * Adds a given new value for <b>contact</b> ()
1145         *
1146         * <p>
1147         * <b>Definition:</b>
1148         * Contacts to assist a user in finding and communicating with the publisher
1149         * </p>
1150         * @param theValue The contact to add (must not be <code>null</code>)
1151         */
1152        public DataElement addContact(Contact theValue) {
1153                if (theValue == null) {
1154                        throw new NullPointerException("theValue must not be null");
1155                }
1156                getContact().add(theValue);
1157                return this;
1158        }
1159
1160        /**
1161         * Gets the first repetition for <b>contact</b> (),
1162         * creating it if it does not already exist.
1163         *
1164     * <p>
1165     * <b>Definition:</b>
1166     * Contacts to assist a user in finding and communicating with the publisher
1167     * </p> 
1168         */
1169        public Contact getContactFirstRep() {
1170                if (getContact().isEmpty()) {
1171                        return addContact();
1172                }
1173                return getContact().get(0); 
1174        }
1175  
1176        /**
1177         * Gets the value(s) for <b>date</b> ().
1178         * creating it if it does
1179         * not exist. Will not return <code>null</code>.
1180         *
1181     * <p>
1182     * <b>Definition:</b>
1183     * 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
1184     * </p> 
1185         */
1186        public DateTimeDt getDateElement() {  
1187                if (myDate == null) {
1188                        myDate = new DateTimeDt();
1189                }
1190                return myDate;
1191        }
1192
1193        
1194        /**
1195         * Gets the value(s) for <b>date</b> ().
1196         * creating it if it does
1197         * not exist. This method may return <code>null</code>.
1198         *
1199     * <p>
1200     * <b>Definition:</b>
1201     * 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
1202     * </p> 
1203         */
1204        public Date getDate() {  
1205                return getDateElement().getValue();
1206        }
1207
1208        /**
1209         * Sets the value(s) for <b>date</b> ()
1210         *
1211     * <p>
1212     * <b>Definition:</b>
1213     * 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
1214     * </p> 
1215         */
1216        public DataElement setDate(DateTimeDt theValue) {
1217                myDate = theValue;
1218                return this;
1219        }
1220        
1221        
1222
1223        /**
1224         * Sets the value for <b>date</b> ()
1225         *
1226     * <p>
1227     * <b>Definition:</b>
1228     * 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
1229     * </p> 
1230         */
1231        public DataElement setDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
1232                myDate = new DateTimeDt(theDate, thePrecision); 
1233                return this; 
1234        }
1235
1236        /**
1237         * Sets the value for <b>date</b> ()
1238         *
1239     * <p>
1240     * <b>Definition:</b>
1241     * 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
1242     * </p> 
1243         */
1244        public DataElement setDateWithSecondsPrecision( Date theDate) {
1245                myDate = new DateTimeDt(theDate); 
1246                return this; 
1247        }
1248
1249 
1250        /**
1251         * Gets the value(s) for <b>useContext</b> ().
1252         * creating it if it does
1253         * not exist. Will not return <code>null</code>.
1254         *
1255     * <p>
1256     * <b>Definition:</b>
1257     * 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.
1258     * </p> 
1259         */
1260        public java.util.List<CodeableConceptDt> getUseContext() {  
1261                if (myUseContext == null) {
1262                        myUseContext = new java.util.ArrayList<CodeableConceptDt>();
1263                }
1264                return myUseContext;
1265        }
1266
1267        /**
1268         * Sets the value(s) for <b>useContext</b> ()
1269         *
1270     * <p>
1271     * <b>Definition:</b>
1272     * 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.
1273     * </p> 
1274         */
1275        public DataElement setUseContext(java.util.List<CodeableConceptDt> theValue) {
1276                myUseContext = theValue;
1277                return this;
1278        }
1279        
1280        
1281
1282        /**
1283         * Adds and returns a new value for <b>useContext</b> ()
1284         *
1285     * <p>
1286     * <b>Definition:</b>
1287     * 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.
1288     * </p> 
1289         */
1290        public CodeableConceptDt addUseContext() {
1291                CodeableConceptDt newType = new CodeableConceptDt();
1292                getUseContext().add(newType);
1293                return newType; 
1294        }
1295
1296        /**
1297         * Adds a given new value for <b>useContext</b> ()
1298         *
1299         * <p>
1300         * <b>Definition:</b>
1301         * 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.
1302         * </p>
1303         * @param theValue The useContext to add (must not be <code>null</code>)
1304         */
1305        public DataElement addUseContext(CodeableConceptDt theValue) {
1306                if (theValue == null) {
1307                        throw new NullPointerException("theValue must not be null");
1308                }
1309                getUseContext().add(theValue);
1310                return this;
1311        }
1312
1313        /**
1314         * Gets the first repetition for <b>useContext</b> (),
1315         * creating it if it does not already exist.
1316         *
1317     * <p>
1318     * <b>Definition:</b>
1319     * 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.
1320     * </p> 
1321         */
1322        public CodeableConceptDt getUseContextFirstRep() {
1323                if (getUseContext().isEmpty()) {
1324                        return addUseContext();
1325                }
1326                return getUseContext().get(0); 
1327        }
1328  
1329        /**
1330         * Gets the value(s) for <b>copyright</b> ().
1331         * creating it if it does
1332         * not exist. Will not return <code>null</code>.
1333         *
1334     * <p>
1335     * <b>Definition:</b>
1336     * 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
1337     * </p> 
1338         */
1339        public StringDt getCopyrightElement() {  
1340                if (myCopyright == null) {
1341                        myCopyright = new StringDt();
1342                }
1343                return myCopyright;
1344        }
1345
1346        
1347        /**
1348         * Gets the value(s) for <b>copyright</b> ().
1349         * creating it if it does
1350         * not exist. This method may return <code>null</code>.
1351         *
1352     * <p>
1353     * <b>Definition:</b>
1354     * 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
1355     * </p> 
1356         */
1357        public String getCopyright() {  
1358                return getCopyrightElement().getValue();
1359        }
1360
1361        /**
1362         * Sets the value(s) for <b>copyright</b> ()
1363         *
1364     * <p>
1365     * <b>Definition:</b>
1366     * 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
1367     * </p> 
1368         */
1369        public DataElement setCopyright(StringDt theValue) {
1370                myCopyright = theValue;
1371                return this;
1372        }
1373        
1374        
1375
1376        /**
1377         * Sets the value for <b>copyright</b> ()
1378         *
1379     * <p>
1380     * <b>Definition:</b>
1381     * 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
1382     * </p> 
1383         */
1384        public DataElement setCopyright( String theString) {
1385                myCopyright = new StringDt(theString); 
1386                return this; 
1387        }
1388
1389 
1390        /**
1391         * Gets the value(s) for <b>stringency</b> ().
1392         * creating it if it does
1393         * not exist. Will not return <code>null</code>.
1394         *
1395     * <p>
1396     * <b>Definition:</b>
1397     * Identifies how precise the data element is in its definition
1398     * </p> 
1399         */
1400        public BoundCodeDt<DataElementStringencyEnum> getStringencyElement() {  
1401                if (myStringency == null) {
1402                        myStringency = new BoundCodeDt<DataElementStringencyEnum>(DataElementStringencyEnum.VALUESET_BINDER);
1403                }
1404                return myStringency;
1405        }
1406
1407        
1408        /**
1409         * Gets the value(s) for <b>stringency</b> ().
1410         * creating it if it does
1411         * not exist. This method may return <code>null</code>.
1412         *
1413     * <p>
1414     * <b>Definition:</b>
1415     * Identifies how precise the data element is in its definition
1416     * </p> 
1417         */
1418        public String getStringency() {  
1419                return getStringencyElement().getValue();
1420        }
1421
1422        /**
1423         * Sets the value(s) for <b>stringency</b> ()
1424         *
1425     * <p>
1426     * <b>Definition:</b>
1427     * Identifies how precise the data element is in its definition
1428     * </p> 
1429         */
1430        public DataElement setStringency(BoundCodeDt<DataElementStringencyEnum> theValue) {
1431                myStringency = theValue;
1432                return this;
1433        }
1434        
1435        
1436
1437        /**
1438         * Sets the value(s) for <b>stringency</b> ()
1439         *
1440     * <p>
1441     * <b>Definition:</b>
1442     * Identifies how precise the data element is in its definition
1443     * </p> 
1444         */
1445        public DataElement setStringency(DataElementStringencyEnum theValue) {
1446                setStringency(new BoundCodeDt<DataElementStringencyEnum>(DataElementStringencyEnum.VALUESET_BINDER, theValue));
1447                
1448/*
1449                getStringencyElement().setValueAsEnum(theValue);
1450*/
1451                return this;
1452        }
1453
1454  
1455        /**
1456         * Gets the value(s) for <b>mapping</b> ().
1457         * creating it if it does
1458         * not exist. Will not return <code>null</code>.
1459         *
1460     * <p>
1461     * <b>Definition:</b>
1462     * Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence with
1463     * </p> 
1464         */
1465        public java.util.List<Mapping> getMapping() {  
1466                if (myMapping == null) {
1467                        myMapping = new java.util.ArrayList<Mapping>();
1468                }
1469                return myMapping;
1470        }
1471
1472        /**
1473         * Sets the value(s) for <b>mapping</b> ()
1474         *
1475     * <p>
1476     * <b>Definition:</b>
1477     * Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence with
1478     * </p> 
1479         */
1480        public DataElement setMapping(java.util.List<Mapping> theValue) {
1481                myMapping = theValue;
1482                return this;
1483        }
1484        
1485        
1486
1487        /**
1488         * Adds and returns a new value for <b>mapping</b> ()
1489         *
1490     * <p>
1491     * <b>Definition:</b>
1492     * Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence with
1493     * </p> 
1494         */
1495        public Mapping addMapping() {
1496                Mapping newType = new Mapping();
1497                getMapping().add(newType);
1498                return newType; 
1499        }
1500
1501        /**
1502         * Adds a given new value for <b>mapping</b> ()
1503         *
1504         * <p>
1505         * <b>Definition:</b>
1506         * Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence with
1507         * </p>
1508         * @param theValue The mapping to add (must not be <code>null</code>)
1509         */
1510        public DataElement addMapping(Mapping theValue) {
1511                if (theValue == null) {
1512                        throw new NullPointerException("theValue must not be null");
1513                }
1514                getMapping().add(theValue);
1515                return this;
1516        }
1517
1518        /**
1519         * Gets the first repetition for <b>mapping</b> (),
1520         * creating it if it does not already exist.
1521         *
1522     * <p>
1523     * <b>Definition:</b>
1524     * Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence with
1525     * </p> 
1526         */
1527        public Mapping getMappingFirstRep() {
1528                if (getMapping().isEmpty()) {
1529                        return addMapping();
1530                }
1531                return getMapping().get(0); 
1532        }
1533  
1534        /**
1535         * Gets the value(s) for <b>element</b> ().
1536         * creating it if it does
1537         * not exist. Will not return <code>null</code>.
1538         *
1539     * <p>
1540     * <b>Definition:</b>
1541     * Defines the structure, type, allowed values and other constraining characteristics of the data element
1542     * </p> 
1543         */
1544        public java.util.List<ElementDefinitionDt> getElement() {  
1545                if (myElement == null) {
1546                        myElement = new java.util.ArrayList<ElementDefinitionDt>();
1547                }
1548                return myElement;
1549        }
1550
1551        /**
1552         * Sets the value(s) for <b>element</b> ()
1553         *
1554     * <p>
1555     * <b>Definition:</b>
1556     * Defines the structure, type, allowed values and other constraining characteristics of the data element
1557     * </p> 
1558         */
1559        public DataElement setElement(java.util.List<ElementDefinitionDt> theValue) {
1560                myElement = theValue;
1561                return this;
1562        }
1563        
1564        
1565
1566        /**
1567         * Adds and returns a new value for <b>element</b> ()
1568         *
1569     * <p>
1570     * <b>Definition:</b>
1571     * Defines the structure, type, allowed values and other constraining characteristics of the data element
1572     * </p> 
1573         */
1574        public ElementDefinitionDt addElement() {
1575                ElementDefinitionDt newType = new ElementDefinitionDt();
1576                getElement().add(newType);
1577                return newType; 
1578        }
1579
1580        /**
1581         * Adds a given new value for <b>element</b> ()
1582         *
1583         * <p>
1584         * <b>Definition:</b>
1585         * Defines the structure, type, allowed values and other constraining characteristics of the data element
1586         * </p>
1587         * @param theValue The element to add (must not be <code>null</code>)
1588         */
1589        public DataElement addElement(ElementDefinitionDt theValue) {
1590                if (theValue == null) {
1591                        throw new NullPointerException("theValue must not be null");
1592                }
1593                getElement().add(theValue);
1594                return this;
1595        }
1596
1597        /**
1598         * Gets the first repetition for <b>element</b> (),
1599         * creating it if it does not already exist.
1600         *
1601     * <p>
1602     * <b>Definition:</b>
1603     * Defines the structure, type, allowed values and other constraining characteristics of the data element
1604     * </p> 
1605         */
1606        public ElementDefinitionDt getElementFirstRep() {
1607                if (getElement().isEmpty()) {
1608                        return addElement();
1609                }
1610                return getElement().get(0); 
1611        }
1612  
1613        /**
1614         * Block class for child element: <b>DataElement.contact</b> ()
1615         *
1616     * <p>
1617     * <b>Definition:</b>
1618     * Contacts to assist a user in finding and communicating with the publisher
1619     * </p> 
1620         */
1621        @Block()        
1622        public static class Contact 
1623            extends  BaseIdentifiableElement        implements IResourceBlock {
1624        
1625        @Child(name="name", type=StringDt.class, order=0, min=0, max=1, summary=true, modifier=false)   
1626        @Description(
1627                shortDefinition="",
1628                formalDefinition="The name of an individual to contact regarding the data element"
1629        )
1630        private StringDt myName;
1631        
1632        @Child(name="telecom", type=ContactPointDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
1633        @Description(
1634                shortDefinition="",
1635                formalDefinition="Contact details for individual (if a name was provided) or the publisher"
1636        )
1637        private java.util.List<ContactPointDt> myTelecom;
1638        
1639
1640        @Override
1641        public boolean isEmpty() {
1642                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myTelecom);
1643        }
1644        
1645        @Override
1646        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1647                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myTelecom);
1648        }
1649
1650        /**
1651         * Gets the value(s) for <b>name</b> ().
1652         * creating it if it does
1653         * not exist. Will not return <code>null</code>.
1654         *
1655     * <p>
1656     * <b>Definition:</b>
1657     * The name of an individual to contact regarding the data element
1658     * </p> 
1659         */
1660        public StringDt getNameElement() {  
1661                if (myName == null) {
1662                        myName = new StringDt();
1663                }
1664                return myName;
1665        }
1666
1667        
1668        /**
1669         * Gets the value(s) for <b>name</b> ().
1670         * creating it if it does
1671         * not exist. This method may return <code>null</code>.
1672         *
1673     * <p>
1674     * <b>Definition:</b>
1675     * The name of an individual to contact regarding the data element
1676     * </p> 
1677         */
1678        public String getName() {  
1679                return getNameElement().getValue();
1680        }
1681
1682        /**
1683         * Sets the value(s) for <b>name</b> ()
1684         *
1685     * <p>
1686     * <b>Definition:</b>
1687     * The name of an individual to contact regarding the data element
1688     * </p> 
1689         */
1690        public Contact setName(StringDt theValue) {
1691                myName = theValue;
1692                return this;
1693        }
1694        
1695        
1696
1697        /**
1698         * Sets the value for <b>name</b> ()
1699         *
1700     * <p>
1701     * <b>Definition:</b>
1702     * The name of an individual to contact regarding the data element
1703     * </p> 
1704         */
1705        public Contact setName( String theString) {
1706                myName = new StringDt(theString); 
1707                return this; 
1708        }
1709
1710 
1711        /**
1712         * Gets the value(s) for <b>telecom</b> ().
1713         * creating it if it does
1714         * not exist. Will not return <code>null</code>.
1715         *
1716     * <p>
1717     * <b>Definition:</b>
1718     * Contact details for individual (if a name was provided) or the publisher
1719     * </p> 
1720         */
1721        public java.util.List<ContactPointDt> getTelecom() {  
1722                if (myTelecom == null) {
1723                        myTelecom = new java.util.ArrayList<ContactPointDt>();
1724                }
1725                return myTelecom;
1726        }
1727
1728        /**
1729         * Sets the value(s) for <b>telecom</b> ()
1730         *
1731     * <p>
1732     * <b>Definition:</b>
1733     * Contact details for individual (if a name was provided) or the publisher
1734     * </p> 
1735         */
1736        public Contact setTelecom(java.util.List<ContactPointDt> theValue) {
1737                myTelecom = theValue;
1738                return this;
1739        }
1740        
1741        
1742
1743        /**
1744         * Adds and returns a new value for <b>telecom</b> ()
1745         *
1746     * <p>
1747     * <b>Definition:</b>
1748     * Contact details for individual (if a name was provided) or the publisher
1749     * </p> 
1750         */
1751        public ContactPointDt addTelecom() {
1752                ContactPointDt newType = new ContactPointDt();
1753                getTelecom().add(newType);
1754                return newType; 
1755        }
1756
1757        /**
1758         * Adds a given new value for <b>telecom</b> ()
1759         *
1760         * <p>
1761         * <b>Definition:</b>
1762         * Contact details for individual (if a name was provided) or the publisher
1763         * </p>
1764         * @param theValue The telecom to add (must not be <code>null</code>)
1765         */
1766        public Contact addTelecom(ContactPointDt theValue) {
1767                if (theValue == null) {
1768                        throw new NullPointerException("theValue must not be null");
1769                }
1770                getTelecom().add(theValue);
1771                return this;
1772        }
1773
1774        /**
1775         * Gets the first repetition for <b>telecom</b> (),
1776         * creating it if it does not already exist.
1777         *
1778     * <p>
1779     * <b>Definition:</b>
1780     * Contact details for individual (if a name was provided) or the publisher
1781     * </p> 
1782         */
1783        public ContactPointDt getTelecomFirstRep() {
1784                if (getTelecom().isEmpty()) {
1785                        return addTelecom();
1786                }
1787                return getTelecom().get(0); 
1788        }
1789  
1790
1791
1792        }
1793
1794
1795        /**
1796         * Block class for child element: <b>DataElement.mapping</b> ()
1797         *
1798     * <p>
1799     * <b>Definition:</b>
1800     * Identifies a specification (other than a terminology) that the elements which make up the DataElement have some correspondence with
1801     * </p> 
1802         */
1803        @Block()        
1804        public static class Mapping 
1805            extends  BaseIdentifiableElement        implements IResourceBlock {
1806        
1807        @Child(name="identity", type=IdDt.class, order=0, min=1, max=1, summary=false, modifier=false)  
1808        @Description(
1809                shortDefinition="",
1810                formalDefinition="An internal id that is used to identify this mapping set when specific mappings are made on a per-element basis"
1811        )
1812        private IdDt myIdentity;
1813        
1814        @Child(name="uri", type=UriDt.class, order=1, min=0, max=1, summary=false, modifier=false)      
1815        @Description(
1816                shortDefinition="",
1817                formalDefinition="An absolute URI that identifies the specification that this mapping is expressed to"
1818        )
1819        private UriDt myUri;
1820        
1821        @Child(name="name", type=StringDt.class, order=2, min=0, max=1, summary=false, modifier=false)  
1822        @Description(
1823                shortDefinition="",
1824                formalDefinition="A name for the specification that is being mapped to"
1825        )
1826        private StringDt myName;
1827        
1828        @Child(name="comments", type=StringDt.class, order=3, min=0, max=1, summary=false, modifier=false)      
1829        @Description(
1830                shortDefinition="",
1831                formalDefinition="Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage"
1832        )
1833        private StringDt myComments;
1834        
1835
1836        @Override
1837        public boolean isEmpty() {
1838                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentity,  myUri,  myName,  myComments);
1839        }
1840        
1841        @Override
1842        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1843                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentity, myUri, myName, myComments);
1844        }
1845
1846        /**
1847         * Gets the value(s) for <b>identity</b> ().
1848         * creating it if it does
1849         * not exist. Will not return <code>null</code>.
1850         *
1851     * <p>
1852     * <b>Definition:</b>
1853     * An internal id that is used to identify this mapping set when specific mappings are made on a per-element basis
1854     * </p> 
1855         */
1856        public IdDt getIdentityElement() {  
1857                if (myIdentity == null) {
1858                        myIdentity = new IdDt();
1859                }
1860                return myIdentity;
1861        }
1862
1863        
1864        /**
1865         * Gets the value(s) for <b>identity</b> ().
1866         * creating it if it does
1867         * not exist. This method may return <code>null</code>.
1868         *
1869     * <p>
1870     * <b>Definition:</b>
1871     * An internal id that is used to identify this mapping set when specific mappings are made on a per-element basis
1872     * </p> 
1873         */
1874        public String getIdentity() {  
1875                return getIdentityElement().getValue();
1876        }
1877
1878        /**
1879         * Sets the value(s) for <b>identity</b> ()
1880         *
1881     * <p>
1882     * <b>Definition:</b>
1883     * An internal id that is used to identify this mapping set when specific mappings are made on a per-element basis
1884     * </p> 
1885         */
1886        public Mapping setIdentity(IdDt theValue) {
1887                myIdentity = theValue;
1888                return this;
1889        }
1890        
1891        
1892
1893        /**
1894         * Sets the value for <b>identity</b> ()
1895         *
1896     * <p>
1897     * <b>Definition:</b>
1898     * An internal id that is used to identify this mapping set when specific mappings are made on a per-element basis
1899     * </p> 
1900         */
1901        public Mapping setIdentity( String theId) {
1902                myIdentity = new IdDt(theId); 
1903                return this; 
1904        }
1905
1906 
1907        /**
1908         * Gets the value(s) for <b>uri</b> ().
1909         * creating it if it does
1910         * not exist. Will not return <code>null</code>.
1911         *
1912     * <p>
1913     * <b>Definition:</b>
1914     * An absolute URI that identifies the specification that this mapping is expressed to
1915     * </p> 
1916         */
1917        public UriDt getUriElement() {  
1918                if (myUri == null) {
1919                        myUri = new UriDt();
1920                }
1921                return myUri;
1922        }
1923
1924        
1925        /**
1926         * Gets the value(s) for <b>uri</b> ().
1927         * creating it if it does
1928         * not exist. This method may return <code>null</code>.
1929         *
1930     * <p>
1931     * <b>Definition:</b>
1932     * An absolute URI that identifies the specification that this mapping is expressed to
1933     * </p> 
1934         */
1935        public String getUri() {  
1936                return getUriElement().getValue();
1937        }
1938
1939        /**
1940         * Sets the value(s) for <b>uri</b> ()
1941         *
1942     * <p>
1943     * <b>Definition:</b>
1944     * An absolute URI that identifies the specification that this mapping is expressed to
1945     * </p> 
1946         */
1947        public Mapping setUri(UriDt theValue) {
1948                myUri = theValue;
1949                return this;
1950        }
1951        
1952        
1953
1954        /**
1955         * Sets the value for <b>uri</b> ()
1956         *
1957     * <p>
1958     * <b>Definition:</b>
1959     * An absolute URI that identifies the specification that this mapping is expressed to
1960     * </p> 
1961         */
1962        public Mapping setUri( String theUri) {
1963                myUri = new UriDt(theUri); 
1964                return this; 
1965        }
1966
1967 
1968        /**
1969         * Gets the value(s) for <b>name</b> ().
1970         * creating it if it does
1971         * not exist. Will not return <code>null</code>.
1972         *
1973     * <p>
1974     * <b>Definition:</b>
1975     * A name for the specification that is being mapped to
1976     * </p> 
1977         */
1978        public StringDt getNameElement() {  
1979                if (myName == null) {
1980                        myName = new StringDt();
1981                }
1982                return myName;
1983        }
1984
1985        
1986        /**
1987         * Gets the value(s) for <b>name</b> ().
1988         * creating it if it does
1989         * not exist. This method may return <code>null</code>.
1990         *
1991     * <p>
1992     * <b>Definition:</b>
1993     * A name for the specification that is being mapped to
1994     * </p> 
1995         */
1996        public String getName() {  
1997                return getNameElement().getValue();
1998        }
1999
2000        /**
2001         * Sets the value(s) for <b>name</b> ()
2002         *
2003     * <p>
2004     * <b>Definition:</b>
2005     * A name for the specification that is being mapped to
2006     * </p> 
2007         */
2008        public Mapping setName(StringDt theValue) {
2009                myName = theValue;
2010                return this;
2011        }
2012        
2013        
2014
2015        /**
2016         * Sets the value for <b>name</b> ()
2017         *
2018     * <p>
2019     * <b>Definition:</b>
2020     * A name for the specification that is being mapped to
2021     * </p> 
2022         */
2023        public Mapping setName( String theString) {
2024                myName = new StringDt(theString); 
2025                return this; 
2026        }
2027
2028 
2029        /**
2030         * Gets the value(s) for <b>comments</b> ().
2031         * creating it if it does
2032         * not exist. Will not return <code>null</code>.
2033         *
2034     * <p>
2035     * <b>Definition:</b>
2036     * Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage
2037     * </p> 
2038         */
2039        public StringDt getCommentsElement() {  
2040                if (myComments == null) {
2041                        myComments = new StringDt();
2042                }
2043                return myComments;
2044        }
2045
2046        
2047        /**
2048         * Gets the value(s) for <b>comments</b> ().
2049         * creating it if it does
2050         * not exist. This method may return <code>null</code>.
2051         *
2052     * <p>
2053     * <b>Definition:</b>
2054     * Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage
2055     * </p> 
2056         */
2057        public String getComments() {  
2058                return getCommentsElement().getValue();
2059        }
2060
2061        /**
2062         * Sets the value(s) for <b>comments</b> ()
2063         *
2064     * <p>
2065     * <b>Definition:</b>
2066     * Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage
2067     * </p> 
2068         */
2069        public Mapping setComments(StringDt theValue) {
2070                myComments = theValue;
2071                return this;
2072        }
2073        
2074        
2075
2076        /**
2077         * Sets the value for <b>comments</b> ()
2078         *
2079     * <p>
2080     * <b>Definition:</b>
2081     * Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage
2082     * </p> 
2083         */
2084        public Mapping setComments( String theString) {
2085                myComments = new StringDt(theString); 
2086                return this; 
2087        }
2088
2089 
2090
2091
2092        }
2093
2094
2095
2096
2097    @Override
2098    public String getResourceName() {
2099        return "DataElement";
2100    }
2101    
2102    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
2103        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
2104    }
2105
2106
2107}