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