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>ValueSet</b> Resource
282 * (conformance.terminology)
283 *
284 * <p>
285 * <b>Definition:</b>
286 * A value set specifies a set of codes drawn from one or more code systems.
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/ValueSet">http://hl7.org/fhir/profiles/ValueSet</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="ValueSet", profile="http://hl7.org/fhir/profiles/ValueSet", id="valueset")
301public class ValueSet extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource     {
303
304        /**
305         * Search parameter constant for <b>url</b>
306         * <p>
307         * Description: <b>The logical URL for the value set</b><br>
308         * Type: <b>uri</b><br>
309         * Path: <b>ValueSet.url</b><br>
310         * </p>
311         */
312        @SearchParamDefinition(name="url", path="ValueSet.url", description="The logical URL for the value set", type="uri"  )
313        public static final String SP_URL = "url";
314
315        /**
316         * <b>Fluent Client</b> search parameter constant for <b>url</b>
317         * <p>
318         * Description: <b>The logical URL for the value set</b><br>
319         * Type: <b>uri</b><br>
320         * Path: <b>ValueSet.url</b><br>
321         * </p>
322         */
323        public static final UriClientParam URL = new UriClientParam(SP_URL);
324
325        /**
326         * Search parameter constant for <b>identifier</b>
327         * <p>
328         * Description: <b>The identifier for the value set</b><br>
329         * Type: <b>token</b><br>
330         * Path: <b>ValueSet.identifier</b><br>
331         * </p>
332         */
333        @SearchParamDefinition(name="identifier", path="ValueSet.identifier", description="The identifier for the value set", type="token"  )
334        public static final String SP_IDENTIFIER = "identifier";
335
336        /**
337         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
338         * <p>
339         * Description: <b>The identifier for the value set</b><br>
340         * Type: <b>token</b><br>
341         * Path: <b>ValueSet.identifier</b><br>
342         * </p>
343         */
344        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
345
346        /**
347         * Search parameter constant for <b>version</b>
348         * <p>
349         * Description: <b>The version identifier of the value set</b><br>
350         * Type: <b>token</b><br>
351         * Path: <b>ValueSet.version</b><br>
352         * </p>
353         */
354        @SearchParamDefinition(name="version", path="ValueSet.version", description="The version identifier of the value set", type="token"  )
355        public static final String SP_VERSION = "version";
356
357        /**
358         * <b>Fluent Client</b> search parameter constant for <b>version</b>
359         * <p>
360         * Description: <b>The version identifier of the value set</b><br>
361         * Type: <b>token</b><br>
362         * Path: <b>ValueSet.version</b><br>
363         * </p>
364         */
365        public static final TokenClientParam VERSION = new TokenClientParam(SP_VERSION);
366
367        /**
368         * Search parameter constant for <b>name</b>
369         * <p>
370         * Description: <b>The name of the value set</b><br>
371         * Type: <b>string</b><br>
372         * Path: <b>ValueSet.name</b><br>
373         * </p>
374         */
375        @SearchParamDefinition(name="name", path="ValueSet.name", description="The name of the value set", type="string"  )
376        public static final String SP_NAME = "name";
377
378        /**
379         * <b>Fluent Client</b> search parameter constant for <b>name</b>
380         * <p>
381         * Description: <b>The name of the value set</b><br>
382         * Type: <b>string</b><br>
383         * Path: <b>ValueSet.name</b><br>
384         * </p>
385         */
386        public static final StringClientParam NAME = new StringClientParam(SP_NAME);
387
388        /**
389         * Search parameter constant for <b>publisher</b>
390         * <p>
391         * Description: <b>Name of the publisher of the value set</b><br>
392         * Type: <b>string</b><br>
393         * Path: <b>ValueSet.publisher</b><br>
394         * </p>
395         */
396        @SearchParamDefinition(name="publisher", path="ValueSet.publisher", description="Name of the publisher of the value set", type="string"  )
397        public static final String SP_PUBLISHER = "publisher";
398
399        /**
400         * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
401         * <p>
402         * Description: <b>Name of the publisher of the value set</b><br>
403         * Type: <b>string</b><br>
404         * Path: <b>ValueSet.publisher</b><br>
405         * </p>
406         */
407        public static final StringClientParam PUBLISHER = new StringClientParam(SP_PUBLISHER);
408
409        /**
410         * Search parameter constant for <b>description</b>
411         * <p>
412         * Description: <b>Text search in the description of the value set</b><br>
413         * Type: <b>string</b><br>
414         * Path: <b>ValueSet.description</b><br>
415         * </p>
416         */
417        @SearchParamDefinition(name="description", path="ValueSet.description", description="Text search in the description of the value set", type="string"  )
418        public static final String SP_DESCRIPTION = "description";
419
420        /**
421         * <b>Fluent Client</b> search parameter constant for <b>description</b>
422         * <p>
423         * Description: <b>Text search in the description of the value set</b><br>
424         * Type: <b>string</b><br>
425         * Path: <b>ValueSet.description</b><br>
426         * </p>
427         */
428        public static final StringClientParam DESCRIPTION = new StringClientParam(SP_DESCRIPTION);
429
430        /**
431         * Search parameter constant for <b>status</b>
432         * <p>
433         * Description: <b>The status of the value set</b><br>
434         * Type: <b>token</b><br>
435         * Path: <b>ValueSet.status</b><br>
436         * </p>
437         */
438        @SearchParamDefinition(name="status", path="ValueSet.status", description="The status of the value set", type="token"  )
439        public static final String SP_STATUS = "status";
440
441        /**
442         * <b>Fluent Client</b> search parameter constant for <b>status</b>
443         * <p>
444         * Description: <b>The status of the value set</b><br>
445         * Type: <b>token</b><br>
446         * Path: <b>ValueSet.status</b><br>
447         * </p>
448         */
449        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
450
451        /**
452         * Search parameter constant for <b>date</b>
453         * <p>
454         * Description: <b>The value set publication date</b><br>
455         * Type: <b>date</b><br>
456         * Path: <b>ValueSet.date</b><br>
457         * </p>
458         */
459        @SearchParamDefinition(name="date", path="ValueSet.date", description="The value set publication date", type="date"  )
460        public static final String SP_DATE = "date";
461
462        /**
463         * <b>Fluent Client</b> search parameter constant for <b>date</b>
464         * <p>
465         * Description: <b>The value set publication date</b><br>
466         * Type: <b>date</b><br>
467         * Path: <b>ValueSet.date</b><br>
468         * </p>
469         */
470        public static final DateClientParam DATE = new DateClientParam(SP_DATE);
471
472        /**
473         * Search parameter constant for <b>system</b>
474         * <p>
475         * Description: <b>The system for any codes defined by this value set</b><br>
476         * Type: <b>uri</b><br>
477         * Path: <b>ValueSet.codeSystem.system</b><br>
478         * </p>
479         */
480        @SearchParamDefinition(name="system", path="ValueSet.codeSystem.system", description="The system for any codes defined by this value set", type="uri"  )
481        public static final String SP_SYSTEM = "system";
482
483        /**
484         * <b>Fluent Client</b> search parameter constant for <b>system</b>
485         * <p>
486         * Description: <b>The system for any codes defined by this value set</b><br>
487         * Type: <b>uri</b><br>
488         * Path: <b>ValueSet.codeSystem.system</b><br>
489         * </p>
490         */
491        public static final UriClientParam SYSTEM = new UriClientParam(SP_SYSTEM);
492
493        /**
494         * Search parameter constant for <b>code</b>
495         * <p>
496         * Description: <b>A code defined in the value set</b><br>
497         * Type: <b>token</b><br>
498         * Path: <b>ValueSet.codeSystem.concept.code</b><br>
499         * </p>
500         */
501        @SearchParamDefinition(name="code", path="ValueSet.codeSystem.concept.code", description="A code defined in the value set", type="token"  )
502        public static final String SP_CODE = "code";
503
504        /**
505         * <b>Fluent Client</b> search parameter constant for <b>code</b>
506         * <p>
507         * Description: <b>A code defined in the value set</b><br>
508         * Type: <b>token</b><br>
509         * Path: <b>ValueSet.codeSystem.concept.code</b><br>
510         * </p>
511         */
512        public static final TokenClientParam CODE = new TokenClientParam(SP_CODE);
513
514        /**
515         * Search parameter constant for <b>reference</b>
516         * <p>
517         * Description: <b>A code system included or excluded in the value set or an imported value set</b><br>
518         * Type: <b>uri</b><br>
519         * Path: <b>ValueSet.compose.include.system</b><br>
520         * </p>
521         */
522        @SearchParamDefinition(name="reference", path="ValueSet.compose.include.system", description="A code system included or excluded in the value set or an imported value set", type="uri"  )
523        public static final String SP_REFERENCE = "reference";
524
525        /**
526         * <b>Fluent Client</b> search parameter constant for <b>reference</b>
527         * <p>
528         * Description: <b>A code system included or excluded in the value set or an imported value set</b><br>
529         * Type: <b>uri</b><br>
530         * Path: <b>ValueSet.compose.include.system</b><br>
531         * </p>
532         */
533        public static final UriClientParam REFERENCE = new UriClientParam(SP_REFERENCE);
534
535        /**
536         * Search parameter constant for <b>context</b>
537         * <p>
538         * Description: <b>A use context assigned to the value set</b><br>
539         * Type: <b>token</b><br>
540         * Path: <b>ValueSet.useContext</b><br>
541         * </p>
542         */
543        @SearchParamDefinition(name="context", path="ValueSet.useContext", description="A use context assigned to the value set", type="token"  )
544        public static final String SP_CONTEXT = "context";
545
546        /**
547         * <b>Fluent Client</b> search parameter constant for <b>context</b>
548         * <p>
549         * Description: <b>A use context assigned to the value set</b><br>
550         * Type: <b>token</b><br>
551         * Path: <b>ValueSet.useContext</b><br>
552         * </p>
553         */
554        public static final TokenClientParam CONTEXT = new TokenClientParam(SP_CONTEXT);
555
556        /**
557         * Search parameter constant for <b>expansion</b>
558         * <p>
559         * Description: <b></b><br>
560         * Type: <b>uri</b><br>
561         * Path: <b>ValueSet.expansion.identifier</b><br>
562         * </p>
563         */
564        @SearchParamDefinition(name="expansion", path="ValueSet.expansion.identifier", description="", type="uri"  )
565        public static final String SP_EXPANSION = "expansion";
566
567        /**
568         * <b>Fluent Client</b> search parameter constant for <b>expansion</b>
569         * <p>
570         * Description: <b></b><br>
571         * Type: <b>uri</b><br>
572         * Path: <b>ValueSet.expansion.identifier</b><br>
573         * </p>
574         */
575        public static final UriClientParam EXPANSION = new UriClientParam(SP_EXPANSION);
576
577
578
579        @Child(name="url", type=UriDt.class, order=0, min=0, max=1, summary=true, modifier=false)       
580        @Description(
581                shortDefinition="id",
582                formalDefinition="An absolute URL that is used to identify this value set 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 value set is (or will be) published"
583        )
584        private UriDt myUrl;
585        
586        @Child(name="identifier", type=IdentifierDt.class, order=1, min=0, max=1, summary=true, modifier=false) 
587        @Description(
588                shortDefinition="id",
589                formalDefinition="Formal identifier that is used to identify this value set when it is represented in other formats, or referenced in a specification, model, design or an instance."
590        )
591        private IdentifierDt myIdentifier;
592        
593        @Child(name="version", type=StringDt.class, order=2, min=0, max=1, summary=true, modifier=false)        
594        @Description(
595                shortDefinition="id.version",
596                formalDefinition="Used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp"
597        )
598        private StringDt myVersion;
599        
600        @Child(name="name", type=StringDt.class, order=3, min=0, max=1, summary=true, modifier=false)   
601        @Description(
602                shortDefinition="",
603                formalDefinition="A free text natural language name describing the value set"
604        )
605        private StringDt myName;
606        
607        @Child(name="status", type=CodeDt.class, order=4, min=1, max=1, summary=true, modifier=false)   
608        @Description(
609                shortDefinition="status",
610                formalDefinition="The status of the value set"
611        )
612        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/conformance-resource-status")
613        private BoundCodeDt<ConformanceResourceStatusEnum> myStatus;
614        
615        @Child(name="experimental", type=BooleanDt.class, order=5, min=0, max=1, summary=true, modifier=false)  
616        @Description(
617                shortDefinition="class",
618                formalDefinition="This valueset was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage"
619        )
620        private BooleanDt myExperimental;
621        
622        @Child(name="publisher", type=StringDt.class, order=6, min=0, max=1, summary=true, modifier=false)      
623        @Description(
624                shortDefinition="who.witness",
625                formalDefinition="The name of the individual or organization that published the value set"
626        )
627        private StringDt myPublisher;
628        
629        @Child(name="contact", order=7, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
630        @Description(
631                shortDefinition="",
632                formalDefinition="Contacts to assist a user in finding and communicating with the publisher"
633        )
634        private java.util.List<Contact> myContact;
635        
636        @Child(name="date", type=DateTimeDt.class, order=8, min=0, max=1, summary=true, modifier=false) 
637        @Description(
638                shortDefinition="when.recorded",
639                formalDefinition="The date that the value set status was last changed. 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 implementation guide changes (e.g. the 'content logical definition')"
640        )
641        private DateTimeDt myDate;
642        
643        @Child(name="lockedDate", type=DateDt.class, order=9, min=0, max=1, summary=true, modifier=false)       
644        @Description(
645                shortDefinition="when.init",
646                formalDefinition="If a locked date is defined, then the Content Logical Definition must be evaluated using the current version of all referenced code system(s) and value set instances as of the locked date"
647        )
648        private DateDt myLockedDate;
649        
650        @Child(name="description", type=StringDt.class, order=10, min=0, max=1, summary=true, modifier=false)   
651        @Description(
652                shortDefinition="",
653                formalDefinition="A free text natural language description of the use of the value set - reason for definition, \"the semantic space\" to be included in the value set, conditions of use, etc. The description may include a list of expected usages for the value set and can also describe the approach taken to build the value set."
654        )
655        private StringDt myDescription;
656        
657        @Child(name="useContext", type=CodeableConceptDt.class, order=11, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false) 
658        @Description(
659                shortDefinition="",
660                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 value set definitions."
661        )
662        private java.util.List<CodeableConceptDt> myUseContext;
663        
664        @Child(name="immutable", type=BooleanDt.class, order=12, min=0, max=1, summary=true, modifier=false)    
665        @Description(
666                shortDefinition="",
667                formalDefinition="If this is set to 'true', then no new versions of the content logical definition can be created.  Note: Other metadata might still change"
668        )
669        private BooleanDt myImmutable;
670        
671        @Child(name="requirements", type=StringDt.class, order=13, min=0, max=1, summary=false, modifier=false) 
672        @Description(
673                shortDefinition="",
674                formalDefinition="Explains why this value set is needed and why it has been constrained as it has"
675        )
676        private StringDt myRequirements;
677        
678        @Child(name="copyright", type=StringDt.class, order=14, min=0, max=1, summary=false, modifier=false)    
679        @Description(
680                shortDefinition="",
681                formalDefinition="A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value set"
682        )
683        private StringDt myCopyright;
684        
685        @Child(name="extensible", type=BooleanDt.class, order=15, min=0, max=1, summary=true, modifier=false)   
686        @Description(
687                shortDefinition="",
688                formalDefinition="Whether this is intended to be used with an extensible binding or not"
689        )
690        private BooleanDt myExtensible;
691        
692        @Child(name="codeSystem", order=16, min=0, max=1, summary=true, modifier=false) 
693        @Description(
694                shortDefinition="",
695                formalDefinition="A definition of a code system, inlined into the value set (as a packaging convenience). Note that the inline code system may be used from other value sets by referring to its (codeSystem.system) directly"
696        )
697        private CodeSystem myCodeSystem;
698        
699        @Child(name="compose", order=17, min=0, max=1, summary=false, modifier=false)   
700        @Description(
701                shortDefinition="",
702                formalDefinition="A set of criteria that provide the content logical definition of the value set by including or excluding codes from outside this value set"
703        )
704        private Compose myCompose;
705        
706        @Child(name="expansion", order=18, min=0, max=1, summary=false, modifier=false) 
707        @Description(
708                shortDefinition="",
709                formalDefinition="A value set can also be \"expanded\", where the value set is turned into a simple collection of enumerated codes. This element holds the expansion, if it has been performed"
710        )
711        private Expansion myExpansion;
712        
713
714        @Override
715        public boolean isEmpty() {
716                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myUrl,  myIdentifier,  myVersion,  myName,  myStatus,  myExperimental,  myPublisher,  myContact,  myDate,  myLockedDate,  myDescription,  myUseContext,  myImmutable,  myRequirements,  myCopyright,  myExtensible,  myCodeSystem,  myCompose,  myExpansion);
717        }
718        
719        @Override
720        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
721                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myUrl, myIdentifier, myVersion, myName, myStatus, myExperimental, myPublisher, myContact, myDate, myLockedDate, myDescription, myUseContext, myImmutable, myRequirements, myCopyright, myExtensible, myCodeSystem, myCompose, myExpansion);
722        }
723
724        /**
725         * Gets the value(s) for <b>url</b> (id).
726         * creating it if it does
727         * not exist. Will not return <code>null</code>.
728         *
729     * <p>
730     * <b>Definition:</b>
731     * An absolute URL that is used to identify this value set 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 value set is (or will be) published
732     * </p> 
733         */
734        public UriDt getUrlElement() {  
735                if (myUrl == null) {
736                        myUrl = new UriDt();
737                }
738                return myUrl;
739        }
740
741        
742        /**
743         * Gets the value(s) for <b>url</b> (id).
744         * creating it if it does
745         * not exist. This method may return <code>null</code>.
746         *
747     * <p>
748     * <b>Definition:</b>
749     * An absolute URL that is used to identify this value set 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 value set is (or will be) published
750     * </p> 
751         */
752        public String getUrl() {  
753                return getUrlElement().getValue();
754        }
755
756        /**
757         * Sets the value(s) for <b>url</b> (id)
758         *
759     * <p>
760     * <b>Definition:</b>
761     * An absolute URL that is used to identify this value set 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 value set is (or will be) published
762     * </p> 
763         */
764        public ValueSet setUrl(UriDt theValue) {
765                myUrl = theValue;
766                return this;
767        }
768        
769        
770
771        /**
772         * Sets the value for <b>url</b> (id)
773         *
774     * <p>
775     * <b>Definition:</b>
776     * An absolute URL that is used to identify this value set 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 value set is (or will be) published
777     * </p> 
778         */
779        public ValueSet setUrl( String theUri) {
780                myUrl = new UriDt(theUri); 
781                return this; 
782        }
783
784 
785        /**
786         * Gets the value(s) for <b>identifier</b> (id).
787         * creating it if it does
788         * not exist. Will not return <code>null</code>.
789         *
790     * <p>
791     * <b>Definition:</b>
792     * Formal identifier that is used to identify this value set when it is represented in other formats, or referenced in a specification, model, design or an instance.
793     * </p> 
794         */
795        public IdentifierDt getIdentifier() {  
796                if (myIdentifier == null) {
797                        myIdentifier = new IdentifierDt();
798                }
799                return myIdentifier;
800        }
801
802        /**
803         * Sets the value(s) for <b>identifier</b> (id)
804         *
805     * <p>
806     * <b>Definition:</b>
807     * Formal identifier that is used to identify this value set when it is represented in other formats, or referenced in a specification, model, design or an instance.
808     * </p> 
809         */
810        public ValueSet setIdentifier(IdentifierDt theValue) {
811                myIdentifier = theValue;
812                return this;
813        }
814        
815        
816
817  
818        /**
819         * Gets the value(s) for <b>version</b> (id.version).
820         * creating it if it does
821         * not exist. Will not return <code>null</code>.
822         *
823     * <p>
824     * <b>Definition:</b>
825     * Used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp
826     * </p> 
827         */
828        public StringDt getVersionElement() {  
829                if (myVersion == null) {
830                        myVersion = new StringDt();
831                }
832                return myVersion;
833        }
834
835        
836        /**
837         * Gets the value(s) for <b>version</b> (id.version).
838         * creating it if it does
839         * not exist. This method may return <code>null</code>.
840         *
841     * <p>
842     * <b>Definition:</b>
843     * Used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp
844     * </p> 
845         */
846        public String getVersion() {  
847                return getVersionElement().getValue();
848        }
849
850        /**
851         * Sets the value(s) for <b>version</b> (id.version)
852         *
853     * <p>
854     * <b>Definition:</b>
855     * Used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp
856     * </p> 
857         */
858        public ValueSet setVersion(StringDt theValue) {
859                myVersion = theValue;
860                return this;
861        }
862        
863        
864
865        /**
866         * Sets the value for <b>version</b> (id.version)
867         *
868     * <p>
869     * <b>Definition:</b>
870     * Used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp
871     * </p> 
872         */
873        public ValueSet setVersion( String theString) {
874                myVersion = new StringDt(theString); 
875                return this; 
876        }
877
878 
879        /**
880         * Gets the value(s) for <b>name</b> ().
881         * creating it if it does
882         * not exist. Will not return <code>null</code>.
883         *
884     * <p>
885     * <b>Definition:</b>
886     * A free text natural language name describing the value set
887     * </p> 
888         */
889        public StringDt getNameElement() {  
890                if (myName == null) {
891                        myName = new StringDt();
892                }
893                return myName;
894        }
895
896        
897        /**
898         * Gets the value(s) for <b>name</b> ().
899         * creating it if it does
900         * not exist. This method may return <code>null</code>.
901         *
902     * <p>
903     * <b>Definition:</b>
904     * A free text natural language name describing the value set
905     * </p> 
906         */
907        public String getName() {  
908                return getNameElement().getValue();
909        }
910
911        /**
912         * Sets the value(s) for <b>name</b> ()
913         *
914     * <p>
915     * <b>Definition:</b>
916     * A free text natural language name describing the value set
917     * </p> 
918         */
919        public ValueSet setName(StringDt theValue) {
920                myName = theValue;
921                return this;
922        }
923        
924        
925
926        /**
927         * Sets the value for <b>name</b> ()
928         *
929     * <p>
930     * <b>Definition:</b>
931     * A free text natural language name describing the value set
932     * </p> 
933         */
934        public ValueSet setName( String theString) {
935                myName = new StringDt(theString); 
936                return this; 
937        }
938
939 
940        /**
941         * Gets the value(s) for <b>status</b> (status).
942         * creating it if it does
943         * not exist. Will not return <code>null</code>.
944         *
945     * <p>
946     * <b>Definition:</b>
947     * The status of the value set
948     * </p> 
949         */
950        public BoundCodeDt<ConformanceResourceStatusEnum> getStatusElement() {  
951                if (myStatus == null) {
952                        myStatus = new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER);
953                }
954                return myStatus;
955        }
956
957        
958        /**
959         * Gets the value(s) for <b>status</b> (status).
960         * creating it if it does
961         * not exist. This method may return <code>null</code>.
962         *
963     * <p>
964     * <b>Definition:</b>
965     * The status of the value set
966     * </p> 
967         */
968        public String getStatus() {  
969                return getStatusElement().getValue();
970        }
971
972        /**
973         * Sets the value(s) for <b>status</b> (status)
974         *
975     * <p>
976     * <b>Definition:</b>
977     * The status of the value set
978     * </p> 
979         */
980        public ValueSet setStatus(BoundCodeDt<ConformanceResourceStatusEnum> theValue) {
981                myStatus = theValue;
982                return this;
983        }
984        
985        
986
987        /**
988         * Sets the value(s) for <b>status</b> (status)
989         *
990     * <p>
991     * <b>Definition:</b>
992     * The status of the value set
993     * </p> 
994         */
995        public ValueSet setStatus(ConformanceResourceStatusEnum theValue) {
996                setStatus(new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER, theValue));
997                
998/*
999                getStatusElement().setValueAsEnum(theValue);
1000*/
1001                return this;
1002        }
1003
1004  
1005        /**
1006         * Gets the value(s) for <b>experimental</b> (class).
1007         * creating it if it does
1008         * not exist. Will not return <code>null</code>.
1009         *
1010     * <p>
1011     * <b>Definition:</b>
1012     * This valueset was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1013     * </p> 
1014         */
1015        public BooleanDt getExperimentalElement() {  
1016                if (myExperimental == null) {
1017                        myExperimental = new BooleanDt();
1018                }
1019                return myExperimental;
1020        }
1021
1022        
1023        /**
1024         * Gets the value(s) for <b>experimental</b> (class).
1025         * creating it if it does
1026         * not exist. This method may return <code>null</code>.
1027         *
1028     * <p>
1029     * <b>Definition:</b>
1030     * This valueset was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1031     * </p> 
1032         */
1033        public Boolean getExperimental() {  
1034                return getExperimentalElement().getValue();
1035        }
1036
1037        /**
1038         * Sets the value(s) for <b>experimental</b> (class)
1039         *
1040     * <p>
1041     * <b>Definition:</b>
1042     * This valueset was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1043     * </p> 
1044         */
1045        public ValueSet setExperimental(BooleanDt theValue) {
1046                myExperimental = theValue;
1047                return this;
1048        }
1049        
1050        
1051
1052        /**
1053         * Sets the value for <b>experimental</b> (class)
1054         *
1055     * <p>
1056     * <b>Definition:</b>
1057     * This valueset was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1058     * </p> 
1059         */
1060        public ValueSet setExperimental( boolean theBoolean) {
1061                myExperimental = new BooleanDt(theBoolean); 
1062                return this; 
1063        }
1064
1065 
1066        /**
1067         * Gets the value(s) for <b>publisher</b> (who.witness).
1068         * creating it if it does
1069         * not exist. Will not return <code>null</code>.
1070         *
1071     * <p>
1072     * <b>Definition:</b>
1073     * The name of the individual or organization that published the value set
1074     * </p> 
1075         */
1076        public StringDt getPublisherElement() {  
1077                if (myPublisher == null) {
1078                        myPublisher = new StringDt();
1079                }
1080                return myPublisher;
1081        }
1082
1083        
1084        /**
1085         * Gets the value(s) for <b>publisher</b> (who.witness).
1086         * creating it if it does
1087         * not exist. This method may return <code>null</code>.
1088         *
1089     * <p>
1090     * <b>Definition:</b>
1091     * The name of the individual or organization that published the value set
1092     * </p> 
1093         */
1094        public String getPublisher() {  
1095                return getPublisherElement().getValue();
1096        }
1097
1098        /**
1099         * Sets the value(s) for <b>publisher</b> (who.witness)
1100         *
1101     * <p>
1102     * <b>Definition:</b>
1103     * The name of the individual or organization that published the value set
1104     * </p> 
1105         */
1106        public ValueSet setPublisher(StringDt theValue) {
1107                myPublisher = theValue;
1108                return this;
1109        }
1110        
1111        
1112
1113        /**
1114         * Sets the value for <b>publisher</b> (who.witness)
1115         *
1116     * <p>
1117     * <b>Definition:</b>
1118     * The name of the individual or organization that published the value set
1119     * </p> 
1120         */
1121        public ValueSet setPublisher( String theString) {
1122                myPublisher = new StringDt(theString); 
1123                return this; 
1124        }
1125
1126 
1127        /**
1128         * Gets the value(s) for <b>contact</b> ().
1129         * creating it if it does
1130         * not exist. Will not return <code>null</code>.
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 java.util.List<Contact> getContact() {  
1138                if (myContact == null) {
1139                        myContact = new java.util.ArrayList<Contact>();
1140                }
1141                return myContact;
1142        }
1143
1144        /**
1145         * Sets the value(s) for <b>contact</b> ()
1146         *
1147     * <p>
1148     * <b>Definition:</b>
1149     * Contacts to assist a user in finding and communicating with the publisher
1150     * </p> 
1151         */
1152        public ValueSet setContact(java.util.List<Contact> theValue) {
1153                myContact = theValue;
1154                return this;
1155        }
1156        
1157        
1158
1159        /**
1160         * Adds and returns a new value for <b>contact</b> ()
1161         *
1162     * <p>
1163     * <b>Definition:</b>
1164     * Contacts to assist a user in finding and communicating with the publisher
1165     * </p> 
1166         */
1167        public Contact addContact() {
1168                Contact newType = new Contact();
1169                getContact().add(newType);
1170                return newType; 
1171        }
1172
1173        /**
1174         * Adds a given new value for <b>contact</b> ()
1175         *
1176         * <p>
1177         * <b>Definition:</b>
1178         * Contacts to assist a user in finding and communicating with the publisher
1179         * </p>
1180         * @param theValue The contact to add (must not be <code>null</code>)
1181         */
1182        public ValueSet addContact(Contact theValue) {
1183                if (theValue == null) {
1184                        throw new NullPointerException("theValue must not be null");
1185                }
1186                getContact().add(theValue);
1187                return this;
1188        }
1189
1190        /**
1191         * Gets the first repetition for <b>contact</b> (),
1192         * creating it if it does not already exist.
1193         *
1194     * <p>
1195     * <b>Definition:</b>
1196     * Contacts to assist a user in finding and communicating with the publisher
1197     * </p> 
1198         */
1199        public Contact getContactFirstRep() {
1200                if (getContact().isEmpty()) {
1201                        return addContact();
1202                }
1203                return getContact().get(0); 
1204        }
1205  
1206        /**
1207         * Gets the value(s) for <b>date</b> (when.recorded).
1208         * creating it if it does
1209         * not exist. Will not return <code>null</code>.
1210         *
1211     * <p>
1212     * <b>Definition:</b>
1213     * The date that the value set status was last changed. 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 implementation guide changes (e.g. the 'content logical definition')
1214     * </p> 
1215         */
1216        public DateTimeDt getDateElement() {  
1217                if (myDate == null) {
1218                        myDate = new DateTimeDt();
1219                }
1220                return myDate;
1221        }
1222
1223        
1224        /**
1225         * Gets the value(s) for <b>date</b> (when.recorded).
1226         * creating it if it does
1227         * not exist. This method may return <code>null</code>.
1228         *
1229     * <p>
1230     * <b>Definition:</b>
1231     * The date that the value set status was last changed. 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 implementation guide changes (e.g. the 'content logical definition')
1232     * </p> 
1233         */
1234        public Date getDate() {  
1235                return getDateElement().getValue();
1236        }
1237
1238        /**
1239         * Sets the value(s) for <b>date</b> (when.recorded)
1240         *
1241     * <p>
1242     * <b>Definition:</b>
1243     * The date that the value set status was last changed. 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 implementation guide changes (e.g. the 'content logical definition')
1244     * </p> 
1245         */
1246        public ValueSet setDate(DateTimeDt theValue) {
1247                myDate = theValue;
1248                return this;
1249        }
1250        
1251        
1252
1253        /**
1254         * Sets the value for <b>date</b> (when.recorded)
1255         *
1256     * <p>
1257     * <b>Definition:</b>
1258     * The date that the value set status was last changed. 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 implementation guide changes (e.g. the 'content logical definition')
1259     * </p> 
1260         */
1261        public ValueSet setDateWithSecondsPrecision( Date theDate) {
1262                myDate = new DateTimeDt(theDate); 
1263                return this; 
1264        }
1265
1266        /**
1267         * Sets the value for <b>date</b> (when.recorded)
1268         *
1269     * <p>
1270     * <b>Definition:</b>
1271     * The date that the value set status was last changed. 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 implementation guide changes (e.g. the 'content logical definition')
1272     * </p> 
1273         */
1274        public ValueSet setDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
1275                myDate = new DateTimeDt(theDate, thePrecision); 
1276                return this; 
1277        }
1278
1279 
1280        /**
1281         * Gets the value(s) for <b>lockedDate</b> (when.init).
1282         * creating it if it does
1283         * not exist. Will not return <code>null</code>.
1284         *
1285     * <p>
1286     * <b>Definition:</b>
1287     * If a locked date is defined, then the Content Logical Definition must be evaluated using the current version of all referenced code system(s) and value set instances as of the locked date
1288     * </p> 
1289         */
1290        public DateDt getLockedDateElement() {  
1291                if (myLockedDate == null) {
1292                        myLockedDate = new DateDt();
1293                }
1294                return myLockedDate;
1295        }
1296
1297        
1298        /**
1299         * Gets the value(s) for <b>lockedDate</b> (when.init).
1300         * creating it if it does
1301         * not exist. This method may return <code>null</code>.
1302         *
1303     * <p>
1304     * <b>Definition:</b>
1305     * If a locked date is defined, then the Content Logical Definition must be evaluated using the current version of all referenced code system(s) and value set instances as of the locked date
1306     * </p> 
1307         */
1308        public Date getLockedDate() {  
1309                return getLockedDateElement().getValue();
1310        }
1311
1312        /**
1313         * Sets the value(s) for <b>lockedDate</b> (when.init)
1314         *
1315     * <p>
1316     * <b>Definition:</b>
1317     * If a locked date is defined, then the Content Logical Definition must be evaluated using the current version of all referenced code system(s) and value set instances as of the locked date
1318     * </p> 
1319         */
1320        public ValueSet setLockedDate(DateDt theValue) {
1321                myLockedDate = theValue;
1322                return this;
1323        }
1324        
1325        
1326
1327        /**
1328         * Sets the value for <b>lockedDate</b> (when.init)
1329         *
1330     * <p>
1331     * <b>Definition:</b>
1332     * If a locked date is defined, then the Content Logical Definition must be evaluated using the current version of all referenced code system(s) and value set instances as of the locked date
1333     * </p> 
1334         */
1335        public ValueSet setLockedDateWithDayPrecision( Date theDate) {
1336                myLockedDate = new DateDt(theDate); 
1337                return this; 
1338        }
1339
1340        /**
1341         * Sets the value for <b>lockedDate</b> (when.init)
1342         *
1343     * <p>
1344     * <b>Definition:</b>
1345     * If a locked date is defined, then the Content Logical Definition must be evaluated using the current version of all referenced code system(s) and value set instances as of the locked date
1346     * </p> 
1347         */
1348        public ValueSet setLockedDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
1349                myLockedDate = new DateDt(theDate, thePrecision); 
1350                return this; 
1351        }
1352
1353 
1354        /**
1355         * Gets the value(s) for <b>description</b> ().
1356         * creating it if it does
1357         * not exist. Will not return <code>null</code>.
1358         *
1359     * <p>
1360     * <b>Definition:</b>
1361     * A free text natural language description of the use of the value set - reason for definition, \&quot;the semantic space\&quot; to be included in the value set, conditions of use, etc. The description may include a list of expected usages for the value set and can also describe the approach taken to build the value set.
1362     * </p> 
1363         */
1364        public StringDt getDescriptionElement() {  
1365                if (myDescription == null) {
1366                        myDescription = new StringDt();
1367                }
1368                return myDescription;
1369        }
1370
1371        
1372        /**
1373         * Gets the value(s) for <b>description</b> ().
1374         * creating it if it does
1375         * not exist. This method may return <code>null</code>.
1376         *
1377     * <p>
1378     * <b>Definition:</b>
1379     * A free text natural language description of the use of the value set - reason for definition, \&quot;the semantic space\&quot; to be included in the value set, conditions of use, etc. The description may include a list of expected usages for the value set and can also describe the approach taken to build the value set.
1380     * </p> 
1381         */
1382        public String getDescription() {  
1383                return getDescriptionElement().getValue();
1384        }
1385
1386        /**
1387         * Sets the value(s) for <b>description</b> ()
1388         *
1389     * <p>
1390     * <b>Definition:</b>
1391     * A free text natural language description of the use of the value set - reason for definition, \&quot;the semantic space\&quot; to be included in the value set, conditions of use, etc. The description may include a list of expected usages for the value set and can also describe the approach taken to build the value set.
1392     * </p> 
1393         */
1394        public ValueSet setDescription(StringDt theValue) {
1395                myDescription = theValue;
1396                return this;
1397        }
1398        
1399        
1400
1401        /**
1402         * Sets the value for <b>description</b> ()
1403         *
1404     * <p>
1405     * <b>Definition:</b>
1406     * A free text natural language description of the use of the value set - reason for definition, \&quot;the semantic space\&quot; to be included in the value set, conditions of use, etc. The description may include a list of expected usages for the value set and can also describe the approach taken to build the value set.
1407     * </p> 
1408         */
1409        public ValueSet setDescription( String theString) {
1410                myDescription = new StringDt(theString); 
1411                return this; 
1412        }
1413
1414 
1415        /**
1416         * Gets the value(s) for <b>useContext</b> ().
1417         * creating it if it does
1418         * not exist. Will not return <code>null</code>.
1419         *
1420     * <p>
1421     * <b>Definition:</b>
1422     * 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 value set definitions.
1423     * </p> 
1424         */
1425        public java.util.List<CodeableConceptDt> getUseContext() {  
1426                if (myUseContext == null) {
1427                        myUseContext = new java.util.ArrayList<CodeableConceptDt>();
1428                }
1429                return myUseContext;
1430        }
1431
1432        /**
1433         * Sets the value(s) for <b>useContext</b> ()
1434         *
1435     * <p>
1436     * <b>Definition:</b>
1437     * 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 value set definitions.
1438     * </p> 
1439         */
1440        public ValueSet setUseContext(java.util.List<CodeableConceptDt> theValue) {
1441                myUseContext = theValue;
1442                return this;
1443        }
1444        
1445        
1446
1447        /**
1448         * Adds and returns a new value for <b>useContext</b> ()
1449         *
1450     * <p>
1451     * <b>Definition:</b>
1452     * 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 value set definitions.
1453     * </p> 
1454         */
1455        public CodeableConceptDt addUseContext() {
1456                CodeableConceptDt newType = new CodeableConceptDt();
1457                getUseContext().add(newType);
1458                return newType; 
1459        }
1460
1461        /**
1462         * Adds a given new value for <b>useContext</b> ()
1463         *
1464         * <p>
1465         * <b>Definition:</b>
1466         * 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 value set definitions.
1467         * </p>
1468         * @param theValue The useContext to add (must not be <code>null</code>)
1469         */
1470        public ValueSet addUseContext(CodeableConceptDt theValue) {
1471                if (theValue == null) {
1472                        throw new NullPointerException("theValue must not be null");
1473                }
1474                getUseContext().add(theValue);
1475                return this;
1476        }
1477
1478        /**
1479         * Gets the first repetition for <b>useContext</b> (),
1480         * creating it if it does not already exist.
1481         *
1482     * <p>
1483     * <b>Definition:</b>
1484     * 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 value set definitions.
1485     * </p> 
1486         */
1487        public CodeableConceptDt getUseContextFirstRep() {
1488                if (getUseContext().isEmpty()) {
1489                        return addUseContext();
1490                }
1491                return getUseContext().get(0); 
1492        }
1493  
1494        /**
1495         * Gets the value(s) for <b>immutable</b> ().
1496         * creating it if it does
1497         * not exist. Will not return <code>null</code>.
1498         *
1499     * <p>
1500     * <b>Definition:</b>
1501     * If this is set to 'true', then no new versions of the content logical definition can be created.  Note: Other metadata might still change
1502     * </p> 
1503         */
1504        public BooleanDt getImmutableElement() {  
1505                if (myImmutable == null) {
1506                        myImmutable = new BooleanDt();
1507                }
1508                return myImmutable;
1509        }
1510
1511        
1512        /**
1513         * Gets the value(s) for <b>immutable</b> ().
1514         * creating it if it does
1515         * not exist. This method may return <code>null</code>.
1516         *
1517     * <p>
1518     * <b>Definition:</b>
1519     * If this is set to 'true', then no new versions of the content logical definition can be created.  Note: Other metadata might still change
1520     * </p> 
1521         */
1522        public Boolean getImmutable() {  
1523                return getImmutableElement().getValue();
1524        }
1525
1526        /**
1527         * Sets the value(s) for <b>immutable</b> ()
1528         *
1529     * <p>
1530     * <b>Definition:</b>
1531     * If this is set to 'true', then no new versions of the content logical definition can be created.  Note: Other metadata might still change
1532     * </p> 
1533         */
1534        public ValueSet setImmutable(BooleanDt theValue) {
1535                myImmutable = theValue;
1536                return this;
1537        }
1538        
1539        
1540
1541        /**
1542         * Sets the value for <b>immutable</b> ()
1543         *
1544     * <p>
1545     * <b>Definition:</b>
1546     * If this is set to 'true', then no new versions of the content logical definition can be created.  Note: Other metadata might still change
1547     * </p> 
1548         */
1549        public ValueSet setImmutable( boolean theBoolean) {
1550                myImmutable = new BooleanDt(theBoolean); 
1551                return this; 
1552        }
1553
1554 
1555        /**
1556         * Gets the value(s) for <b>requirements</b> ().
1557         * creating it if it does
1558         * not exist. Will not return <code>null</code>.
1559         *
1560     * <p>
1561     * <b>Definition:</b>
1562     * Explains why this value set is needed and why it has been constrained as it has
1563     * </p> 
1564         */
1565        public StringDt getRequirementsElement() {  
1566                if (myRequirements == null) {
1567                        myRequirements = new StringDt();
1568                }
1569                return myRequirements;
1570        }
1571
1572        
1573        /**
1574         * Gets the value(s) for <b>requirements</b> ().
1575         * creating it if it does
1576         * not exist. This method may return <code>null</code>.
1577         *
1578     * <p>
1579     * <b>Definition:</b>
1580     * Explains why this value set is needed and why it has been constrained as it has
1581     * </p> 
1582         */
1583        public String getRequirements() {  
1584                return getRequirementsElement().getValue();
1585        }
1586
1587        /**
1588         * Sets the value(s) for <b>requirements</b> ()
1589         *
1590     * <p>
1591     * <b>Definition:</b>
1592     * Explains why this value set is needed and why it has been constrained as it has
1593     * </p> 
1594         */
1595        public ValueSet setRequirements(StringDt theValue) {
1596                myRequirements = theValue;
1597                return this;
1598        }
1599        
1600        
1601
1602        /**
1603         * Sets the value for <b>requirements</b> ()
1604         *
1605     * <p>
1606     * <b>Definition:</b>
1607     * Explains why this value set is needed and why it has been constrained as it has
1608     * </p> 
1609         */
1610        public ValueSet setRequirements( String theString) {
1611                myRequirements = new StringDt(theString); 
1612                return this; 
1613        }
1614
1615 
1616        /**
1617         * Gets the value(s) for <b>copyright</b> ().
1618         * creating it if it does
1619         * not exist. Will not return <code>null</code>.
1620         *
1621     * <p>
1622     * <b>Definition:</b>
1623     * A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value set
1624     * </p> 
1625         */
1626        public StringDt getCopyrightElement() {  
1627                if (myCopyright == null) {
1628                        myCopyright = new StringDt();
1629                }
1630                return myCopyright;
1631        }
1632
1633        
1634        /**
1635         * Gets the value(s) for <b>copyright</b> ().
1636         * creating it if it does
1637         * not exist. This method may return <code>null</code>.
1638         *
1639     * <p>
1640     * <b>Definition:</b>
1641     * A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value set
1642     * </p> 
1643         */
1644        public String getCopyright() {  
1645                return getCopyrightElement().getValue();
1646        }
1647
1648        /**
1649         * Sets the value(s) for <b>copyright</b> ()
1650         *
1651     * <p>
1652     * <b>Definition:</b>
1653     * A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value set
1654     * </p> 
1655         */
1656        public ValueSet setCopyright(StringDt theValue) {
1657                myCopyright = theValue;
1658                return this;
1659        }
1660        
1661        
1662
1663        /**
1664         * Sets the value for <b>copyright</b> ()
1665         *
1666     * <p>
1667     * <b>Definition:</b>
1668     * A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value set
1669     * </p> 
1670         */
1671        public ValueSet setCopyright( String theString) {
1672                myCopyright = new StringDt(theString); 
1673                return this; 
1674        }
1675
1676 
1677        /**
1678         * Gets the value(s) for <b>extensible</b> ().
1679         * creating it if it does
1680         * not exist. Will not return <code>null</code>.
1681         *
1682     * <p>
1683     * <b>Definition:</b>
1684     * Whether this is intended to be used with an extensible binding or not
1685     * </p> 
1686         */
1687        public BooleanDt getExtensibleElement() {  
1688                if (myExtensible == null) {
1689                        myExtensible = new BooleanDt();
1690                }
1691                return myExtensible;
1692        }
1693
1694        
1695        /**
1696         * Gets the value(s) for <b>extensible</b> ().
1697         * creating it if it does
1698         * not exist. This method may return <code>null</code>.
1699         *
1700     * <p>
1701     * <b>Definition:</b>
1702     * Whether this is intended to be used with an extensible binding or not
1703     * </p> 
1704         */
1705        public Boolean getExtensible() {  
1706                return getExtensibleElement().getValue();
1707        }
1708
1709        /**
1710         * Sets the value(s) for <b>extensible</b> ()
1711         *
1712     * <p>
1713     * <b>Definition:</b>
1714     * Whether this is intended to be used with an extensible binding or not
1715     * </p> 
1716         */
1717        public ValueSet setExtensible(BooleanDt theValue) {
1718                myExtensible = theValue;
1719                return this;
1720        }
1721        
1722        
1723
1724        /**
1725         * Sets the value for <b>extensible</b> ()
1726         *
1727     * <p>
1728     * <b>Definition:</b>
1729     * Whether this is intended to be used with an extensible binding or not
1730     * </p> 
1731         */
1732        public ValueSet setExtensible( boolean theBoolean) {
1733                myExtensible = new BooleanDt(theBoolean); 
1734                return this; 
1735        }
1736
1737 
1738        /**
1739         * Gets the value(s) for <b>codeSystem</b> ().
1740         * creating it if it does
1741         * not exist. Will not return <code>null</code>.
1742         *
1743     * <p>
1744     * <b>Definition:</b>
1745     * A definition of a code system, inlined into the value set (as a packaging convenience). Note that the inline code system may be used from other value sets by referring to its (codeSystem.system) directly
1746     * </p> 
1747         */
1748        public CodeSystem getCodeSystem() {  
1749                if (myCodeSystem == null) {
1750                        myCodeSystem = new CodeSystem();
1751                }
1752                return myCodeSystem;
1753        }
1754
1755        /**
1756         * Sets the value(s) for <b>codeSystem</b> ()
1757         *
1758     * <p>
1759     * <b>Definition:</b>
1760     * A definition of a code system, inlined into the value set (as a packaging convenience). Note that the inline code system may be used from other value sets by referring to its (codeSystem.system) directly
1761     * </p> 
1762         */
1763        public ValueSet setCodeSystem(CodeSystem theValue) {
1764                myCodeSystem = theValue;
1765                return this;
1766        }
1767        
1768        
1769
1770  
1771        /**
1772         * Gets the value(s) for <b>compose</b> ().
1773         * creating it if it does
1774         * not exist. Will not return <code>null</code>.
1775         *
1776     * <p>
1777     * <b>Definition:</b>
1778     * A set of criteria that provide the content logical definition of the value set by including or excluding codes from outside this value set
1779     * </p> 
1780         */
1781        public Compose getCompose() {  
1782                if (myCompose == null) {
1783                        myCompose = new Compose();
1784                }
1785                return myCompose;
1786        }
1787
1788        /**
1789         * Sets the value(s) for <b>compose</b> ()
1790         *
1791     * <p>
1792     * <b>Definition:</b>
1793     * A set of criteria that provide the content logical definition of the value set by including or excluding codes from outside this value set
1794     * </p> 
1795         */
1796        public ValueSet setCompose(Compose theValue) {
1797                myCompose = theValue;
1798                return this;
1799        }
1800        
1801        
1802
1803  
1804        /**
1805         * Gets the value(s) for <b>expansion</b> ().
1806         * creating it if it does
1807         * not exist. Will not return <code>null</code>.
1808         *
1809     * <p>
1810     * <b>Definition:</b>
1811     * A value set can also be \&quot;expanded\&quot;, where the value set is turned into a simple collection of enumerated codes. This element holds the expansion, if it has been performed
1812     * </p> 
1813         */
1814        public Expansion getExpansion() {  
1815                if (myExpansion == null) {
1816                        myExpansion = new Expansion();
1817                }
1818                return myExpansion;
1819        }
1820
1821        /**
1822         * Sets the value(s) for <b>expansion</b> ()
1823         *
1824     * <p>
1825     * <b>Definition:</b>
1826     * A value set can also be \&quot;expanded\&quot;, where the value set is turned into a simple collection of enumerated codes. This element holds the expansion, if it has been performed
1827     * </p> 
1828         */
1829        public ValueSet setExpansion(Expansion theValue) {
1830                myExpansion = theValue;
1831                return this;
1832        }
1833        
1834        
1835
1836  
1837        /**
1838         * Block class for child element: <b>ValueSet.contact</b> ()
1839         *
1840     * <p>
1841     * <b>Definition:</b>
1842     * Contacts to assist a user in finding and communicating with the publisher
1843     * </p> 
1844         */
1845        @Block()        
1846        public static class Contact 
1847            extends  BaseIdentifiableElement        implements IResourceBlock {
1848        
1849        @Child(name="name", type=StringDt.class, order=0, min=0, max=1, summary=true, modifier=false)   
1850        @Description(
1851                shortDefinition="",
1852                formalDefinition="The name of an individual to contact regarding the value set"
1853        )
1854        private StringDt myName;
1855        
1856        @Child(name="telecom", type=ContactPointDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
1857        @Description(
1858                shortDefinition="",
1859                formalDefinition="Contact details for individual (if a name was provided) or the publisher"
1860        )
1861        private java.util.List<ContactPointDt> myTelecom;
1862        
1863
1864        @Override
1865        public boolean isEmpty() {
1866                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myTelecom);
1867        }
1868        
1869        @Override
1870        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1871                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myTelecom);
1872        }
1873
1874        /**
1875         * Gets the value(s) for <b>name</b> ().
1876         * creating it if it does
1877         * not exist. Will not return <code>null</code>.
1878         *
1879     * <p>
1880     * <b>Definition:</b>
1881     * The name of an individual to contact regarding the value set
1882     * </p> 
1883         */
1884        public StringDt getNameElement() {  
1885                if (myName == null) {
1886                        myName = new StringDt();
1887                }
1888                return myName;
1889        }
1890
1891        
1892        /**
1893         * Gets the value(s) for <b>name</b> ().
1894         * creating it if it does
1895         * not exist. This method may return <code>null</code>.
1896         *
1897     * <p>
1898     * <b>Definition:</b>
1899     * The name of an individual to contact regarding the value set
1900     * </p> 
1901         */
1902        public String getName() {  
1903                return getNameElement().getValue();
1904        }
1905
1906        /**
1907         * Sets the value(s) for <b>name</b> ()
1908         *
1909     * <p>
1910     * <b>Definition:</b>
1911     * The name of an individual to contact regarding the value set
1912     * </p> 
1913         */
1914        public Contact setName(StringDt theValue) {
1915                myName = theValue;
1916                return this;
1917        }
1918        
1919        
1920
1921        /**
1922         * Sets the value for <b>name</b> ()
1923         *
1924     * <p>
1925     * <b>Definition:</b>
1926     * The name of an individual to contact regarding the value set
1927     * </p> 
1928         */
1929        public Contact setName( String theString) {
1930                myName = new StringDt(theString); 
1931                return this; 
1932        }
1933
1934 
1935        /**
1936         * Gets the value(s) for <b>telecom</b> ().
1937         * creating it if it does
1938         * not exist. Will not return <code>null</code>.
1939         *
1940     * <p>
1941     * <b>Definition:</b>
1942     * Contact details for individual (if a name was provided) or the publisher
1943     * </p> 
1944         */
1945        public java.util.List<ContactPointDt> getTelecom() {  
1946                if (myTelecom == null) {
1947                        myTelecom = new java.util.ArrayList<ContactPointDt>();
1948                }
1949                return myTelecom;
1950        }
1951
1952        /**
1953         * Sets the value(s) for <b>telecom</b> ()
1954         *
1955     * <p>
1956     * <b>Definition:</b>
1957     * Contact details for individual (if a name was provided) or the publisher
1958     * </p> 
1959         */
1960        public Contact setTelecom(java.util.List<ContactPointDt> theValue) {
1961                myTelecom = theValue;
1962                return this;
1963        }
1964        
1965        
1966
1967        /**
1968         * Adds and returns a new value for <b>telecom</b> ()
1969         *
1970     * <p>
1971     * <b>Definition:</b>
1972     * Contact details for individual (if a name was provided) or the publisher
1973     * </p> 
1974         */
1975        public ContactPointDt addTelecom() {
1976                ContactPointDt newType = new ContactPointDt();
1977                getTelecom().add(newType);
1978                return newType; 
1979        }
1980
1981        /**
1982         * Adds a given new value for <b>telecom</b> ()
1983         *
1984         * <p>
1985         * <b>Definition:</b>
1986         * Contact details for individual (if a name was provided) or the publisher
1987         * </p>
1988         * @param theValue The telecom to add (must not be <code>null</code>)
1989         */
1990        public Contact addTelecom(ContactPointDt theValue) {
1991                if (theValue == null) {
1992                        throw new NullPointerException("theValue must not be null");
1993                }
1994                getTelecom().add(theValue);
1995                return this;
1996        }
1997
1998        /**
1999         * Gets the first repetition for <b>telecom</b> (),
2000         * creating it if it does not already exist.
2001         *
2002     * <p>
2003     * <b>Definition:</b>
2004     * Contact details for individual (if a name was provided) or the publisher
2005     * </p> 
2006         */
2007        public ContactPointDt getTelecomFirstRep() {
2008                if (getTelecom().isEmpty()) {
2009                        return addTelecom();
2010                }
2011                return getTelecom().get(0); 
2012        }
2013  
2014
2015
2016        }
2017
2018
2019        /**
2020         * Block class for child element: <b>ValueSet.codeSystem</b> ()
2021         *
2022     * <p>
2023     * <b>Definition:</b>
2024     * A definition of a code system, inlined into the value set (as a packaging convenience). Note that the inline code system may be used from other value sets by referring to its (codeSystem.system) directly
2025     * </p> 
2026         */
2027        @Block()        
2028        public static class CodeSystem 
2029            extends  BaseIdentifiableElement        implements IResourceBlock {
2030        
2031        @Child(name="system", type=UriDt.class, order=0, min=1, max=1, summary=true, modifier=false)    
2032        @Description(
2033                shortDefinition="",
2034                formalDefinition="An absolute URI that is used to reference this code system, including in [Coding]{datatypes.html#Coding}.system"
2035        )
2036        private UriDt mySystem;
2037        
2038        @Child(name="version", type=StringDt.class, order=1, min=0, max=1, summary=true, modifier=false)        
2039        @Description(
2040                shortDefinition="",
2041                formalDefinition="The version of this code system that defines the codes. Note that the version is optional because a well maintained code system does not suffer from versioning, and therefore the version does not need to be maintained. However many code systems are not well maintained, and the version needs to be defined and tracked"
2042        )
2043        private StringDt myVersion;
2044        
2045        @Child(name="caseSensitive", type=BooleanDt.class, order=2, min=0, max=1, summary=true, modifier=false) 
2046        @Description(
2047                shortDefinition="",
2048                formalDefinition="If code comparison is case sensitive when codes within this system are compared to each other"
2049        )
2050        private BooleanDt myCaseSensitive;
2051        
2052        @Child(name="concept", order=3, min=1, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
2053        @Description(
2054                shortDefinition="",
2055                formalDefinition="Concepts that are in the code system. The concept definitions are inherently hierarchical, but the definitions must be consulted to determine what the meaning of the hierarchical relationships are"
2056        )
2057        private java.util.List<CodeSystemConcept> myConcept;
2058        
2059
2060        @Override
2061        public boolean isEmpty() {
2062                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  mySystem,  myVersion,  myCaseSensitive,  myConcept);
2063        }
2064        
2065        @Override
2066        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2067                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, mySystem, myVersion, myCaseSensitive, myConcept);
2068        }
2069
2070        /**
2071         * Gets the value(s) for <b>system</b> ().
2072         * creating it if it does
2073         * not exist. Will not return <code>null</code>.
2074         *
2075     * <p>
2076     * <b>Definition:</b>
2077     * An absolute URI that is used to reference this code system, including in [Coding]{datatypes.html#Coding}.system
2078     * </p> 
2079         */
2080        public UriDt getSystemElement() {  
2081                if (mySystem == null) {
2082                        mySystem = new UriDt();
2083                }
2084                return mySystem;
2085        }
2086
2087        
2088        /**
2089         * Gets the value(s) for <b>system</b> ().
2090         * creating it if it does
2091         * not exist. This method may return <code>null</code>.
2092         *
2093     * <p>
2094     * <b>Definition:</b>
2095     * An absolute URI that is used to reference this code system, including in [Coding]{datatypes.html#Coding}.system
2096     * </p> 
2097         */
2098        public String getSystem() {  
2099                return getSystemElement().getValue();
2100        }
2101
2102        /**
2103         * Sets the value(s) for <b>system</b> ()
2104         *
2105     * <p>
2106     * <b>Definition:</b>
2107     * An absolute URI that is used to reference this code system, including in [Coding]{datatypes.html#Coding}.system
2108     * </p> 
2109         */
2110        public CodeSystem setSystem(UriDt theValue) {
2111                mySystem = theValue;
2112                return this;
2113        }
2114        
2115        
2116
2117        /**
2118         * Sets the value for <b>system</b> ()
2119         *
2120     * <p>
2121     * <b>Definition:</b>
2122     * An absolute URI that is used to reference this code system, including in [Coding]{datatypes.html#Coding}.system
2123     * </p> 
2124         */
2125        public CodeSystem setSystem( String theUri) {
2126                mySystem = new UriDt(theUri); 
2127                return this; 
2128        }
2129
2130 
2131        /**
2132         * Gets the value(s) for <b>version</b> ().
2133         * creating it if it does
2134         * not exist. Will not return <code>null</code>.
2135         *
2136     * <p>
2137     * <b>Definition:</b>
2138     * The version of this code system that defines the codes. Note that the version is optional because a well maintained code system does not suffer from versioning, and therefore the version does not need to be maintained. However many code systems are not well maintained, and the version needs to be defined and tracked
2139     * </p> 
2140         */
2141        public StringDt getVersionElement() {  
2142                if (myVersion == null) {
2143                        myVersion = new StringDt();
2144                }
2145                return myVersion;
2146        }
2147
2148        
2149        /**
2150         * Gets the value(s) for <b>version</b> ().
2151         * creating it if it does
2152         * not exist. This method may return <code>null</code>.
2153         *
2154     * <p>
2155     * <b>Definition:</b>
2156     * The version of this code system that defines the codes. Note that the version is optional because a well maintained code system does not suffer from versioning, and therefore the version does not need to be maintained. However many code systems are not well maintained, and the version needs to be defined and tracked
2157     * </p> 
2158         */
2159        public String getVersion() {  
2160                return getVersionElement().getValue();
2161        }
2162
2163        /**
2164         * Sets the value(s) for <b>version</b> ()
2165         *
2166     * <p>
2167     * <b>Definition:</b>
2168     * The version of this code system that defines the codes. Note that the version is optional because a well maintained code system does not suffer from versioning, and therefore the version does not need to be maintained. However many code systems are not well maintained, and the version needs to be defined and tracked
2169     * </p> 
2170         */
2171        public CodeSystem setVersion(StringDt theValue) {
2172                myVersion = theValue;
2173                return this;
2174        }
2175        
2176        
2177
2178        /**
2179         * Sets the value for <b>version</b> ()
2180         *
2181     * <p>
2182     * <b>Definition:</b>
2183     * The version of this code system that defines the codes. Note that the version is optional because a well maintained code system does not suffer from versioning, and therefore the version does not need to be maintained. However many code systems are not well maintained, and the version needs to be defined and tracked
2184     * </p> 
2185         */
2186        public CodeSystem setVersion( String theString) {
2187                myVersion = new StringDt(theString); 
2188                return this; 
2189        }
2190
2191 
2192        /**
2193         * Gets the value(s) for <b>caseSensitive</b> ().
2194         * creating it if it does
2195         * not exist. Will not return <code>null</code>.
2196         *
2197     * <p>
2198     * <b>Definition:</b>
2199     * If code comparison is case sensitive when codes within this system are compared to each other
2200     * </p> 
2201         */
2202        public BooleanDt getCaseSensitiveElement() {  
2203                if (myCaseSensitive == null) {
2204                        myCaseSensitive = new BooleanDt();
2205                }
2206                return myCaseSensitive;
2207        }
2208
2209        
2210        /**
2211         * Gets the value(s) for <b>caseSensitive</b> ().
2212         * creating it if it does
2213         * not exist. This method may return <code>null</code>.
2214         *
2215     * <p>
2216     * <b>Definition:</b>
2217     * If code comparison is case sensitive when codes within this system are compared to each other
2218     * </p> 
2219         */
2220        public Boolean getCaseSensitive() {  
2221                return getCaseSensitiveElement().getValue();
2222        }
2223
2224        /**
2225         * Sets the value(s) for <b>caseSensitive</b> ()
2226         *
2227     * <p>
2228     * <b>Definition:</b>
2229     * If code comparison is case sensitive when codes within this system are compared to each other
2230     * </p> 
2231         */
2232        public CodeSystem setCaseSensitive(BooleanDt theValue) {
2233                myCaseSensitive = theValue;
2234                return this;
2235        }
2236        
2237        
2238
2239        /**
2240         * Sets the value for <b>caseSensitive</b> ()
2241         *
2242     * <p>
2243     * <b>Definition:</b>
2244     * If code comparison is case sensitive when codes within this system are compared to each other
2245     * </p> 
2246         */
2247        public CodeSystem setCaseSensitive( boolean theBoolean) {
2248                myCaseSensitive = new BooleanDt(theBoolean); 
2249                return this; 
2250        }
2251
2252 
2253        /**
2254         * Gets the value(s) for <b>concept</b> ().
2255         * creating it if it does
2256         * not exist. Will not return <code>null</code>.
2257         *
2258     * <p>
2259     * <b>Definition:</b>
2260     * Concepts that are in the code system. The concept definitions are inherently hierarchical, but the definitions must be consulted to determine what the meaning of the hierarchical relationships are
2261     * </p> 
2262         */
2263        public java.util.List<CodeSystemConcept> getConcept() {  
2264                if (myConcept == null) {
2265                        myConcept = new java.util.ArrayList<CodeSystemConcept>();
2266                }
2267                return myConcept;
2268        }
2269
2270        /**
2271         * Sets the value(s) for <b>concept</b> ()
2272         *
2273     * <p>
2274     * <b>Definition:</b>
2275     * Concepts that are in the code system. The concept definitions are inherently hierarchical, but the definitions must be consulted to determine what the meaning of the hierarchical relationships are
2276     * </p> 
2277         */
2278        public CodeSystem setConcept(java.util.List<CodeSystemConcept> theValue) {
2279                myConcept = theValue;
2280                return this;
2281        }
2282        
2283        
2284
2285        /**
2286         * Adds and returns a new value for <b>concept</b> ()
2287         *
2288     * <p>
2289     * <b>Definition:</b>
2290     * Concepts that are in the code system. The concept definitions are inherently hierarchical, but the definitions must be consulted to determine what the meaning of the hierarchical relationships are
2291     * </p> 
2292         */
2293        public CodeSystemConcept addConcept() {
2294                CodeSystemConcept newType = new CodeSystemConcept();
2295                getConcept().add(newType);
2296                return newType; 
2297        }
2298
2299        /**
2300         * Adds a given new value for <b>concept</b> ()
2301         *
2302         * <p>
2303         * <b>Definition:</b>
2304         * Concepts that are in the code system. The concept definitions are inherently hierarchical, but the definitions must be consulted to determine what the meaning of the hierarchical relationships are
2305         * </p>
2306         * @param theValue The concept to add (must not be <code>null</code>)
2307         */
2308        public CodeSystem addConcept(CodeSystemConcept theValue) {
2309                if (theValue == null) {
2310                        throw new NullPointerException("theValue must not be null");
2311                }
2312                getConcept().add(theValue);
2313                return this;
2314        }
2315
2316        /**
2317         * Gets the first repetition for <b>concept</b> (),
2318         * creating it if it does not already exist.
2319         *
2320     * <p>
2321     * <b>Definition:</b>
2322     * Concepts that are in the code system. The concept definitions are inherently hierarchical, but the definitions must be consulted to determine what the meaning of the hierarchical relationships are
2323     * </p> 
2324         */
2325        public CodeSystemConcept getConceptFirstRep() {
2326                if (getConcept().isEmpty()) {
2327                        return addConcept();
2328                }
2329                return getConcept().get(0); 
2330        }
2331  
2332
2333
2334        }
2335
2336        /**
2337         * Block class for child element: <b>ValueSet.codeSystem.concept</b> ()
2338         *
2339     * <p>
2340     * <b>Definition:</b>
2341     * Concepts that are in the code system. The concept definitions are inherently hierarchical, but the definitions must be consulted to determine what the meaning of the hierarchical relationships are
2342     * </p> 
2343         */
2344        @Block()        
2345        public static class CodeSystemConcept 
2346            extends  BaseIdentifiableElement        implements IResourceBlock {
2347        
2348        @Child(name="code", type=CodeDt.class, order=0, min=1, max=1, summary=false, modifier=false)    
2349        @Description(
2350                shortDefinition="",
2351                formalDefinition="A code - a text symbol - that uniquely identifies the concept within the code system"
2352        )
2353        private CodeDt myCode;
2354        
2355        @Child(name="abstract", type=BooleanDt.class, order=1, min=0, max=1, summary=false, modifier=false)     
2356        @Description(
2357                shortDefinition="",
2358                formalDefinition="If this code is not for use as a real concept"
2359        )
2360        private BooleanDt myAbstract;
2361        
2362        @Child(name="display", type=StringDt.class, order=2, min=0, max=1, summary=false, modifier=false)       
2363        @Description(
2364                shortDefinition="",
2365                formalDefinition="A human readable string that is the recommended default way to present this concept to a user"
2366        )
2367        private StringDt myDisplay;
2368        
2369        @Child(name="definition", type=StringDt.class, order=3, min=0, max=1, summary=false, modifier=false)    
2370        @Description(
2371                shortDefinition="",
2372                formalDefinition="The formal definition of the concept. The value set resource does not make formal definitions required, because of the prevalence of legacy systems. However, they are highly recommended, as without them there is no formal meaning associated with the concept"
2373        )
2374        private StringDt myDefinition;
2375        
2376        @Child(name="designation", order=4, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
2377        @Description(
2378                shortDefinition="",
2379                formalDefinition="Additional representations for the concept - other languages, aliases, specialized purposes, used for particular purposes, etc."
2380        )
2381        private java.util.List<CodeSystemConceptDesignation> myDesignation;
2382        
2383        @Child(name="concept", type=CodeSystemConcept.class, order=5, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
2384        @Description(
2385                shortDefinition="",
2386                formalDefinition="Defines children of a concept to produce a hierarchy of concepts. The nature of the relationships is variable (is-a/contains/categorizes) and can only be determined by examining the definitions of the concepts"
2387        )
2388        private java.util.List<CodeSystemConcept> myConcept;
2389        
2390
2391        @Override
2392        public boolean isEmpty() {
2393                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCode,  myAbstract,  myDisplay,  myDefinition,  myDesignation,  myConcept);
2394        }
2395        
2396        @Override
2397        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2398                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCode, myAbstract, myDisplay, myDefinition, myDesignation, myConcept);
2399        }
2400
2401        /**
2402         * Gets the value(s) for <b>code</b> ().
2403         * creating it if it does
2404         * not exist. Will not return <code>null</code>.
2405         *
2406     * <p>
2407     * <b>Definition:</b>
2408     * A code - a text symbol - that uniquely identifies the concept within the code system
2409     * </p> 
2410         */
2411        public CodeDt getCodeElement() {  
2412                if (myCode == null) {
2413                        myCode = new CodeDt();
2414                }
2415                return myCode;
2416        }
2417
2418        
2419        /**
2420         * Gets the value(s) for <b>code</b> ().
2421         * creating it if it does
2422         * not exist. This method may return <code>null</code>.
2423         *
2424     * <p>
2425     * <b>Definition:</b>
2426     * A code - a text symbol - that uniquely identifies the concept within the code system
2427     * </p> 
2428         */
2429        public String getCode() {  
2430                return getCodeElement().getValue();
2431        }
2432
2433        /**
2434         * Sets the value(s) for <b>code</b> ()
2435         *
2436     * <p>
2437     * <b>Definition:</b>
2438     * A code - a text symbol - that uniquely identifies the concept within the code system
2439     * </p> 
2440         */
2441        public CodeSystemConcept setCode(CodeDt theValue) {
2442                myCode = theValue;
2443                return this;
2444        }
2445        
2446        
2447
2448        /**
2449         * Sets the value for <b>code</b> ()
2450         *
2451     * <p>
2452     * <b>Definition:</b>
2453     * A code - a text symbol - that uniquely identifies the concept within the code system
2454     * </p> 
2455         */
2456        public CodeSystemConcept setCode( String theCode) {
2457                myCode = new CodeDt(theCode); 
2458                return this; 
2459        }
2460
2461 
2462        /**
2463         * Gets the value(s) for <b>abstract</b> ().
2464         * creating it if it does
2465         * not exist. Will not return <code>null</code>.
2466         *
2467     * <p>
2468     * <b>Definition:</b>
2469     * If this code is not for use as a real concept
2470     * </p> 
2471         */
2472        public BooleanDt getAbstractElement() {  
2473                if (myAbstract == null) {
2474                        myAbstract = new BooleanDt();
2475                }
2476                return myAbstract;
2477        }
2478
2479        
2480        /**
2481         * Gets the value(s) for <b>abstract</b> ().
2482         * creating it if it does
2483         * not exist. This method may return <code>null</code>.
2484         *
2485     * <p>
2486     * <b>Definition:</b>
2487     * If this code is not for use as a real concept
2488     * </p> 
2489         */
2490        public Boolean getAbstract() {  
2491                return getAbstractElement().getValue();
2492        }
2493
2494        /**
2495         * Sets the value(s) for <b>abstract</b> ()
2496         *
2497     * <p>
2498     * <b>Definition:</b>
2499     * If this code is not for use as a real concept
2500     * </p> 
2501         */
2502        public CodeSystemConcept setAbstract(BooleanDt theValue) {
2503                myAbstract = theValue;
2504                return this;
2505        }
2506        
2507        
2508
2509        /**
2510         * Sets the value for <b>abstract</b> ()
2511         *
2512     * <p>
2513     * <b>Definition:</b>
2514     * If this code is not for use as a real concept
2515     * </p> 
2516         */
2517        public CodeSystemConcept setAbstract( boolean theBoolean) {
2518                myAbstract = new BooleanDt(theBoolean); 
2519                return this; 
2520        }
2521
2522 
2523        /**
2524         * Gets the value(s) for <b>display</b> ().
2525         * creating it if it does
2526         * not exist. Will not return <code>null</code>.
2527         *
2528     * <p>
2529     * <b>Definition:</b>
2530     * A human readable string that is the recommended default way to present this concept to a user
2531     * </p> 
2532         */
2533        public StringDt getDisplayElement() {  
2534                if (myDisplay == null) {
2535                        myDisplay = new StringDt();
2536                }
2537                return myDisplay;
2538        }
2539
2540        
2541        /**
2542         * Gets the value(s) for <b>display</b> ().
2543         * creating it if it does
2544         * not exist. This method may return <code>null</code>.
2545         *
2546     * <p>
2547     * <b>Definition:</b>
2548     * A human readable string that is the recommended default way to present this concept to a user
2549     * </p> 
2550         */
2551        public String getDisplay() {  
2552                return getDisplayElement().getValue();
2553        }
2554
2555        /**
2556         * Sets the value(s) for <b>display</b> ()
2557         *
2558     * <p>
2559     * <b>Definition:</b>
2560     * A human readable string that is the recommended default way to present this concept to a user
2561     * </p> 
2562         */
2563        public CodeSystemConcept setDisplay(StringDt theValue) {
2564                myDisplay = theValue;
2565                return this;
2566        }
2567        
2568        
2569
2570        /**
2571         * Sets the value for <b>display</b> ()
2572         *
2573     * <p>
2574     * <b>Definition:</b>
2575     * A human readable string that is the recommended default way to present this concept to a user
2576     * </p> 
2577         */
2578        public CodeSystemConcept setDisplay( String theString) {
2579                myDisplay = new StringDt(theString); 
2580                return this; 
2581        }
2582
2583 
2584        /**
2585         * Gets the value(s) for <b>definition</b> ().
2586         * creating it if it does
2587         * not exist. Will not return <code>null</code>.
2588         *
2589     * <p>
2590     * <b>Definition:</b>
2591     * The formal definition of the concept. The value set resource does not make formal definitions required, because of the prevalence of legacy systems. However, they are highly recommended, as without them there is no formal meaning associated with the concept
2592     * </p> 
2593         */
2594        public StringDt getDefinitionElement() {  
2595                if (myDefinition == null) {
2596                        myDefinition = new StringDt();
2597                }
2598                return myDefinition;
2599        }
2600
2601        
2602        /**
2603         * Gets the value(s) for <b>definition</b> ().
2604         * creating it if it does
2605         * not exist. This method may return <code>null</code>.
2606         *
2607     * <p>
2608     * <b>Definition:</b>
2609     * The formal definition of the concept. The value set resource does not make formal definitions required, because of the prevalence of legacy systems. However, they are highly recommended, as without them there is no formal meaning associated with the concept
2610     * </p> 
2611         */
2612        public String getDefinition() {  
2613                return getDefinitionElement().getValue();
2614        }
2615
2616        /**
2617         * Sets the value(s) for <b>definition</b> ()
2618         *
2619     * <p>
2620     * <b>Definition:</b>
2621     * The formal definition of the concept. The value set resource does not make formal definitions required, because of the prevalence of legacy systems. However, they are highly recommended, as without them there is no formal meaning associated with the concept
2622     * </p> 
2623         */
2624        public CodeSystemConcept setDefinition(StringDt theValue) {
2625                myDefinition = theValue;
2626                return this;
2627        }
2628        
2629        
2630
2631        /**
2632         * Sets the value for <b>definition</b> ()
2633         *
2634     * <p>
2635     * <b>Definition:</b>
2636     * The formal definition of the concept. The value set resource does not make formal definitions required, because of the prevalence of legacy systems. However, they are highly recommended, as without them there is no formal meaning associated with the concept
2637     * </p> 
2638         */
2639        public CodeSystemConcept setDefinition( String theString) {
2640                myDefinition = new StringDt(theString); 
2641                return this; 
2642        }
2643
2644 
2645        /**
2646         * Gets the value(s) for <b>designation</b> ().
2647         * creating it if it does
2648         * not exist. Will not return <code>null</code>.
2649         *
2650     * <p>
2651     * <b>Definition:</b>
2652     * Additional representations for the concept - other languages, aliases, specialized purposes, used for particular purposes, etc.
2653     * </p> 
2654         */
2655        public java.util.List<CodeSystemConceptDesignation> getDesignation() {  
2656                if (myDesignation == null) {
2657                        myDesignation = new java.util.ArrayList<CodeSystemConceptDesignation>();
2658                }
2659                return myDesignation;
2660        }
2661
2662        /**
2663         * Sets the value(s) for <b>designation</b> ()
2664         *
2665     * <p>
2666     * <b>Definition:</b>
2667     * Additional representations for the concept - other languages, aliases, specialized purposes, used for particular purposes, etc.
2668     * </p> 
2669         */
2670        public CodeSystemConcept setDesignation(java.util.List<CodeSystemConceptDesignation> theValue) {
2671                myDesignation = theValue;
2672                return this;
2673        }
2674        
2675        
2676
2677        /**
2678         * Adds and returns a new value for <b>designation</b> ()
2679         *
2680     * <p>
2681     * <b>Definition:</b>
2682     * Additional representations for the concept - other languages, aliases, specialized purposes, used for particular purposes, etc.
2683     * </p> 
2684         */
2685        public CodeSystemConceptDesignation addDesignation() {
2686                CodeSystemConceptDesignation newType = new CodeSystemConceptDesignation();
2687                getDesignation().add(newType);
2688                return newType; 
2689        }
2690
2691        /**
2692         * Adds a given new value for <b>designation</b> ()
2693         *
2694         * <p>
2695         * <b>Definition:</b>
2696         * Additional representations for the concept - other languages, aliases, specialized purposes, used for particular purposes, etc.
2697         * </p>
2698         * @param theValue The designation to add (must not be <code>null</code>)
2699         */
2700        public CodeSystemConcept addDesignation(CodeSystemConceptDesignation theValue) {
2701                if (theValue == null) {
2702                        throw new NullPointerException("theValue must not be null");
2703                }
2704                getDesignation().add(theValue);
2705                return this;
2706        }
2707
2708        /**
2709         * Gets the first repetition for <b>designation</b> (),
2710         * creating it if it does not already exist.
2711         *
2712     * <p>
2713     * <b>Definition:</b>
2714     * Additional representations for the concept - other languages, aliases, specialized purposes, used for particular purposes, etc.
2715     * </p> 
2716         */
2717        public CodeSystemConceptDesignation getDesignationFirstRep() {
2718                if (getDesignation().isEmpty()) {
2719                        return addDesignation();
2720                }
2721                return getDesignation().get(0); 
2722        }
2723  
2724        /**
2725         * Gets the value(s) for <b>concept</b> ().
2726         * creating it if it does
2727         * not exist. Will not return <code>null</code>.
2728         *
2729     * <p>
2730     * <b>Definition:</b>
2731     * Defines children of a concept to produce a hierarchy of concepts. The nature of the relationships is variable (is-a/contains/categorizes) and can only be determined by examining the definitions of the concepts
2732     * </p> 
2733         */
2734        public java.util.List<CodeSystemConcept> getConcept() {  
2735                if (myConcept == null) {
2736                        myConcept = new java.util.ArrayList<CodeSystemConcept>();
2737                }
2738                return myConcept;
2739        }
2740
2741        /**
2742         * Sets the value(s) for <b>concept</b> ()
2743         *
2744     * <p>
2745     * <b>Definition:</b>
2746     * Defines children of a concept to produce a hierarchy of concepts. The nature of the relationships is variable (is-a/contains/categorizes) and can only be determined by examining the definitions of the concepts
2747     * </p> 
2748         */
2749        public CodeSystemConcept setConcept(java.util.List<CodeSystemConcept> theValue) {
2750                myConcept = theValue;
2751                return this;
2752        }
2753        
2754        
2755
2756        /**
2757         * Adds and returns a new value for <b>concept</b> ()
2758         *
2759     * <p>
2760     * <b>Definition:</b>
2761     * Defines children of a concept to produce a hierarchy of concepts. The nature of the relationships is variable (is-a/contains/categorizes) and can only be determined by examining the definitions of the concepts
2762     * </p> 
2763         */
2764        public CodeSystemConcept addConcept() {
2765                CodeSystemConcept newType = new CodeSystemConcept();
2766                getConcept().add(newType);
2767                return newType; 
2768        }
2769
2770        /**
2771         * Adds a given new value for <b>concept</b> ()
2772         *
2773         * <p>
2774         * <b>Definition:</b>
2775         * Defines children of a concept to produce a hierarchy of concepts. The nature of the relationships is variable (is-a/contains/categorizes) and can only be determined by examining the definitions of the concepts
2776         * </p>
2777         * @param theValue The concept to add (must not be <code>null</code>)
2778         */
2779        public CodeSystemConcept addConcept(CodeSystemConcept theValue) {
2780                if (theValue == null) {
2781                        throw new NullPointerException("theValue must not be null");
2782                }
2783                getConcept().add(theValue);
2784                return this;
2785        }
2786
2787        /**
2788         * Gets the first repetition for <b>concept</b> (),
2789         * creating it if it does not already exist.
2790         *
2791     * <p>
2792     * <b>Definition:</b>
2793     * Defines children of a concept to produce a hierarchy of concepts. The nature of the relationships is variable (is-a/contains/categorizes) and can only be determined by examining the definitions of the concepts
2794     * </p> 
2795         */
2796        public CodeSystemConcept getConceptFirstRep() {
2797                if (getConcept().isEmpty()) {
2798                        return addConcept();
2799                }
2800                return getConcept().get(0); 
2801        }
2802  
2803
2804
2805        }
2806
2807        /**
2808         * Block class for child element: <b>ValueSet.codeSystem.concept.designation</b> ()
2809         *
2810     * <p>
2811     * <b>Definition:</b>
2812     * Additional representations for the concept - other languages, aliases, specialized purposes, used for particular purposes, etc.
2813     * </p> 
2814         */
2815        @Block()        
2816        public static class CodeSystemConceptDesignation 
2817            extends  BaseIdentifiableElement        implements IResourceBlock {
2818        
2819        @Child(name="language", type=CodeDt.class, order=0, min=0, max=1, summary=false, modifier=false)        
2820        @Description(
2821                shortDefinition="",
2822                formalDefinition="The language this designation is defined for"
2823        )
2824        private CodeDt myLanguage;
2825        
2826        @Child(name="use", type=CodingDt.class, order=1, min=0, max=1, summary=false, modifier=false)   
2827        @Description(
2828                shortDefinition="",
2829                formalDefinition="A code that details how this designation would be used"
2830        )
2831        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/valueset-designation-use")
2832        private CodingDt myUse;
2833        
2834        @Child(name="value", type=StringDt.class, order=2, min=1, max=1, summary=false, modifier=false) 
2835        @Description(
2836                shortDefinition="",
2837                formalDefinition="The text value for this designation"
2838        )
2839        private StringDt myValue;
2840        
2841
2842        @Override
2843        public boolean isEmpty() {
2844                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myLanguage,  myUse,  myValue);
2845        }
2846        
2847        @Override
2848        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2849                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myLanguage, myUse, myValue);
2850        }
2851
2852        /**
2853         * Gets the value(s) for <b>language</b> ().
2854         * creating it if it does
2855         * not exist. Will not return <code>null</code>.
2856         *
2857     * <p>
2858     * <b>Definition:</b>
2859     * The language this designation is defined for
2860     * </p> 
2861         */
2862        public CodeDt getLanguageElement() {  
2863                if (myLanguage == null) {
2864                        myLanguage = new CodeDt();
2865                }
2866                return myLanguage;
2867        }
2868
2869        
2870        /**
2871         * Gets the value(s) for <b>language</b> ().
2872         * creating it if it does
2873         * not exist. This method may return <code>null</code>.
2874         *
2875     * <p>
2876     * <b>Definition:</b>
2877     * The language this designation is defined for
2878     * </p> 
2879         */
2880        public String getLanguage() {  
2881                return getLanguageElement().getValue();
2882        }
2883
2884        /**
2885         * Sets the value(s) for <b>language</b> ()
2886         *
2887     * <p>
2888     * <b>Definition:</b>
2889     * The language this designation is defined for
2890     * </p> 
2891         */
2892        public CodeSystemConceptDesignation setLanguage(CodeDt theValue) {
2893                myLanguage = theValue;
2894                return this;
2895        }
2896        
2897        
2898
2899        /**
2900         * Sets the value for <b>language</b> ()
2901         *
2902     * <p>
2903     * <b>Definition:</b>
2904     * The language this designation is defined for
2905     * </p> 
2906         */
2907        public CodeSystemConceptDesignation setLanguage( String theCode) {
2908                myLanguage = new CodeDt(theCode); 
2909                return this; 
2910        }
2911
2912 
2913        /**
2914         * Gets the value(s) for <b>use</b> ().
2915         * creating it if it does
2916         * not exist. Will not return <code>null</code>.
2917         *
2918     * <p>
2919     * <b>Definition:</b>
2920     * A code that details how this designation would be used
2921     * </p> 
2922         */
2923        public CodingDt getUse() {  
2924                if (myUse == null) {
2925                        myUse = new CodingDt();
2926                }
2927                return myUse;
2928        }
2929
2930        /**
2931         * Sets the value(s) for <b>use</b> ()
2932         *
2933     * <p>
2934     * <b>Definition:</b>
2935     * A code that details how this designation would be used
2936     * </p> 
2937         */
2938        public CodeSystemConceptDesignation setUse(CodingDt theValue) {
2939                myUse = theValue;
2940                return this;
2941        }
2942        
2943        
2944
2945  
2946        /**
2947         * Gets the value(s) for <b>value</b> ().
2948         * creating it if it does
2949         * not exist. Will not return <code>null</code>.
2950         *
2951     * <p>
2952     * <b>Definition:</b>
2953     * The text value for this designation
2954     * </p> 
2955         */
2956        public StringDt getValueElement() {  
2957                if (myValue == null) {
2958                        myValue = new StringDt();
2959                }
2960                return myValue;
2961        }
2962
2963        
2964        /**
2965         * Gets the value(s) for <b>value</b> ().
2966         * creating it if it does
2967         * not exist. This method may return <code>null</code>.
2968         *
2969     * <p>
2970     * <b>Definition:</b>
2971     * The text value for this designation
2972     * </p> 
2973         */
2974        public String getValue() {  
2975                return getValueElement().getValue();
2976        }
2977
2978        /**
2979         * Sets the value(s) for <b>value</b> ()
2980         *
2981     * <p>
2982     * <b>Definition:</b>
2983     * The text value for this designation
2984     * </p> 
2985         */
2986        public CodeSystemConceptDesignation setValue(StringDt theValue) {
2987                myValue = theValue;
2988                return this;
2989        }
2990        
2991        
2992
2993        /**
2994         * Sets the value for <b>value</b> ()
2995         *
2996     * <p>
2997     * <b>Definition:</b>
2998     * The text value for this designation
2999     * </p> 
3000         */
3001        public CodeSystemConceptDesignation setValue( String theString) {
3002                myValue = new StringDt(theString); 
3003                return this; 
3004        }
3005
3006 
3007
3008
3009        }
3010
3011
3012
3013
3014        /**
3015         * Block class for child element: <b>ValueSet.compose</b> ()
3016         *
3017     * <p>
3018     * <b>Definition:</b>
3019     * A set of criteria that provide the content logical definition of the value set by including or excluding codes from outside this value set
3020     * </p> 
3021         */
3022        @Block()        
3023        public static class Compose 
3024            extends  BaseIdentifiableElement        implements IResourceBlock {
3025        
3026        @Child(name="import", type=UriDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)  
3027        @Description(
3028                shortDefinition="",
3029                formalDefinition="Includes the contents of the referenced value set as a part of the contents of this value set. This is an absolute URI that is a reference to ValueSet.uri"
3030        )
3031        private java.util.List<UriDt> myImport;
3032        
3033        @Child(name="include", order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
3034        @Description(
3035                shortDefinition="",
3036                formalDefinition="Include one or more codes from a code system"
3037        )
3038        private java.util.List<ComposeInclude> myInclude;
3039        
3040        @Child(name="exclude", type=ComposeInclude.class, order=2, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
3041        @Description(
3042                shortDefinition="",
3043                formalDefinition="Exclude one or more codes from the value set"
3044        )
3045        private java.util.List<ComposeInclude> myExclude;
3046        
3047
3048        @Override
3049        public boolean isEmpty() {
3050                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myImport,  myInclude,  myExclude);
3051        }
3052        
3053        @Override
3054        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
3055                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myImport, myInclude, myExclude);
3056        }
3057
3058        /**
3059         * Gets the value(s) for <b>import</b> ().
3060         * creating it if it does
3061         * not exist. Will not return <code>null</code>.
3062         *
3063     * <p>
3064     * <b>Definition:</b>
3065     * Includes the contents of the referenced value set as a part of the contents of this value set. This is an absolute URI that is a reference to ValueSet.uri
3066     * </p> 
3067         */
3068        public java.util.List<UriDt> getImport() {  
3069                if (myImport == null) {
3070                        myImport = new java.util.ArrayList<UriDt>();
3071                }
3072                return myImport;
3073        }
3074
3075        /**
3076         * Sets the value(s) for <b>import</b> ()
3077         *
3078     * <p>
3079     * <b>Definition:</b>
3080     * Includes the contents of the referenced value set as a part of the contents of this value set. This is an absolute URI that is a reference to ValueSet.uri
3081     * </p> 
3082         */
3083        public Compose setImport(java.util.List<UriDt> theValue) {
3084                myImport = theValue;
3085                return this;
3086        }
3087        
3088        
3089
3090        /**
3091         * Adds and returns a new value for <b>import</b> ()
3092         *
3093     * <p>
3094     * <b>Definition:</b>
3095     * Includes the contents of the referenced value set as a part of the contents of this value set. This is an absolute URI that is a reference to ValueSet.uri
3096     * </p> 
3097         */
3098        public UriDt addImport() {
3099                UriDt newType = new UriDt();
3100                getImport().add(newType);
3101                return newType; 
3102        }
3103
3104        /**
3105         * Adds a given new value for <b>import</b> ()
3106         *
3107         * <p>
3108         * <b>Definition:</b>
3109         * Includes the contents of the referenced value set as a part of the contents of this value set. This is an absolute URI that is a reference to ValueSet.uri
3110         * </p>
3111         * @param theValue The import to add (must not be <code>null</code>)
3112         */
3113        public Compose addImport(UriDt theValue) {
3114                if (theValue == null) {
3115                        throw new NullPointerException("theValue must not be null");
3116                }
3117                getImport().add(theValue);
3118                return this;
3119        }
3120
3121        /**
3122         * Gets the first repetition for <b>import</b> (),
3123         * creating it if it does not already exist.
3124         *
3125     * <p>
3126     * <b>Definition:</b>
3127     * Includes the contents of the referenced value set as a part of the contents of this value set. This is an absolute URI that is a reference to ValueSet.uri
3128     * </p> 
3129         */
3130        public UriDt getImportFirstRep() {
3131                if (getImport().isEmpty()) {
3132                        return addImport();
3133                }
3134                return getImport().get(0); 
3135        }
3136        /**
3137         * Adds a new value for <b>import</b> ()
3138         *
3139     * <p>
3140     * <b>Definition:</b>
3141     * Includes the contents of the referenced value set as a part of the contents of this value set. This is an absolute URI that is a reference to ValueSet.uri
3142     * </p> 
3143     *
3144     * @return Returns a reference to this object, to allow for simple chaining.
3145         */
3146        public Compose addImport( String theUri) {
3147                if (myImport == null) {
3148                        myImport = new java.util.ArrayList<UriDt>();
3149                }
3150                myImport.add(new UriDt(theUri));
3151                return this; 
3152        }
3153
3154 
3155        /**
3156         * Gets the value(s) for <b>include</b> ().
3157         * creating it if it does
3158         * not exist. Will not return <code>null</code>.
3159         *
3160     * <p>
3161     * <b>Definition:</b>
3162     * Include one or more codes from a code system
3163     * </p> 
3164         */
3165        public java.util.List<ComposeInclude> getInclude() {  
3166                if (myInclude == null) {
3167                        myInclude = new java.util.ArrayList<ComposeInclude>();
3168                }
3169                return myInclude;
3170        }
3171
3172        /**
3173         * Sets the value(s) for <b>include</b> ()
3174         *
3175     * <p>
3176     * <b>Definition:</b>
3177     * Include one or more codes from a code system
3178     * </p> 
3179         */
3180        public Compose setInclude(java.util.List<ComposeInclude> theValue) {
3181                myInclude = theValue;
3182                return this;
3183        }
3184        
3185        
3186
3187        /**
3188         * Adds and returns a new value for <b>include</b> ()
3189         *
3190     * <p>
3191     * <b>Definition:</b>
3192     * Include one or more codes from a code system
3193     * </p> 
3194         */
3195        public ComposeInclude addInclude() {
3196                ComposeInclude newType = new ComposeInclude();
3197                getInclude().add(newType);
3198                return newType; 
3199        }
3200
3201        /**
3202         * Adds a given new value for <b>include</b> ()
3203         *
3204         * <p>
3205         * <b>Definition:</b>
3206         * Include one or more codes from a code system
3207         * </p>
3208         * @param theValue The include to add (must not be <code>null</code>)
3209         */
3210        public Compose addInclude(ComposeInclude theValue) {
3211                if (theValue == null) {
3212                        throw new NullPointerException("theValue must not be null");
3213                }
3214                getInclude().add(theValue);
3215                return this;
3216        }
3217
3218        /**
3219         * Gets the first repetition for <b>include</b> (),
3220         * creating it if it does not already exist.
3221         *
3222     * <p>
3223     * <b>Definition:</b>
3224     * Include one or more codes from a code system
3225     * </p> 
3226         */
3227        public ComposeInclude getIncludeFirstRep() {
3228                if (getInclude().isEmpty()) {
3229                        return addInclude();
3230                }
3231                return getInclude().get(0); 
3232        }
3233  
3234        /**
3235         * Gets the value(s) for <b>exclude</b> ().
3236         * creating it if it does
3237         * not exist. Will not return <code>null</code>.
3238         *
3239     * <p>
3240     * <b>Definition:</b>
3241     * Exclude one or more codes from the value set
3242     * </p> 
3243         */
3244        public java.util.List<ComposeInclude> getExclude() {  
3245                if (myExclude == null) {
3246                        myExclude = new java.util.ArrayList<ComposeInclude>();
3247                }
3248                return myExclude;
3249        }
3250
3251        /**
3252         * Sets the value(s) for <b>exclude</b> ()
3253         *
3254     * <p>
3255     * <b>Definition:</b>
3256     * Exclude one or more codes from the value set
3257     * </p> 
3258         */
3259        public Compose setExclude(java.util.List<ComposeInclude> theValue) {
3260                myExclude = theValue;
3261                return this;
3262        }
3263        
3264        
3265
3266        /**
3267         * Adds and returns a new value for <b>exclude</b> ()
3268         *
3269     * <p>
3270     * <b>Definition:</b>
3271     * Exclude one or more codes from the value set
3272     * </p> 
3273         */
3274        public ComposeInclude addExclude() {
3275                ComposeInclude newType = new ComposeInclude();
3276                getExclude().add(newType);
3277                return newType; 
3278        }
3279
3280        /**
3281         * Adds a given new value for <b>exclude</b> ()
3282         *
3283         * <p>
3284         * <b>Definition:</b>
3285         * Exclude one or more codes from the value set
3286         * </p>
3287         * @param theValue The exclude to add (must not be <code>null</code>)
3288         */
3289        public Compose addExclude(ComposeInclude theValue) {
3290                if (theValue == null) {
3291                        throw new NullPointerException("theValue must not be null");
3292                }
3293                getExclude().add(theValue);
3294                return this;
3295        }
3296
3297        /**
3298         * Gets the first repetition for <b>exclude</b> (),
3299         * creating it if it does not already exist.
3300         *
3301     * <p>
3302     * <b>Definition:</b>
3303     * Exclude one or more codes from the value set
3304     * </p> 
3305         */
3306        public ComposeInclude getExcludeFirstRep() {
3307                if (getExclude().isEmpty()) {
3308                        return addExclude();
3309                }
3310                return getExclude().get(0); 
3311        }
3312  
3313
3314
3315        }
3316
3317        /**
3318         * Block class for child element: <b>ValueSet.compose.include</b> ()
3319         *
3320     * <p>
3321     * <b>Definition:</b>
3322     * Include one or more codes from a code system
3323     * </p> 
3324         */
3325        @Block()        
3326        public static class ComposeInclude 
3327            extends  BaseIdentifiableElement        implements IResourceBlock {
3328        
3329        @Child(name="system", type=UriDt.class, order=0, min=1, max=1, summary=true, modifier=false)    
3330        @Description(
3331                shortDefinition="",
3332                formalDefinition="An absolute URI which is the code system from which the selected codes come from"
3333        )
3334        private UriDt mySystem;
3335        
3336        @Child(name="version", type=StringDt.class, order=1, min=0, max=1, summary=true, modifier=false)        
3337        @Description(
3338                shortDefinition="",
3339                formalDefinition="The version of the code system that the codes are selected from"
3340        )
3341        private StringDt myVersion;
3342        
3343        @Child(name="concept", order=2, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
3344        @Description(
3345                shortDefinition="",
3346                formalDefinition="Specifies a concept to be included or excluded."
3347        )
3348        private java.util.List<ComposeIncludeConcept> myConcept;
3349        
3350        @Child(name="filter", order=3, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
3351        @Description(
3352                shortDefinition="",
3353                formalDefinition="Select concepts by specify a matching criteria based on the properties (including relationships) defined by the system. If multiple filters are specified, they SHALL all be true."
3354        )
3355        private java.util.List<ComposeIncludeFilter> myFilter;
3356        
3357
3358        @Override
3359        public boolean isEmpty() {
3360                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  mySystem,  myVersion,  myConcept,  myFilter);
3361        }
3362        
3363        @Override
3364        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
3365                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, mySystem, myVersion, myConcept, myFilter);
3366        }
3367
3368        /**
3369         * Gets the value(s) for <b>system</b> ().
3370         * creating it if it does
3371         * not exist. Will not return <code>null</code>.
3372         *
3373     * <p>
3374     * <b>Definition:</b>
3375     * An absolute URI which is the code system from which the selected codes come from
3376     * </p> 
3377         */
3378        public UriDt getSystemElement() {  
3379                if (mySystem == null) {
3380                        mySystem = new UriDt();
3381                }
3382                return mySystem;
3383        }
3384
3385        
3386        /**
3387         * Gets the value(s) for <b>system</b> ().
3388         * creating it if it does
3389         * not exist. This method may return <code>null</code>.
3390         *
3391     * <p>
3392     * <b>Definition:</b>
3393     * An absolute URI which is the code system from which the selected codes come from
3394     * </p> 
3395         */
3396        public String getSystem() {  
3397                return getSystemElement().getValue();
3398        }
3399
3400        /**
3401         * Sets the value(s) for <b>system</b> ()
3402         *
3403     * <p>
3404     * <b>Definition:</b>
3405     * An absolute URI which is the code system from which the selected codes come from
3406     * </p> 
3407         */
3408        public ComposeInclude setSystem(UriDt theValue) {
3409                mySystem = theValue;
3410                return this;
3411        }
3412        
3413        
3414
3415        /**
3416         * Sets the value for <b>system</b> ()
3417         *
3418     * <p>
3419     * <b>Definition:</b>
3420     * An absolute URI which is the code system from which the selected codes come from
3421     * </p> 
3422         */
3423        public ComposeInclude setSystem( String theUri) {
3424                mySystem = new UriDt(theUri); 
3425                return this; 
3426        }
3427
3428 
3429        /**
3430         * Gets the value(s) for <b>version</b> ().
3431         * creating it if it does
3432         * not exist. Will not return <code>null</code>.
3433         *
3434     * <p>
3435     * <b>Definition:</b>
3436     * The version of the code system that the codes are selected from
3437     * </p> 
3438         */
3439        public StringDt getVersionElement() {  
3440                if (myVersion == null) {
3441                        myVersion = new StringDt();
3442                }
3443                return myVersion;
3444        }
3445
3446        
3447        /**
3448         * Gets the value(s) for <b>version</b> ().
3449         * creating it if it does
3450         * not exist. This method may return <code>null</code>.
3451         *
3452     * <p>
3453     * <b>Definition:</b>
3454     * The version of the code system that the codes are selected from
3455     * </p> 
3456         */
3457        public String getVersion() {  
3458                return getVersionElement().getValue();
3459        }
3460
3461        /**
3462         * Sets the value(s) for <b>version</b> ()
3463         *
3464     * <p>
3465     * <b>Definition:</b>
3466     * The version of the code system that the codes are selected from
3467     * </p> 
3468         */
3469        public ComposeInclude setVersion(StringDt theValue) {
3470                myVersion = theValue;
3471                return this;
3472        }
3473        
3474        
3475
3476        /**
3477         * Sets the value for <b>version</b> ()
3478         *
3479     * <p>
3480     * <b>Definition:</b>
3481     * The version of the code system that the codes are selected from
3482     * </p> 
3483         */
3484        public ComposeInclude setVersion( String theString) {
3485                myVersion = new StringDt(theString); 
3486                return this; 
3487        }
3488
3489 
3490        /**
3491         * Gets the value(s) for <b>concept</b> ().
3492         * creating it if it does
3493         * not exist. Will not return <code>null</code>.
3494         *
3495     * <p>
3496     * <b>Definition:</b>
3497     * Specifies a concept to be included or excluded.
3498     * </p> 
3499         */
3500        public java.util.List<ComposeIncludeConcept> getConcept() {  
3501                if (myConcept == null) {
3502                        myConcept = new java.util.ArrayList<ComposeIncludeConcept>();
3503                }
3504                return myConcept;
3505        }
3506
3507        /**
3508         * Sets the value(s) for <b>concept</b> ()
3509         *
3510     * <p>
3511     * <b>Definition:</b>
3512     * Specifies a concept to be included or excluded.
3513     * </p> 
3514         */
3515        public ComposeInclude setConcept(java.util.List<ComposeIncludeConcept> theValue) {
3516                myConcept = theValue;
3517                return this;
3518        }
3519        
3520        
3521
3522        /**
3523         * Adds and returns a new value for <b>concept</b> ()
3524         *
3525     * <p>
3526     * <b>Definition:</b>
3527     * Specifies a concept to be included or excluded.
3528     * </p> 
3529         */
3530        public ComposeIncludeConcept addConcept() {
3531                ComposeIncludeConcept newType = new ComposeIncludeConcept();
3532                getConcept().add(newType);
3533                return newType; 
3534        }
3535
3536        /**
3537         * Adds a given new value for <b>concept</b> ()
3538         *
3539         * <p>
3540         * <b>Definition:</b>
3541         * Specifies a concept to be included or excluded.
3542         * </p>
3543         * @param theValue The concept to add (must not be <code>null</code>)
3544         */
3545        public ComposeInclude addConcept(ComposeIncludeConcept theValue) {
3546                if (theValue == null) {
3547                        throw new NullPointerException("theValue must not be null");
3548                }
3549                getConcept().add(theValue);
3550                return this;
3551        }
3552
3553        /**
3554         * Gets the first repetition for <b>concept</b> (),
3555         * creating it if it does not already exist.
3556         *
3557     * <p>
3558     * <b>Definition:</b>
3559     * Specifies a concept to be included or excluded.
3560     * </p> 
3561         */
3562        public ComposeIncludeConcept getConceptFirstRep() {
3563                if (getConcept().isEmpty()) {
3564                        return addConcept();
3565                }
3566                return getConcept().get(0); 
3567        }
3568  
3569        /**
3570         * Gets the value(s) for <b>filter</b> ().
3571         * creating it if it does
3572         * not exist. Will not return <code>null</code>.
3573         *
3574     * <p>
3575     * <b>Definition:</b>
3576     * Select concepts by specify a matching criteria based on the properties (including relationships) defined by the system. If multiple filters are specified, they SHALL all be true.
3577     * </p> 
3578         */
3579        public java.util.List<ComposeIncludeFilter> getFilter() {  
3580                if (myFilter == null) {
3581                        myFilter = new java.util.ArrayList<ComposeIncludeFilter>();
3582                }
3583                return myFilter;
3584        }
3585
3586        /**
3587         * Sets the value(s) for <b>filter</b> ()
3588         *
3589     * <p>
3590     * <b>Definition:</b>
3591     * Select concepts by specify a matching criteria based on the properties (including relationships) defined by the system. If multiple filters are specified, they SHALL all be true.
3592     * </p> 
3593         */
3594        public ComposeInclude setFilter(java.util.List<ComposeIncludeFilter> theValue) {
3595                myFilter = theValue;
3596                return this;
3597        }
3598        
3599        
3600
3601        /**
3602         * Adds and returns a new value for <b>filter</b> ()
3603         *
3604     * <p>
3605     * <b>Definition:</b>
3606     * Select concepts by specify a matching criteria based on the properties (including relationships) defined by the system. If multiple filters are specified, they SHALL all be true.
3607     * </p> 
3608         */
3609        public ComposeIncludeFilter addFilter() {
3610                ComposeIncludeFilter newType = new ComposeIncludeFilter();
3611                getFilter().add(newType);
3612                return newType; 
3613        }
3614
3615        /**
3616         * Adds a given new value for <b>filter</b> ()
3617         *
3618         * <p>
3619         * <b>Definition:</b>
3620         * Select concepts by specify a matching criteria based on the properties (including relationships) defined by the system. If multiple filters are specified, they SHALL all be true.
3621         * </p>
3622         * @param theValue The filter to add (must not be <code>null</code>)
3623         */
3624        public ComposeInclude addFilter(ComposeIncludeFilter theValue) {
3625                if (theValue == null) {
3626                        throw new NullPointerException("theValue must not be null");
3627                }
3628                getFilter().add(theValue);
3629                return this;
3630        }
3631
3632        /**
3633         * Gets the first repetition for <b>filter</b> (),
3634         * creating it if it does not already exist.
3635         *
3636     * <p>
3637     * <b>Definition:</b>
3638     * Select concepts by specify a matching criteria based on the properties (including relationships) defined by the system. If multiple filters are specified, they SHALL all be true.
3639     * </p> 
3640         */
3641        public ComposeIncludeFilter getFilterFirstRep() {
3642                if (getFilter().isEmpty()) {
3643                        return addFilter();
3644                }
3645                return getFilter().get(0); 
3646        }
3647  
3648
3649
3650        }
3651
3652        /**
3653         * Block class for child element: <b>ValueSet.compose.include.concept</b> ()
3654         *
3655     * <p>
3656     * <b>Definition:</b>
3657     * Specifies a concept to be included or excluded.
3658     * </p> 
3659         */
3660        @Block()        
3661        public static class ComposeIncludeConcept 
3662            extends  BaseIdentifiableElement        implements IResourceBlock {
3663        
3664        @Child(name="code", type=CodeDt.class, order=0, min=1, max=1, summary=false, modifier=false)    
3665        @Description(
3666                shortDefinition="",
3667                formalDefinition="Specifies a code for the concept to be included or excluded"
3668        )
3669        private CodeDt myCode;
3670        
3671        @Child(name="display", type=StringDt.class, order=1, min=0, max=1, summary=false, modifier=false)       
3672        @Description(
3673                shortDefinition="",
3674                formalDefinition="The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the system"
3675        )
3676        private StringDt myDisplay;
3677        
3678        @Child(name="designation", type=CodeSystemConceptDesignation.class, order=2, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
3679        @Description(
3680                shortDefinition="",
3681                formalDefinition="Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc."
3682        )
3683        private java.util.List<CodeSystemConceptDesignation> myDesignation;
3684        
3685
3686        @Override
3687        public boolean isEmpty() {
3688                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCode,  myDisplay,  myDesignation);
3689        }
3690        
3691        @Override
3692        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
3693                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCode, myDisplay, myDesignation);
3694        }
3695
3696        /**
3697         * Gets the value(s) for <b>code</b> ().
3698         * creating it if it does
3699         * not exist. Will not return <code>null</code>.
3700         *
3701     * <p>
3702     * <b>Definition:</b>
3703     * Specifies a code for the concept to be included or excluded
3704     * </p> 
3705         */
3706        public CodeDt getCodeElement() {  
3707                if (myCode == null) {
3708                        myCode = new CodeDt();
3709                }
3710                return myCode;
3711        }
3712
3713        
3714        /**
3715         * Gets the value(s) for <b>code</b> ().
3716         * creating it if it does
3717         * not exist. This method may return <code>null</code>.
3718         *
3719     * <p>
3720     * <b>Definition:</b>
3721     * Specifies a code for the concept to be included or excluded
3722     * </p> 
3723         */
3724        public String getCode() {  
3725                return getCodeElement().getValue();
3726        }
3727
3728        /**
3729         * Sets the value(s) for <b>code</b> ()
3730         *
3731     * <p>
3732     * <b>Definition:</b>
3733     * Specifies a code for the concept to be included or excluded
3734     * </p> 
3735         */
3736        public ComposeIncludeConcept setCode(CodeDt theValue) {
3737                myCode = theValue;
3738                return this;
3739        }
3740        
3741        
3742
3743        /**
3744         * Sets the value for <b>code</b> ()
3745         *
3746     * <p>
3747     * <b>Definition:</b>
3748     * Specifies a code for the concept to be included or excluded
3749     * </p> 
3750         */
3751        public ComposeIncludeConcept setCode( String theCode) {
3752                myCode = new CodeDt(theCode); 
3753                return this; 
3754        }
3755
3756 
3757        /**
3758         * Gets the value(s) for <b>display</b> ().
3759         * creating it if it does
3760         * not exist. Will not return <code>null</code>.
3761         *
3762     * <p>
3763     * <b>Definition:</b>
3764     * The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the system
3765     * </p> 
3766         */
3767        public StringDt getDisplayElement() {  
3768                if (myDisplay == null) {
3769                        myDisplay = new StringDt();
3770                }
3771                return myDisplay;
3772        }
3773
3774        
3775        /**
3776         * Gets the value(s) for <b>display</b> ().
3777         * creating it if it does
3778         * not exist. This method may return <code>null</code>.
3779         *
3780     * <p>
3781     * <b>Definition:</b>
3782     * The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the system
3783     * </p> 
3784         */
3785        public String getDisplay() {  
3786                return getDisplayElement().getValue();
3787        }
3788
3789        /**
3790         * Sets the value(s) for <b>display</b> ()
3791         *
3792     * <p>
3793     * <b>Definition:</b>
3794     * The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the system
3795     * </p> 
3796         */
3797        public ComposeIncludeConcept setDisplay(StringDt theValue) {
3798                myDisplay = theValue;
3799                return this;
3800        }
3801        
3802        
3803
3804        /**
3805         * Sets the value for <b>display</b> ()
3806         *
3807     * <p>
3808     * <b>Definition:</b>
3809     * The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the system
3810     * </p> 
3811         */
3812        public ComposeIncludeConcept setDisplay( String theString) {
3813                myDisplay = new StringDt(theString); 
3814                return this; 
3815        }
3816
3817 
3818        /**
3819         * Gets the value(s) for <b>designation</b> ().
3820         * creating it if it does
3821         * not exist. Will not return <code>null</code>.
3822         *
3823     * <p>
3824     * <b>Definition:</b>
3825     * Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc.
3826     * </p> 
3827         */
3828        public java.util.List<CodeSystemConceptDesignation> getDesignation() {  
3829                if (myDesignation == null) {
3830                        myDesignation = new java.util.ArrayList<CodeSystemConceptDesignation>();
3831                }
3832                return myDesignation;
3833        }
3834
3835        /**
3836         * Sets the value(s) for <b>designation</b> ()
3837         *
3838     * <p>
3839     * <b>Definition:</b>
3840     * Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc.
3841     * </p> 
3842         */
3843        public ComposeIncludeConcept setDesignation(java.util.List<CodeSystemConceptDesignation> theValue) {
3844                myDesignation = theValue;
3845                return this;
3846        }
3847        
3848        
3849
3850        /**
3851         * Adds and returns a new value for <b>designation</b> ()
3852         *
3853     * <p>
3854     * <b>Definition:</b>
3855     * Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc.
3856     * </p> 
3857         */
3858        public CodeSystemConceptDesignation addDesignation() {
3859                CodeSystemConceptDesignation newType = new CodeSystemConceptDesignation();
3860                getDesignation().add(newType);
3861                return newType; 
3862        }
3863
3864        /**
3865         * Adds a given new value for <b>designation</b> ()
3866         *
3867         * <p>
3868         * <b>Definition:</b>
3869         * Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc.
3870         * </p>
3871         * @param theValue The designation to add (must not be <code>null</code>)
3872         */
3873        public ComposeIncludeConcept addDesignation(CodeSystemConceptDesignation theValue) {
3874                if (theValue == null) {
3875                        throw new NullPointerException("theValue must not be null");
3876                }
3877                getDesignation().add(theValue);
3878                return this;
3879        }
3880
3881        /**
3882         * Gets the first repetition for <b>designation</b> (),
3883         * creating it if it does not already exist.
3884         *
3885     * <p>
3886     * <b>Definition:</b>
3887     * Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc.
3888     * </p> 
3889         */
3890        public CodeSystemConceptDesignation getDesignationFirstRep() {
3891                if (getDesignation().isEmpty()) {
3892                        return addDesignation();
3893                }
3894                return getDesignation().get(0); 
3895        }
3896  
3897
3898
3899        }
3900
3901
3902        /**
3903         * Block class for child element: <b>ValueSet.compose.include.filter</b> ()
3904         *
3905     * <p>
3906     * <b>Definition:</b>
3907     * Select concepts by specify a matching criteria based on the properties (including relationships) defined by the system. If multiple filters are specified, they SHALL all be true.
3908     * </p> 
3909         */
3910        @Block()        
3911        public static class ComposeIncludeFilter 
3912            extends  BaseIdentifiableElement        implements IResourceBlock {
3913        
3914        @Child(name="property", type=CodeDt.class, order=0, min=1, max=1, summary=false, modifier=false)        
3915        @Description(
3916                shortDefinition="",
3917                formalDefinition="A code that identifies a property defined in the code system"
3918        )
3919        private CodeDt myProperty;
3920        
3921        @Child(name="op", type=CodeDt.class, order=1, min=1, max=1, summary=false, modifier=false)      
3922        @Description(
3923                shortDefinition="",
3924                formalDefinition="The kind of operation to perform as a part of the filter criteria"
3925        )
3926        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/filter-operator")
3927        private BoundCodeDt<FilterOperatorEnum> myOp;
3928        
3929        @Child(name="value", type=CodeDt.class, order=2, min=1, max=1, summary=false, modifier=false)   
3930        @Description(
3931                shortDefinition="",
3932                formalDefinition="The match value may be either a code defined by the system, or a string value, which is a regex match on the literal string of the property value"
3933        )
3934        private CodeDt myValue;
3935        
3936
3937        @Override
3938        public boolean isEmpty() {
3939                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myProperty,  myOp,  myValue);
3940        }
3941        
3942        @Override
3943        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
3944                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myProperty, myOp, myValue);
3945        }
3946
3947        /**
3948         * Gets the value(s) for <b>property</b> ().
3949         * creating it if it does
3950         * not exist. Will not return <code>null</code>.
3951         *
3952     * <p>
3953     * <b>Definition:</b>
3954     * A code that identifies a property defined in the code system
3955     * </p> 
3956         */
3957        public CodeDt getPropertyElement() {  
3958                if (myProperty == null) {
3959                        myProperty = new CodeDt();
3960                }
3961                return myProperty;
3962        }
3963
3964        
3965        /**
3966         * Gets the value(s) for <b>property</b> ().
3967         * creating it if it does
3968         * not exist. This method may return <code>null</code>.
3969         *
3970     * <p>
3971     * <b>Definition:</b>
3972     * A code that identifies a property defined in the code system
3973     * </p> 
3974         */
3975        public String getProperty() {  
3976                return getPropertyElement().getValue();
3977        }
3978
3979        /**
3980         * Sets the value(s) for <b>property</b> ()
3981         *
3982     * <p>
3983     * <b>Definition:</b>
3984     * A code that identifies a property defined in the code system
3985     * </p> 
3986         */
3987        public ComposeIncludeFilter setProperty(CodeDt theValue) {
3988                myProperty = theValue;
3989                return this;
3990        }
3991        
3992        
3993
3994        /**
3995         * Sets the value for <b>property</b> ()
3996         *
3997     * <p>
3998     * <b>Definition:</b>
3999     * A code that identifies a property defined in the code system
4000     * </p> 
4001         */
4002        public ComposeIncludeFilter setProperty( String theCode) {
4003                myProperty = new CodeDt(theCode); 
4004                return this; 
4005        }
4006
4007 
4008        /**
4009         * Gets the value(s) for <b>op</b> ().
4010         * creating it if it does
4011         * not exist. Will not return <code>null</code>.
4012         *
4013     * <p>
4014     * <b>Definition:</b>
4015     * The kind of operation to perform as a part of the filter criteria
4016     * </p> 
4017         */
4018        public BoundCodeDt<FilterOperatorEnum> getOpElement() {  
4019                if (myOp == null) {
4020                        myOp = new BoundCodeDt<FilterOperatorEnum>(FilterOperatorEnum.VALUESET_BINDER);
4021                }
4022                return myOp;
4023        }
4024
4025        
4026        /**
4027         * Gets the value(s) for <b>op</b> ().
4028         * creating it if it does
4029         * not exist. This method may return <code>null</code>.
4030         *
4031     * <p>
4032     * <b>Definition:</b>
4033     * The kind of operation to perform as a part of the filter criteria
4034     * </p> 
4035         */
4036        public String getOp() {  
4037                return getOpElement().getValue();
4038        }
4039
4040        /**
4041         * Sets the value(s) for <b>op</b> ()
4042         *
4043     * <p>
4044     * <b>Definition:</b>
4045     * The kind of operation to perform as a part of the filter criteria
4046     * </p> 
4047         */
4048        public ComposeIncludeFilter setOp(BoundCodeDt<FilterOperatorEnum> theValue) {
4049                myOp = theValue;
4050                return this;
4051        }
4052        
4053        
4054
4055        /**
4056         * Sets the value(s) for <b>op</b> ()
4057         *
4058     * <p>
4059     * <b>Definition:</b>
4060     * The kind of operation to perform as a part of the filter criteria
4061     * </p> 
4062         */
4063        public ComposeIncludeFilter setOp(FilterOperatorEnum theValue) {
4064                setOp(new BoundCodeDt<FilterOperatorEnum>(FilterOperatorEnum.VALUESET_BINDER, theValue));
4065                
4066/*
4067                getOpElement().setValueAsEnum(theValue);
4068*/
4069                return this;
4070        }
4071
4072  
4073        /**
4074         * Gets the value(s) for <b>value</b> ().
4075         * creating it if it does
4076         * not exist. Will not return <code>null</code>.
4077         *
4078     * <p>
4079     * <b>Definition:</b>
4080     * The match value may be either a code defined by the system, or a string value, which is a regex match on the literal string of the property value
4081     * </p> 
4082         */
4083        public CodeDt getValueElement() {  
4084                if (myValue == null) {
4085                        myValue = new CodeDt();
4086                }
4087                return myValue;
4088        }
4089
4090        
4091        /**
4092         * Gets the value(s) for <b>value</b> ().
4093         * creating it if it does
4094         * not exist. This method may return <code>null</code>.
4095         *
4096     * <p>
4097     * <b>Definition:</b>
4098     * The match value may be either a code defined by the system, or a string value, which is a regex match on the literal string of the property value
4099     * </p> 
4100         */
4101        public String getValue() {  
4102                return getValueElement().getValue();
4103        }
4104
4105        /**
4106         * Sets the value(s) for <b>value</b> ()
4107         *
4108     * <p>
4109     * <b>Definition:</b>
4110     * The match value may be either a code defined by the system, or a string value, which is a regex match on the literal string of the property value
4111     * </p> 
4112         */
4113        public ComposeIncludeFilter setValue(CodeDt theValue) {
4114                myValue = theValue;
4115                return this;
4116        }
4117        
4118        
4119
4120        /**
4121         * Sets the value for <b>value</b> ()
4122         *
4123     * <p>
4124     * <b>Definition:</b>
4125     * The match value may be either a code defined by the system, or a string value, which is a regex match on the literal string of the property value
4126     * </p> 
4127         */
4128        public ComposeIncludeFilter setValue( String theCode) {
4129                myValue = new CodeDt(theCode); 
4130                return this; 
4131        }
4132
4133 
4134
4135
4136        }
4137
4138
4139
4140
4141        /**
4142         * Block class for child element: <b>ValueSet.expansion</b> ()
4143         *
4144     * <p>
4145     * <b>Definition:</b>
4146     * A value set can also be \"expanded\", where the value set is turned into a simple collection of enumerated codes. This element holds the expansion, if it has been performed
4147     * </p> 
4148         */
4149        @Block()        
4150        public static class Expansion 
4151            extends  BaseIdentifiableElement        implements IResourceBlock {
4152        
4153        @Child(name="identifier", type=UriDt.class, order=0, min=1, max=1, summary=false, modifier=false)       
4154        @Description(
4155                shortDefinition="",
4156                formalDefinition="An identifier that uniquely identifies this expansion of the valueset. Systems may re-use the same identifier as long as the expansion and the definition remain the same, but are not required to do so"
4157        )
4158        private UriDt myIdentifier;
4159        
4160        @Child(name="timestamp", type=DateTimeDt.class, order=1, min=1, max=1, summary=false, modifier=false)   
4161        @Description(
4162                shortDefinition="",
4163                formalDefinition="The time at which the expansion was produced by the expanding system."
4164        )
4165        private DateTimeDt myTimestamp;
4166        
4167        @Child(name="total", type=IntegerDt.class, order=2, min=0, max=1, summary=false, modifier=false)        
4168        @Description(
4169                shortDefinition="",
4170                formalDefinition="The total number of concepts in the expansion. If the number of concept nodes in this resource is less than the stated number, then the server can return more using the offset parameter"
4171        )
4172        private IntegerDt myTotal;
4173        
4174        @Child(name="offset", type=IntegerDt.class, order=3, min=0, max=1, summary=false, modifier=false)       
4175        @Description(
4176                shortDefinition="",
4177                formalDefinition="If paging is being used, the offset at which this resource starts.  I.e. this resource is a partial view into the expansion. If paging is not being used, this element SHALL not be present"
4178        )
4179        private IntegerDt myOffset;
4180        
4181        @Child(name="parameter", order=4, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
4182        @Description(
4183                shortDefinition="",
4184                formalDefinition="A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion"
4185        )
4186        private java.util.List<ExpansionParameter> myParameter;
4187        
4188        @Child(name="contains", order=5, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
4189        @Description(
4190                shortDefinition="",
4191                formalDefinition="The codes that are contained in the value set expansion"
4192        )
4193        private java.util.List<ExpansionContains> myContains;
4194        
4195
4196        @Override
4197        public boolean isEmpty() {
4198                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myTimestamp,  myTotal,  myOffset,  myParameter,  myContains);
4199        }
4200        
4201        @Override
4202        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
4203                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myTimestamp, myTotal, myOffset, myParameter, myContains);
4204        }
4205
4206        /**
4207         * Gets the value(s) for <b>identifier</b> ().
4208         * creating it if it does
4209         * not exist. Will not return <code>null</code>.
4210         *
4211     * <p>
4212     * <b>Definition:</b>
4213     * An identifier that uniquely identifies this expansion of the valueset. Systems may re-use the same identifier as long as the expansion and the definition remain the same, but are not required to do so
4214     * </p> 
4215         */
4216        public UriDt getIdentifierElement() {  
4217                if (myIdentifier == null) {
4218                        myIdentifier = new UriDt();
4219                }
4220                return myIdentifier;
4221        }
4222
4223        
4224        /**
4225         * Gets the value(s) for <b>identifier</b> ().
4226         * creating it if it does
4227         * not exist. This method may return <code>null</code>.
4228         *
4229     * <p>
4230     * <b>Definition:</b>
4231     * An identifier that uniquely identifies this expansion of the valueset. Systems may re-use the same identifier as long as the expansion and the definition remain the same, but are not required to do so
4232     * </p> 
4233         */
4234        public String getIdentifier() {  
4235                return getIdentifierElement().getValue();
4236        }
4237
4238        /**
4239         * Sets the value(s) for <b>identifier</b> ()
4240         *
4241     * <p>
4242     * <b>Definition:</b>
4243     * An identifier that uniquely identifies this expansion of the valueset. Systems may re-use the same identifier as long as the expansion and the definition remain the same, but are not required to do so
4244     * </p> 
4245         */
4246        public Expansion setIdentifier(UriDt theValue) {
4247                myIdentifier = theValue;
4248                return this;
4249        }
4250        
4251        
4252
4253        /**
4254         * Sets the value for <b>identifier</b> ()
4255         *
4256     * <p>
4257     * <b>Definition:</b>
4258     * An identifier that uniquely identifies this expansion of the valueset. Systems may re-use the same identifier as long as the expansion and the definition remain the same, but are not required to do so
4259     * </p> 
4260         */
4261        public Expansion setIdentifier( String theUri) {
4262                myIdentifier = new UriDt(theUri); 
4263                return this; 
4264        }
4265
4266 
4267        /**
4268         * Gets the value(s) for <b>timestamp</b> ().
4269         * creating it if it does
4270         * not exist. Will not return <code>null</code>.
4271         *
4272     * <p>
4273     * <b>Definition:</b>
4274     * The time at which the expansion was produced by the expanding system.
4275     * </p> 
4276         */
4277        public DateTimeDt getTimestampElement() {  
4278                if (myTimestamp == null) {
4279                        myTimestamp = new DateTimeDt();
4280                }
4281                return myTimestamp;
4282        }
4283
4284        
4285        /**
4286         * Gets the value(s) for <b>timestamp</b> ().
4287         * creating it if it does
4288         * not exist. This method may return <code>null</code>.
4289         *
4290     * <p>
4291     * <b>Definition:</b>
4292     * The time at which the expansion was produced by the expanding system.
4293     * </p> 
4294         */
4295        public Date getTimestamp() {  
4296                return getTimestampElement().getValue();
4297        }
4298
4299        /**
4300         * Sets the value(s) for <b>timestamp</b> ()
4301         *
4302     * <p>
4303     * <b>Definition:</b>
4304     * The time at which the expansion was produced by the expanding system.
4305     * </p> 
4306         */
4307        public Expansion setTimestamp(DateTimeDt theValue) {
4308                myTimestamp = theValue;
4309                return this;
4310        }
4311        
4312        
4313
4314        /**
4315         * Sets the value for <b>timestamp</b> ()
4316         *
4317     * <p>
4318     * <b>Definition:</b>
4319     * The time at which the expansion was produced by the expanding system.
4320     * </p> 
4321         */
4322        public Expansion setTimestampWithSecondsPrecision( Date theDate) {
4323                myTimestamp = new DateTimeDt(theDate); 
4324                return this; 
4325        }
4326
4327        /**
4328         * Sets the value for <b>timestamp</b> ()
4329         *
4330     * <p>
4331     * <b>Definition:</b>
4332     * The time at which the expansion was produced by the expanding system.
4333     * </p> 
4334         */
4335        public Expansion setTimestamp( Date theDate,  TemporalPrecisionEnum thePrecision) {
4336                myTimestamp = new DateTimeDt(theDate, thePrecision); 
4337                return this; 
4338        }
4339
4340 
4341        /**
4342         * Gets the value(s) for <b>total</b> ().
4343         * creating it if it does
4344         * not exist. Will not return <code>null</code>.
4345         *
4346     * <p>
4347     * <b>Definition:</b>
4348     * The total number of concepts in the expansion. If the number of concept nodes in this resource is less than the stated number, then the server can return more using the offset parameter
4349     * </p> 
4350         */
4351        public IntegerDt getTotalElement() {  
4352                if (myTotal == null) {
4353                        myTotal = new IntegerDt();
4354                }
4355                return myTotal;
4356        }
4357
4358        
4359        /**
4360         * Gets the value(s) for <b>total</b> ().
4361         * creating it if it does
4362         * not exist. This method may return <code>null</code>.
4363         *
4364     * <p>
4365     * <b>Definition:</b>
4366     * The total number of concepts in the expansion. If the number of concept nodes in this resource is less than the stated number, then the server can return more using the offset parameter
4367     * </p> 
4368         */
4369        public Integer getTotal() {  
4370                return getTotalElement().getValue();
4371        }
4372
4373        /**
4374         * Sets the value(s) for <b>total</b> ()
4375         *
4376     * <p>
4377     * <b>Definition:</b>
4378     * The total number of concepts in the expansion. If the number of concept nodes in this resource is less than the stated number, then the server can return more using the offset parameter
4379     * </p> 
4380         */
4381        public Expansion setTotal(IntegerDt theValue) {
4382                myTotal = theValue;
4383                return this;
4384        }
4385        
4386        
4387
4388        /**
4389         * Sets the value for <b>total</b> ()
4390         *
4391     * <p>
4392     * <b>Definition:</b>
4393     * The total number of concepts in the expansion. If the number of concept nodes in this resource is less than the stated number, then the server can return more using the offset parameter
4394     * </p> 
4395         */
4396        public Expansion setTotal( int theInteger) {
4397                myTotal = new IntegerDt(theInteger); 
4398                return this; 
4399        }
4400
4401 
4402        /**
4403         * Gets the value(s) for <b>offset</b> ().
4404         * creating it if it does
4405         * not exist. Will not return <code>null</code>.
4406         *
4407     * <p>
4408     * <b>Definition:</b>
4409     * If paging is being used, the offset at which this resource starts.  I.e. this resource is a partial view into the expansion. If paging is not being used, this element SHALL not be present
4410     * </p> 
4411         */
4412        public IntegerDt getOffsetElement() {  
4413                if (myOffset == null) {
4414                        myOffset = new IntegerDt();
4415                }
4416                return myOffset;
4417        }
4418
4419        
4420        /**
4421         * Gets the value(s) for <b>offset</b> ().
4422         * creating it if it does
4423         * not exist. This method may return <code>null</code>.
4424         *
4425     * <p>
4426     * <b>Definition:</b>
4427     * If paging is being used, the offset at which this resource starts.  I.e. this resource is a partial view into the expansion. If paging is not being used, this element SHALL not be present
4428     * </p> 
4429         */
4430        public Integer getOffset() {  
4431                return getOffsetElement().getValue();
4432        }
4433
4434        /**
4435         * Sets the value(s) for <b>offset</b> ()
4436         *
4437     * <p>
4438     * <b>Definition:</b>
4439     * If paging is being used, the offset at which this resource starts.  I.e. this resource is a partial view into the expansion. If paging is not being used, this element SHALL not be present
4440     * </p> 
4441         */
4442        public Expansion setOffset(IntegerDt theValue) {
4443                myOffset = theValue;
4444                return this;
4445        }
4446        
4447        
4448
4449        /**
4450         * Sets the value for <b>offset</b> ()
4451         *
4452     * <p>
4453     * <b>Definition:</b>
4454     * If paging is being used, the offset at which this resource starts.  I.e. this resource is a partial view into the expansion. If paging is not being used, this element SHALL not be present
4455     * </p> 
4456         */
4457        public Expansion setOffset( int theInteger) {
4458                myOffset = new IntegerDt(theInteger); 
4459                return this; 
4460        }
4461
4462 
4463        /**
4464         * Gets the value(s) for <b>parameter</b> ().
4465         * creating it if it does
4466         * not exist. Will not return <code>null</code>.
4467         *
4468     * <p>
4469     * <b>Definition:</b>
4470     * A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion
4471     * </p> 
4472         */
4473        public java.util.List<ExpansionParameter> getParameter() {  
4474                if (myParameter == null) {
4475                        myParameter = new java.util.ArrayList<ExpansionParameter>();
4476                }
4477                return myParameter;
4478        }
4479
4480        /**
4481         * Sets the value(s) for <b>parameter</b> ()
4482         *
4483     * <p>
4484     * <b>Definition:</b>
4485     * A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion
4486     * </p> 
4487         */
4488        public Expansion setParameter(java.util.List<ExpansionParameter> theValue) {
4489                myParameter = theValue;
4490                return this;
4491        }
4492        
4493        
4494
4495        /**
4496         * Adds and returns a new value for <b>parameter</b> ()
4497         *
4498     * <p>
4499     * <b>Definition:</b>
4500     * A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion
4501     * </p> 
4502         */
4503        public ExpansionParameter addParameter() {
4504                ExpansionParameter newType = new ExpansionParameter();
4505                getParameter().add(newType);
4506                return newType; 
4507        }
4508
4509        /**
4510         * Adds a given new value for <b>parameter</b> ()
4511         *
4512         * <p>
4513         * <b>Definition:</b>
4514         * A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion
4515         * </p>
4516         * @param theValue The parameter to add (must not be <code>null</code>)
4517         */
4518        public Expansion addParameter(ExpansionParameter theValue) {
4519                if (theValue == null) {
4520                        throw new NullPointerException("theValue must not be null");
4521                }
4522                getParameter().add(theValue);
4523                return this;
4524        }
4525
4526        /**
4527         * Gets the first repetition for <b>parameter</b> (),
4528         * creating it if it does not already exist.
4529         *
4530     * <p>
4531     * <b>Definition:</b>
4532     * A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion
4533     * </p> 
4534         */
4535        public ExpansionParameter getParameterFirstRep() {
4536                if (getParameter().isEmpty()) {
4537                        return addParameter();
4538                }
4539                return getParameter().get(0); 
4540        }
4541  
4542        /**
4543         * Gets the value(s) for <b>contains</b> ().
4544         * creating it if it does
4545         * not exist. Will not return <code>null</code>.
4546         *
4547     * <p>
4548     * <b>Definition:</b>
4549     * The codes that are contained in the value set expansion
4550     * </p> 
4551         */
4552        public java.util.List<ExpansionContains> getContains() {  
4553                if (myContains == null) {
4554                        myContains = new java.util.ArrayList<ExpansionContains>();
4555                }
4556                return myContains;
4557        }
4558
4559        /**
4560         * Sets the value(s) for <b>contains</b> ()
4561         *
4562     * <p>
4563     * <b>Definition:</b>
4564     * The codes that are contained in the value set expansion
4565     * </p> 
4566         */
4567        public Expansion setContains(java.util.List<ExpansionContains> theValue) {
4568                myContains = theValue;
4569                return this;
4570        }
4571        
4572        
4573
4574        /**
4575         * Adds and returns a new value for <b>contains</b> ()
4576         *
4577     * <p>
4578     * <b>Definition:</b>
4579     * The codes that are contained in the value set expansion
4580     * </p> 
4581         */
4582        public ExpansionContains addContains() {
4583                ExpansionContains newType = new ExpansionContains();
4584                getContains().add(newType);
4585                return newType; 
4586        }
4587
4588        /**
4589         * Adds a given new value for <b>contains</b> ()
4590         *
4591         * <p>
4592         * <b>Definition:</b>
4593         * The codes that are contained in the value set expansion
4594         * </p>
4595         * @param theValue The contains to add (must not be <code>null</code>)
4596         */
4597        public Expansion addContains(ExpansionContains theValue) {
4598                if (theValue == null) {
4599                        throw new NullPointerException("theValue must not be null");
4600                }
4601                getContains().add(theValue);
4602                return this;
4603        }
4604
4605        /**
4606         * Gets the first repetition for <b>contains</b> (),
4607         * creating it if it does not already exist.
4608         *
4609     * <p>
4610     * <b>Definition:</b>
4611     * The codes that are contained in the value set expansion
4612     * </p> 
4613         */
4614        public ExpansionContains getContainsFirstRep() {
4615                if (getContains().isEmpty()) {
4616                        return addContains();
4617                }
4618                return getContains().get(0); 
4619        }
4620  
4621
4622
4623        }
4624
4625        /**
4626         * Block class for child element: <b>ValueSet.expansion.parameter</b> ()
4627         *
4628     * <p>
4629     * <b>Definition:</b>
4630     * A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion
4631     * </p> 
4632         */
4633        @Block()        
4634        public static class ExpansionParameter 
4635            extends  BaseIdentifiableElement        implements IResourceBlock {
4636        
4637        @Child(name="name", type=StringDt.class, order=0, min=1, max=1, summary=false, modifier=false)  
4638        @Description(
4639                shortDefinition="",
4640                formalDefinition="The name of the parameter"
4641        )
4642        private StringDt myName;
4643        
4644        @Child(name="value", order=1, min=0, max=1, summary=false, modifier=false, type={
4645                StringDt.class,                 BooleanDt.class,                IntegerDt.class,                DecimalDt.class,                UriDt.class,            CodeDt.class    })
4646        @Description(
4647                shortDefinition="",
4648                formalDefinition="The value of the parameter"
4649        )
4650        private IDatatype myValue;
4651        
4652
4653        @Override
4654        public boolean isEmpty() {
4655                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myValue);
4656        }
4657        
4658        @Override
4659        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
4660                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myValue);
4661        }
4662
4663        /**
4664         * Gets the value(s) for <b>name</b> ().
4665         * creating it if it does
4666         * not exist. Will not return <code>null</code>.
4667         *
4668     * <p>
4669     * <b>Definition:</b>
4670     * The name of the parameter
4671     * </p> 
4672         */
4673        public StringDt getNameElement() {  
4674                if (myName == null) {
4675                        myName = new StringDt();
4676                }
4677                return myName;
4678        }
4679
4680        
4681        /**
4682         * Gets the value(s) for <b>name</b> ().
4683         * creating it if it does
4684         * not exist. This method may return <code>null</code>.
4685         *
4686     * <p>
4687     * <b>Definition:</b>
4688     * The name of the parameter
4689     * </p> 
4690         */
4691        public String getName() {  
4692                return getNameElement().getValue();
4693        }
4694
4695        /**
4696         * Sets the value(s) for <b>name</b> ()
4697         *
4698     * <p>
4699     * <b>Definition:</b>
4700     * The name of the parameter
4701     * </p> 
4702         */
4703        public ExpansionParameter setName(StringDt theValue) {
4704                myName = theValue;
4705                return this;
4706        }
4707        
4708        
4709
4710        /**
4711         * Sets the value for <b>name</b> ()
4712         *
4713     * <p>
4714     * <b>Definition:</b>
4715     * The name of the parameter
4716     * </p> 
4717         */
4718        public ExpansionParameter setName( String theString) {
4719                myName = new StringDt(theString); 
4720                return this; 
4721        }
4722
4723 
4724        /**
4725         * Gets the value(s) for <b>value[x]</b> ().
4726         * creating it if it does
4727         * not exist. Will not return <code>null</code>.
4728         *
4729     * <p>
4730     * <b>Definition:</b>
4731     * The value of the parameter
4732     * </p> 
4733         */
4734        public IDatatype getValue() {  
4735                return myValue;
4736        }
4737
4738        /**
4739         * Sets the value(s) for <b>value[x]</b> ()
4740         *
4741     * <p>
4742     * <b>Definition:</b>
4743     * The value of the parameter
4744     * </p> 
4745         */
4746        public ExpansionParameter setValue(IDatatype theValue) {
4747                myValue = theValue;
4748                return this;
4749        }
4750        
4751        
4752
4753  
4754
4755
4756        }
4757
4758
4759        /**
4760         * Block class for child element: <b>ValueSet.expansion.contains</b> ()
4761         *
4762     * <p>
4763     * <b>Definition:</b>
4764     * The codes that are contained in the value set expansion
4765     * </p> 
4766         */
4767        @Block()        
4768        public static class ExpansionContains 
4769            extends  BaseIdentifiableElement        implements IResourceBlock {
4770        
4771        @Child(name="system", type=UriDt.class, order=0, min=0, max=1, summary=false, modifier=false)   
4772        @Description(
4773                shortDefinition="",
4774                formalDefinition="An absolute URI which is the code system in which the code for this item in the expansion is defined"
4775        )
4776        private UriDt mySystem;
4777        
4778        @Child(name="abstract", type=BooleanDt.class, order=1, min=0, max=1, summary=false, modifier=false)     
4779        @Description(
4780                shortDefinition="",
4781                formalDefinition="If true, this entry is included in the expansion for navigational purposes, and the user cannot select the code directly as a proper value"
4782        )
4783        private BooleanDt myAbstract;
4784        
4785        @Child(name="version", type=StringDt.class, order=2, min=0, max=1, summary=false, modifier=false)       
4786        @Description(
4787                shortDefinition="",
4788                formalDefinition="The version of this code system that defined this code and/or display. This should only be used with code systems that do not enforce concept permanence"
4789        )
4790        private StringDt myVersion;
4791        
4792        @Child(name="code", type=CodeDt.class, order=3, min=0, max=1, summary=false, modifier=false)    
4793        @Description(
4794                shortDefinition="",
4795                formalDefinition="The code for this item in the expansion hierarchy. If this code is missing the entry in the hierarchy is a place holder (abstract) and does not represent a valid code in the value set"
4796        )
4797        private CodeDt myCode;
4798        
4799        @Child(name="display", type=StringDt.class, order=4, min=0, max=1, summary=false, modifier=false)       
4800        @Description(
4801                shortDefinition="",
4802                formalDefinition="The recommended display for this item in the expansion"
4803        )
4804        private StringDt myDisplay;
4805        
4806        @Child(name="contains", type=ExpansionContains.class, order=5, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
4807        @Description(
4808                shortDefinition="",
4809                formalDefinition="Other codes and entries contained under this entry in the hierarchy"
4810        )
4811        private java.util.List<ExpansionContains> myContains;
4812        
4813
4814        @Override
4815        public boolean isEmpty() {
4816                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  mySystem,  myAbstract,  myVersion,  myCode,  myDisplay,  myContains);
4817        }
4818        
4819        @Override
4820        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
4821                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, mySystem, myAbstract, myVersion, myCode, myDisplay, myContains);
4822        }
4823
4824        /**
4825         * Gets the value(s) for <b>system</b> ().
4826         * creating it if it does
4827         * not exist. Will not return <code>null</code>.
4828         *
4829     * <p>
4830     * <b>Definition:</b>
4831     * An absolute URI which is the code system in which the code for this item in the expansion is defined
4832     * </p> 
4833         */
4834        public UriDt getSystemElement() {  
4835                if (mySystem == null) {
4836                        mySystem = new UriDt();
4837                }
4838                return mySystem;
4839        }
4840
4841        
4842        /**
4843         * Gets the value(s) for <b>system</b> ().
4844         * creating it if it does
4845         * not exist. This method may return <code>null</code>.
4846         *
4847     * <p>
4848     * <b>Definition:</b>
4849     * An absolute URI which is the code system in which the code for this item in the expansion is defined
4850     * </p> 
4851         */
4852        public String getSystem() {  
4853                return getSystemElement().getValue();
4854        }
4855
4856        /**
4857         * Sets the value(s) for <b>system</b> ()
4858         *
4859     * <p>
4860     * <b>Definition:</b>
4861     * An absolute URI which is the code system in which the code for this item in the expansion is defined
4862     * </p> 
4863         */
4864        public ExpansionContains setSystem(UriDt theValue) {
4865                mySystem = theValue;
4866                return this;
4867        }
4868        
4869        
4870
4871        /**
4872         * Sets the value for <b>system</b> ()
4873         *
4874     * <p>
4875     * <b>Definition:</b>
4876     * An absolute URI which is the code system in which the code for this item in the expansion is defined
4877     * </p> 
4878         */
4879        public ExpansionContains setSystem( String theUri) {
4880                mySystem = new UriDt(theUri); 
4881                return this; 
4882        }
4883
4884 
4885        /**
4886         * Gets the value(s) for <b>abstract</b> ().
4887         * creating it if it does
4888         * not exist. Will not return <code>null</code>.
4889         *
4890     * <p>
4891     * <b>Definition:</b>
4892     * If true, this entry is included in the expansion for navigational purposes, and the user cannot select the code directly as a proper value
4893     * </p> 
4894         */
4895        public BooleanDt getAbstractElement() {  
4896                if (myAbstract == null) {
4897                        myAbstract = new BooleanDt();
4898                }
4899                return myAbstract;
4900        }
4901
4902        
4903        /**
4904         * Gets the value(s) for <b>abstract</b> ().
4905         * creating it if it does
4906         * not exist. This method may return <code>null</code>.
4907         *
4908     * <p>
4909     * <b>Definition:</b>
4910     * If true, this entry is included in the expansion for navigational purposes, and the user cannot select the code directly as a proper value
4911     * </p> 
4912         */
4913        public Boolean getAbstract() {  
4914                return getAbstractElement().getValue();
4915        }
4916
4917        /**
4918         * Sets the value(s) for <b>abstract</b> ()
4919         *
4920     * <p>
4921     * <b>Definition:</b>
4922     * If true, this entry is included in the expansion for navigational purposes, and the user cannot select the code directly as a proper value
4923     * </p> 
4924         */
4925        public ExpansionContains setAbstract(BooleanDt theValue) {
4926                myAbstract = theValue;
4927                return this;
4928        }
4929        
4930        
4931
4932        /**
4933         * Sets the value for <b>abstract</b> ()
4934         *
4935     * <p>
4936     * <b>Definition:</b>
4937     * If true, this entry is included in the expansion for navigational purposes, and the user cannot select the code directly as a proper value
4938     * </p> 
4939         */
4940        public ExpansionContains setAbstract( boolean theBoolean) {
4941                myAbstract = new BooleanDt(theBoolean); 
4942                return this; 
4943        }
4944
4945 
4946        /**
4947         * Gets the value(s) for <b>version</b> ().
4948         * creating it if it does
4949         * not exist. Will not return <code>null</code>.
4950         *
4951     * <p>
4952     * <b>Definition:</b>
4953     * The version of this code system that defined this code and/or display. This should only be used with code systems that do not enforce concept permanence
4954     * </p> 
4955         */
4956        public StringDt getVersionElement() {  
4957                if (myVersion == null) {
4958                        myVersion = new StringDt();
4959                }
4960                return myVersion;
4961        }
4962
4963        
4964        /**
4965         * Gets the value(s) for <b>version</b> ().
4966         * creating it if it does
4967         * not exist. This method may return <code>null</code>.
4968         *
4969     * <p>
4970     * <b>Definition:</b>
4971     * The version of this code system that defined this code and/or display. This should only be used with code systems that do not enforce concept permanence
4972     * </p> 
4973         */
4974        public String getVersion() {  
4975                return getVersionElement().getValue();
4976        }
4977
4978        /**
4979         * Sets the value(s) for <b>version</b> ()
4980         *
4981     * <p>
4982     * <b>Definition:</b>
4983     * The version of this code system that defined this code and/or display. This should only be used with code systems that do not enforce concept permanence
4984     * </p> 
4985         */
4986        public ExpansionContains setVersion(StringDt theValue) {
4987                myVersion = theValue;
4988                return this;
4989        }
4990        
4991        
4992
4993        /**
4994         * Sets the value for <b>version</b> ()
4995         *
4996     * <p>
4997     * <b>Definition:</b>
4998     * The version of this code system that defined this code and/or display. This should only be used with code systems that do not enforce concept permanence
4999     * </p> 
5000         */
5001        public ExpansionContains setVersion( String theString) {
5002                myVersion = new StringDt(theString); 
5003                return this; 
5004        }
5005
5006 
5007        /**
5008         * Gets the value(s) for <b>code</b> ().
5009         * creating it if it does
5010         * not exist. Will not return <code>null</code>.
5011         *
5012     * <p>
5013     * <b>Definition:</b>
5014     * The code for this item in the expansion hierarchy. If this code is missing the entry in the hierarchy is a place holder (abstract) and does not represent a valid code in the value set
5015     * </p> 
5016         */
5017        public CodeDt getCodeElement() {  
5018                if (myCode == null) {
5019                        myCode = new CodeDt();
5020                }
5021                return myCode;
5022        }
5023
5024        
5025        /**
5026         * Gets the value(s) for <b>code</b> ().
5027         * creating it if it does
5028         * not exist. This method may return <code>null</code>.
5029         *
5030     * <p>
5031     * <b>Definition:</b>
5032     * The code for this item in the expansion hierarchy. If this code is missing the entry in the hierarchy is a place holder (abstract) and does not represent a valid code in the value set
5033     * </p> 
5034         */
5035        public String getCode() {  
5036                return getCodeElement().getValue();
5037        }
5038
5039        /**
5040         * Sets the value(s) for <b>code</b> ()
5041         *
5042     * <p>
5043     * <b>Definition:</b>
5044     * The code for this item in the expansion hierarchy. If this code is missing the entry in the hierarchy is a place holder (abstract) and does not represent a valid code in the value set
5045     * </p> 
5046         */
5047        public ExpansionContains setCode(CodeDt theValue) {
5048                myCode = theValue;
5049                return this;
5050        }
5051        
5052        
5053
5054        /**
5055         * Sets the value for <b>code</b> ()
5056         *
5057     * <p>
5058     * <b>Definition:</b>
5059     * The code for this item in the expansion hierarchy. If this code is missing the entry in the hierarchy is a place holder (abstract) and does not represent a valid code in the value set
5060     * </p> 
5061         */
5062        public ExpansionContains setCode( String theCode) {
5063                myCode = new CodeDt(theCode); 
5064                return this; 
5065        }
5066
5067 
5068        /**
5069         * Gets the value(s) for <b>display</b> ().
5070         * creating it if it does
5071         * not exist. Will not return <code>null</code>.
5072         *
5073     * <p>
5074     * <b>Definition:</b>
5075     * The recommended display for this item in the expansion
5076     * </p> 
5077         */
5078        public StringDt getDisplayElement() {  
5079                if (myDisplay == null) {
5080                        myDisplay = new StringDt();
5081                }
5082                return myDisplay;
5083        }
5084
5085        
5086        /**
5087         * Gets the value(s) for <b>display</b> ().
5088         * creating it if it does
5089         * not exist. This method may return <code>null</code>.
5090         *
5091     * <p>
5092     * <b>Definition:</b>
5093     * The recommended display for this item in the expansion
5094     * </p> 
5095         */
5096        public String getDisplay() {  
5097                return getDisplayElement().getValue();
5098        }
5099
5100        /**
5101         * Sets the value(s) for <b>display</b> ()
5102         *
5103     * <p>
5104     * <b>Definition:</b>
5105     * The recommended display for this item in the expansion
5106     * </p> 
5107         */
5108        public ExpansionContains setDisplay(StringDt theValue) {
5109                myDisplay = theValue;
5110                return this;
5111        }
5112        
5113        
5114
5115        /**
5116         * Sets the value for <b>display</b> ()
5117         *
5118     * <p>
5119     * <b>Definition:</b>
5120     * The recommended display for this item in the expansion
5121     * </p> 
5122         */
5123        public ExpansionContains setDisplay( String theString) {
5124                myDisplay = new StringDt(theString); 
5125                return this; 
5126        }
5127
5128 
5129        /**
5130         * Gets the value(s) for <b>contains</b> ().
5131         * creating it if it does
5132         * not exist. Will not return <code>null</code>.
5133         *
5134     * <p>
5135     * <b>Definition:</b>
5136     * Other codes and entries contained under this entry in the hierarchy
5137     * </p> 
5138         */
5139        public java.util.List<ExpansionContains> getContains() {  
5140                if (myContains == null) {
5141                        myContains = new java.util.ArrayList<ExpansionContains>();
5142                }
5143                return myContains;
5144        }
5145
5146        /**
5147         * Sets the value(s) for <b>contains</b> ()
5148         *
5149     * <p>
5150     * <b>Definition:</b>
5151     * Other codes and entries contained under this entry in the hierarchy
5152     * </p> 
5153         */
5154        public ExpansionContains setContains(java.util.List<ExpansionContains> theValue) {
5155                myContains = theValue;
5156                return this;
5157        }
5158        
5159        
5160
5161        /**
5162         * Adds and returns a new value for <b>contains</b> ()
5163         *
5164     * <p>
5165     * <b>Definition:</b>
5166     * Other codes and entries contained under this entry in the hierarchy
5167     * </p> 
5168         */
5169        public ExpansionContains addContains() {
5170                ExpansionContains newType = new ExpansionContains();
5171                getContains().add(newType);
5172                return newType; 
5173        }
5174
5175        /**
5176         * Adds a given new value for <b>contains</b> ()
5177         *
5178         * <p>
5179         * <b>Definition:</b>
5180         * Other codes and entries contained under this entry in the hierarchy
5181         * </p>
5182         * @param theValue The contains to add (must not be <code>null</code>)
5183         */
5184        public ExpansionContains addContains(ExpansionContains theValue) {
5185                if (theValue == null) {
5186                        throw new NullPointerException("theValue must not be null");
5187                }
5188                getContains().add(theValue);
5189                return this;
5190        }
5191
5192        /**
5193         * Gets the first repetition for <b>contains</b> (),
5194         * creating it if it does not already exist.
5195         *
5196     * <p>
5197     * <b>Definition:</b>
5198     * Other codes and entries contained under this entry in the hierarchy
5199     * </p> 
5200         */
5201        public ExpansionContains getContainsFirstRep() {
5202                if (getContains().isEmpty()) {
5203                        return addContains();
5204                }
5205                return getContains().get(0); 
5206        }
5207  
5208
5209
5210        }
5211
5212
5213
5214
5215
5216    @Override
5217    public String getResourceName() {
5218        return "ValueSet";
5219    }
5220    
5221    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
5222        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
5223    }
5224
5225
5226}