001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017package ca.uhn.fhir.model.dstu2.resource;
018
019import java.math.BigDecimal;
020import java.net.URI;
021import java.util.*;
022import ca.uhn.fhir.model.api.*;
023import ca.uhn.fhir.model.api.annotation.*;
024import ca.uhn.fhir.rest.gclient.*;
025
026import ca.uhn.fhir.model.dstu2.valueset.AccountStatusEnum;
027import ca.uhn.fhir.model.dstu2.valueset.ActionListEnum;
028import ca.uhn.fhir.model.dstu2.composite.AddressDt;
029import ca.uhn.fhir.model.dstu2.valueset.AdjudicationCodesEnum;
030import ca.uhn.fhir.model.dstu2.valueset.AdjudicationErrorCodesEnum;
031import ca.uhn.fhir.model.dstu2.valueset.AdjustmentReasonCodesEnum;
032import ca.uhn.fhir.model.dstu2.valueset.AdministrativeGenderEnum;
033import ca.uhn.fhir.model.dstu2.valueset.AdmitSourceEnum;
034import ca.uhn.fhir.model.dstu2.resource.AllergyIntolerance;
035import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCategoryEnum;
036import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCertaintyEnum;
037import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCriticalityEnum;
038import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceSeverityEnum;
039import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceStatusEnum;
040import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceTypeEnum;
041import ca.uhn.fhir.model.dstu2.valueset.AnimalSpeciesEnum;
042import ca.uhn.fhir.model.dstu2.composite.AnnotationDt;
043import ca.uhn.fhir.model.dstu2.valueset.AnswerFormatEnum;
044import ca.uhn.fhir.model.dstu2.resource.Appointment;
045import ca.uhn.fhir.model.dstu2.valueset.AppointmentStatusEnum;
046import ca.uhn.fhir.model.dstu2.valueset.AssertionDirectionTypeEnum;
047import ca.uhn.fhir.model.dstu2.valueset.AssertionOperatorTypeEnum;
048import ca.uhn.fhir.model.dstu2.valueset.AssertionResponseTypesEnum;
049import ca.uhn.fhir.model.dstu2.composite.AttachmentDt;
050import ca.uhn.fhir.model.dstu2.valueset.AuditEventActionEnum;
051import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectLifecycleEnum;
052import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectRoleEnum;
053import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectTypeEnum;
054import ca.uhn.fhir.model.dstu2.valueset.AuditEventOutcomeEnum;
055import ca.uhn.fhir.model.dstu2.valueset.AuditEventParticipantNetworkTypeEnum;
056import ca.uhn.fhir.model.dstu2.valueset.AuditEventSourceTypeEnum;
057import ca.uhn.fhir.model.dstu2.valueset.BindingStrengthEnum;
058import ca.uhn.fhir.model.dstu2.resource.BodySite;
059import ca.uhn.fhir.model.dstu2.valueset.BundleTypeEnum;
060import ca.uhn.fhir.model.dstu2.resource.CarePlan;
061import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityCategoryEnum;
062import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityStatusEnum;
063import ca.uhn.fhir.model.dstu2.valueset.CarePlanRelationshipEnum;
064import ca.uhn.fhir.model.dstu2.valueset.CarePlanStatusEnum;
065import ca.uhn.fhir.model.dstu2.resource.Claim;
066import ca.uhn.fhir.model.dstu2.resource.ClaimResponse;
067import ca.uhn.fhir.model.dstu2.valueset.ClaimTypeEnum;
068import ca.uhn.fhir.model.dstu2.resource.ClinicalImpression;
069import ca.uhn.fhir.model.dstu2.valueset.ClinicalImpressionStatusEnum;
070import ca.uhn.fhir.model.dstu2.composite.CodeableConceptDt;
071import ca.uhn.fhir.model.dstu2.composite.CodingDt;
072import ca.uhn.fhir.model.dstu2.resource.CommunicationRequest;
073import ca.uhn.fhir.model.dstu2.valueset.CommunicationRequestStatusEnum;
074import ca.uhn.fhir.model.dstu2.valueset.CommunicationStatusEnum;
075import ca.uhn.fhir.model.dstu2.resource.Composition;
076import ca.uhn.fhir.model.dstu2.valueset.CompositionAttestationModeEnum;
077import ca.uhn.fhir.model.dstu2.valueset.CompositionStatusEnum;
078import ca.uhn.fhir.model.dstu2.valueset.ConceptMapEquivalenceEnum;
079import ca.uhn.fhir.model.dstu2.resource.Condition;
080import ca.uhn.fhir.model.dstu2.valueset.ConditionCategoryCodesEnum;
081import ca.uhn.fhir.model.dstu2.valueset.ConditionClinicalStatusCodesEnum;
082import ca.uhn.fhir.model.dstu2.valueset.ConditionVerificationStatusEnum;
083import ca.uhn.fhir.model.dstu2.valueset.ConditionalDeleteStatusEnum;
084import ca.uhn.fhir.model.dstu2.valueset.ConditionsCodesEnum;
085import ca.uhn.fhir.model.dstu2.resource.Conformance;
086import ca.uhn.fhir.model.dstu2.valueset.ConformanceEventModeEnum;
087import ca.uhn.fhir.model.dstu2.valueset.ConformanceResourceStatusEnum;
088import ca.uhn.fhir.model.dstu2.valueset.ConformanceStatementKindEnum;
089import ca.uhn.fhir.model.dstu2.composite.ContactPointDt;
090import ca.uhn.fhir.model.dstu2.valueset.ContentTypeEnum;
091import ca.uhn.fhir.model.dstu2.resource.Contract;
092import ca.uhn.fhir.model.dstu2.valueset.ContractActionCodesEnum;
093import ca.uhn.fhir.model.dstu2.valueset.ContractActorRoleCodesEnum;
094import ca.uhn.fhir.model.dstu2.valueset.ContractSubtypeCodesEnum;
095import ca.uhn.fhir.model.dstu2.valueset.ContractTermTypeCodesEnum;
096import ca.uhn.fhir.model.dstu2.valueset.ContractTypeCodesEnum;
097import ca.uhn.fhir.model.dstu2.resource.Coverage;
098import ca.uhn.fhir.model.dstu2.valueset.DataElementStringencyEnum;
099import ca.uhn.fhir.model.dstu2.valueset.DaysOfWeekEnum;
100import ca.uhn.fhir.model.dstu2.valueset.DetectedIssueSeverityEnum;
101import ca.uhn.fhir.model.dstu2.resource.Device;
102import ca.uhn.fhir.model.dstu2.resource.DeviceComponent;
103import ca.uhn.fhir.model.dstu2.resource.DeviceMetric;
104import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationStateEnum;
105import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationTypeEnum;
106import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCategoryEnum;
107import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricColorEnum;
108import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricOperationalStatusEnum;
109import ca.uhn.fhir.model.dstu2.valueset.DeviceStatusEnum;
110import ca.uhn.fhir.model.dstu2.resource.DeviceUseRequest;
111import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestPriorityEnum;
112import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestStatusEnum;
113import ca.uhn.fhir.model.dstu2.resource.DiagnosticOrder;
114import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderPriorityEnum;
115import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderStatusEnum;
116import ca.uhn.fhir.model.dstu2.resource.DiagnosticReport;
117import ca.uhn.fhir.model.dstu2.valueset.DiagnosticReportStatusEnum;
118import ca.uhn.fhir.model.dstu2.valueset.DigitalMediaTypeEnum;
119import ca.uhn.fhir.model.dstu2.valueset.DocumentModeEnum;
120import ca.uhn.fhir.model.dstu2.resource.DocumentReference;
121import ca.uhn.fhir.model.dstu2.valueset.DocumentReferenceStatusEnum;
122import ca.uhn.fhir.model.dstu2.valueset.DocumentRelationshipTypeEnum;
123import ca.uhn.fhir.model.dstu2.composite.ElementDefinitionDt;
124import ca.uhn.fhir.model.dstu2.resource.EligibilityRequest;
125import ca.uhn.fhir.model.dstu2.resource.Encounter;
126import ca.uhn.fhir.model.dstu2.valueset.EncounterClassEnum;
127import ca.uhn.fhir.model.dstu2.valueset.EncounterLocationStatusEnum;
128import ca.uhn.fhir.model.dstu2.valueset.EncounterStateEnum;
129import ca.uhn.fhir.model.dstu2.valueset.EncounterTypeEnum;
130import ca.uhn.fhir.model.dstu2.resource.EnrollmentRequest;
131import ca.uhn.fhir.model.dstu2.valueset.EnteralFormulaTypeCodesEnum;
132import ca.uhn.fhir.model.dstu2.resource.EpisodeOfCare;
133import ca.uhn.fhir.model.dstu2.valueset.EpisodeOfCareStatusEnum;
134import ca.uhn.fhir.model.dstu2.valueset.ExceptionCodesEnum;
135import ca.uhn.fhir.model.dstu2.valueset.ExtensionContextEnum;
136import ca.uhn.fhir.model.dstu2.valueset.FamilyHistoryStatusEnum;
137import ca.uhn.fhir.model.dstu2.resource.FamilyMemberHistory;
138import ca.uhn.fhir.model.dstu2.valueset.FilterOperatorEnum;
139import ca.uhn.fhir.model.dstu2.valueset.FlagCategoryCodesEnum;
140import ca.uhn.fhir.model.dstu2.valueset.FlagStatusEnum;
141import ca.uhn.fhir.model.dstu2.valueset.FluidConsistencyTypeCodesEnum;
142import ca.uhn.fhir.model.dstu2.resource.Goal;
143import ca.uhn.fhir.model.dstu2.valueset.GoalCategoryEnum;
144import ca.uhn.fhir.model.dstu2.valueset.GoalPriorityEnum;
145import ca.uhn.fhir.model.dstu2.valueset.GoalStartEventEnum;
146import ca.uhn.fhir.model.dstu2.valueset.GoalStatusEnum;
147import ca.uhn.fhir.model.dstu2.valueset.GoalStatusReasonEnum;
148import ca.uhn.fhir.model.dstu2.resource.Group;
149import ca.uhn.fhir.model.dstu2.valueset.GroupTypeEnum;
150import ca.uhn.fhir.model.dstu2.valueset.GuideDependencyTypeEnum;
151import ca.uhn.fhir.model.dstu2.valueset.GuidePageKindEnum;
152import ca.uhn.fhir.model.dstu2.valueset.GuideResourcePurposeEnum;
153import ca.uhn.fhir.model.dstu2.valueset.HTTPVerbEnum;
154import ca.uhn.fhir.model.dstu2.resource.HealthcareService;
155import ca.uhn.fhir.model.dstu2.composite.HumanNameDt;
156import ca.uhn.fhir.model.dstu2.composite.IdentifierDt;
157import ca.uhn.fhir.model.dstu2.valueset.IdentifierTypeCodesEnum;
158import ca.uhn.fhir.model.dstu2.valueset.IdentityAssuranceLevelEnum;
159import ca.uhn.fhir.model.dstu2.resource.ImagingObjectSelection;
160import ca.uhn.fhir.model.dstu2.resource.ImagingStudy;
161import ca.uhn.fhir.model.dstu2.resource.Immunization;
162import ca.uhn.fhir.model.dstu2.valueset.ImmunizationReasonCodesEnum;
163import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRecommendationDateCriterionCodesEnum;
164import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRecommendationStatusCodesEnum;
165import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRouteCodesEnum;
166import ca.uhn.fhir.model.dstu2.valueset.InstanceAvailabilityEnum;
167import ca.uhn.fhir.model.dstu2.valueset.InterventionCodesEnum;
168import ca.uhn.fhir.model.dstu2.valueset.IssueSeverityEnum;
169import ca.uhn.fhir.model.dstu2.valueset.IssueTypeEnum;
170import ca.uhn.fhir.model.dstu2.valueset.KOStitleEnum;
171import ca.uhn.fhir.model.dstu2.valueset.LateralityEnum;
172import ca.uhn.fhir.model.dstu2.valueset.LinkTypeEnum;
173import ca.uhn.fhir.model.dstu2.valueset.ListModeEnum;
174import ca.uhn.fhir.model.dstu2.valueset.ListOrderCodesEnum;
175import ca.uhn.fhir.model.dstu2.valueset.ListStatusEnum;
176import ca.uhn.fhir.model.dstu2.resource.Location;
177import ca.uhn.fhir.model.dstu2.valueset.LocationModeEnum;
178import ca.uhn.fhir.model.dstu2.valueset.LocationStatusEnum;
179import ca.uhn.fhir.model.dstu2.valueset.LocationTypeEnum;
180import ca.uhn.fhir.model.dstu2.valueset.MaritalStatusCodesEnum;
181import ca.uhn.fhir.model.dstu2.valueset.MeasmntPrincipleEnum;
182import ca.uhn.fhir.model.dstu2.resource.Media;
183import ca.uhn.fhir.model.dstu2.resource.Medication;
184import ca.uhn.fhir.model.dstu2.valueset.MedicationAdministrationStatusEnum;
185import ca.uhn.fhir.model.dstu2.valueset.MedicationDispenseStatusEnum;
186import ca.uhn.fhir.model.dstu2.resource.MedicationOrder;
187import ca.uhn.fhir.model.dstu2.valueset.MedicationOrderStatusEnum;
188import ca.uhn.fhir.model.dstu2.resource.MedicationStatement;
189import ca.uhn.fhir.model.dstu2.valueset.MedicationStatementStatusEnum;
190import ca.uhn.fhir.model.dstu2.valueset.MessageEventEnum;
191import ca.uhn.fhir.model.dstu2.valueset.MessageSignificanceCategoryEnum;
192import ca.uhn.fhir.model.dstu2.valueset.MessageTransportEnum;
193import ca.uhn.fhir.model.dstu2.resource.NamingSystem;
194import ca.uhn.fhir.model.dstu2.valueset.NamingSystemIdentifierTypeEnum;
195import ca.uhn.fhir.model.dstu2.valueset.NamingSystemTypeEnum;
196import ca.uhn.fhir.model.dstu2.valueset.NoteTypeEnum;
197import ca.uhn.fhir.model.dstu2.valueset.NutrientModifierCodesEnum;
198import ca.uhn.fhir.model.dstu2.resource.NutritionOrder;
199import ca.uhn.fhir.model.dstu2.valueset.NutritionOrderStatusEnum;
200import ca.uhn.fhir.model.dstu2.resource.Observation;
201import ca.uhn.fhir.model.dstu2.valueset.ObservationCategoryCodesEnum;
202import ca.uhn.fhir.model.dstu2.valueset.ObservationRelationshipTypeEnum;
203import ca.uhn.fhir.model.dstu2.valueset.ObservationStatusEnum;
204import ca.uhn.fhir.model.dstu2.resource.OperationDefinition;
205import ca.uhn.fhir.model.dstu2.valueset.OperationKindEnum;
206import ca.uhn.fhir.model.dstu2.resource.OperationOutcome;
207import ca.uhn.fhir.model.dstu2.valueset.OperationParameterUseEnum;
208import ca.uhn.fhir.model.dstu2.resource.Order;
209import ca.uhn.fhir.model.dstu2.valueset.OrderStatusEnum;
210import ca.uhn.fhir.model.dstu2.resource.Organization;
211import ca.uhn.fhir.model.dstu2.valueset.OrganizationTypeEnum;
212import ca.uhn.fhir.model.dstu2.valueset.ParticipantRequiredEnum;
213import ca.uhn.fhir.model.dstu2.valueset.ParticipantStatusEnum;
214import ca.uhn.fhir.model.dstu2.valueset.ParticipantTypeEnum;
215import ca.uhn.fhir.model.dstu2.valueset.ParticipationStatusEnum;
216import ca.uhn.fhir.model.dstu2.resource.Patient;
217import ca.uhn.fhir.model.dstu2.valueset.PayeeTypeCodesEnum;
218import ca.uhn.fhir.model.dstu2.valueset.PaymentStatusCodesEnum;
219import ca.uhn.fhir.model.dstu2.valueset.PaymentTypeCodesEnum;
220import ca.uhn.fhir.model.dstu2.composite.PeriodDt;
221import ca.uhn.fhir.model.dstu2.resource.Person;
222import ca.uhn.fhir.model.dstu2.resource.Practitioner;
223import ca.uhn.fhir.model.dstu2.valueset.PractitionerRoleEnum;
224import ca.uhn.fhir.model.dstu2.valueset.PractitionerSpecialtyEnum;
225import ca.uhn.fhir.model.dstu2.valueset.PriorityCodesEnum;
226import ca.uhn.fhir.model.dstu2.resource.Procedure;
227import ca.uhn.fhir.model.dstu2.resource.ProcedureRequest;
228import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestPriorityEnum;
229import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestStatusEnum;
230import ca.uhn.fhir.model.dstu2.valueset.ProcedureStatusEnum;
231import ca.uhn.fhir.model.dstu2.resource.ProcessRequest;
232import ca.uhn.fhir.model.dstu2.valueset.ProvenanceEntityRoleEnum;
233import ca.uhn.fhir.model.dstu2.composite.QuantityDt;
234import ca.uhn.fhir.model.dstu2.resource.Questionnaire;
235import ca.uhn.fhir.model.dstu2.resource.QuestionnaireResponse;
236import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireResponseStatusEnum;
237import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireStatusEnum;
238import ca.uhn.fhir.model.dstu2.composite.RangeDt;
239import ca.uhn.fhir.model.dstu2.composite.RatioDt;
240import ca.uhn.fhir.model.dstu2.valueset.ReferralMethodEnum;
241import ca.uhn.fhir.model.dstu2.resource.ReferralRequest;
242import ca.uhn.fhir.model.dstu2.valueset.ReferralStatusEnum;
243import ca.uhn.fhir.model.dstu2.resource.RelatedPerson;
244import ca.uhn.fhir.model.dstu2.valueset.RemittanceOutcomeEnum;
245import ca.uhn.fhir.model.dstu2.valueset.ResourceTypeEnum;
246import ca.uhn.fhir.model.dstu2.valueset.ResourceVersionPolicyEnum;
247import ca.uhn.fhir.model.dstu2.valueset.ResponseTypeEnum;
248import ca.uhn.fhir.model.dstu2.valueset.RestfulConformanceModeEnum;
249import ca.uhn.fhir.model.dstu2.valueset.RestfulSecurityServiceEnum;
250import ca.uhn.fhir.model.dstu2.resource.RiskAssessment;
251import ca.uhn.fhir.model.dstu2.valueset.RulesetCodesEnum;
252import ca.uhn.fhir.model.dstu2.composite.SampledDataDt;
253import ca.uhn.fhir.model.dstu2.resource.Schedule;
254import ca.uhn.fhir.model.dstu2.valueset.SearchEntryModeEnum;
255import ca.uhn.fhir.model.dstu2.valueset.SearchModifierCodeEnum;
256import ca.uhn.fhir.model.dstu2.valueset.SearchParamTypeEnum;
257import ca.uhn.fhir.model.dstu2.valueset.ServiceProvisionConditionsEnum;
258import ca.uhn.fhir.model.dstu2.composite.SignatureDt;
259import ca.uhn.fhir.model.dstu2.resource.Slot;
260import ca.uhn.fhir.model.dstu2.valueset.SlotStatusEnum;
261import ca.uhn.fhir.model.dstu2.resource.Specimen;
262import ca.uhn.fhir.model.dstu2.valueset.SpecimenCollectionMethodEnum;
263import ca.uhn.fhir.model.dstu2.valueset.SpecimenStatusEnum;
264import ca.uhn.fhir.model.dstu2.resource.StructureDefinition;
265import ca.uhn.fhir.model.dstu2.valueset.StructureDefinitionKindEnum;
266import ca.uhn.fhir.model.dstu2.valueset.SubscriptionChannelTypeEnum;
267import ca.uhn.fhir.model.dstu2.valueset.SubscriptionStatusEnum;
268import ca.uhn.fhir.model.dstu2.valueset.SubscriptionTagEnum;
269import ca.uhn.fhir.model.dstu2.resource.Substance;
270import ca.uhn.fhir.model.dstu2.valueset.SubstanceCategoryCodesEnum;
271import ca.uhn.fhir.model.dstu2.valueset.SupplementTypeCodesEnum;
272import ca.uhn.fhir.model.dstu2.valueset.SupplyDeliveryStatusEnum;
273import ca.uhn.fhir.model.dstu2.resource.SupplyRequest;
274import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestReasonEnum;
275import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestStatusEnum;
276import ca.uhn.fhir.model.dstu2.valueset.SurfaceCodesEnum;
277import ca.uhn.fhir.model.dstu2.valueset.SystemRestfulInteractionEnum;
278import ca.uhn.fhir.model.api.TemporalPrecisionEnum;
279import ca.uhn.fhir.model.dstu2.valueset.TextureModifiedFoodTypeCodesEnum;
280import ca.uhn.fhir.model.dstu2.valueset.TextureModifierCodesEnum;
281import ca.uhn.fhir.model.dstu2.composite.TimingDt;
282import ca.uhn.fhir.model.dstu2.valueset.TransactionModeEnum;
283import ca.uhn.fhir.model.dstu2.valueset.TypeRestfulInteractionEnum;
284import ca.uhn.fhir.model.dstu2.valueset.UDICodesEnum;
285import ca.uhn.fhir.model.dstu2.valueset.UnknownContentCodeEnum;
286import ca.uhn.fhir.model.dstu2.valueset.UseEnum;
287import ca.uhn.fhir.model.dstu2.resource.ValueSet;
288import ca.uhn.fhir.model.dstu2.valueset.VisionBaseEnum;
289import ca.uhn.fhir.model.dstu2.valueset.VisionEyesEnum;
290import ca.uhn.fhir.model.dstu2.resource.VisionPrescription;
291import ca.uhn.fhir.model.dstu2.valueset.XPathUsageTypeEnum;
292import ca.uhn.fhir.model.api.IResource;
293import ca.uhn.fhir.model.dstu2.composite.AgeDt;
294import ca.uhn.fhir.model.dstu2.composite.BoundCodeableConceptDt;
295import ca.uhn.fhir.model.dstu2.composite.DurationDt;
296import ca.uhn.fhir.model.dstu2.composite.MoneyDt;
297import ca.uhn.fhir.model.dstu2.composite.NarrativeDt;
298import ca.uhn.fhir.model.dstu2.composite.ResourceReferenceDt;
299import ca.uhn.fhir.model.dstu2.composite.SimpleQuantityDt;
300import ca.uhn.fhir.model.primitive.Base64BinaryDt;
301import ca.uhn.fhir.model.primitive.BooleanDt;
302import ca.uhn.fhir.model.primitive.BoundCodeDt;
303import ca.uhn.fhir.model.primitive.CodeDt;
304import ca.uhn.fhir.model.primitive.DateDt;
305import ca.uhn.fhir.model.primitive.DateTimeDt;
306import ca.uhn.fhir.model.primitive.DecimalDt;
307import ca.uhn.fhir.model.primitive.IdDt;
308import ca.uhn.fhir.model.primitive.InstantDt;
309import ca.uhn.fhir.model.primitive.IntegerDt;
310import ca.uhn.fhir.model.primitive.OidDt;
311import ca.uhn.fhir.model.primitive.PositiveIntDt;
312import ca.uhn.fhir.model.primitive.StringDt;
313import ca.uhn.fhir.model.primitive.TimeDt;
314import ca.uhn.fhir.model.primitive.UnsignedIntDt;
315import ca.uhn.fhir.model.primitive.UriDt;
316
317
318/**
319 * HAPI/FHIR <b>ImplementationGuide</b> Resource
320 * (conformance.misc)
321 *
322 * <p>
323 * <b>Definition:</b>
324 * A set of rules or how FHIR is used to solve a particular problem. This resource is used to gather all the parts of an implementation guide into a logical whole, and to publish a computable definition of all the parts
325 * </p> 
326 *
327 * <p>
328 * <b>Requirements:</b>
329 * An implementation guide is able to define default profiles that must apply to any use of a resource, so validation services may need to take one or more implementation guide resources when validating.
330 * </p> 
331 *
332 * <p>
333 * <b>Profile Definition:</b>
334 * <a href="http://hl7.org/fhir/profiles/ImplementationGuide">http://hl7.org/fhir/profiles/ImplementationGuide</a> 
335 * </p>
336 *
337 */
338@ResourceDef(name="ImplementationGuide", profile="http://hl7.org/fhir/profiles/ImplementationGuide", id="implementationguide")
339public class ImplementationGuide extends ca.uhn.fhir.model.dstu2.resource.BaseResource
340    implements  IResource     {
341
342        /**
343         * Search parameter constant for <b>url</b>
344         * <p>
345         * Description: <b></b><br>
346         * Type: <b>uri</b><br>
347         * Path: <b>ImplementationGuide.url</b><br>
348         * </p>
349         */
350        @SearchParamDefinition(name="url", path="ImplementationGuide.url", description="", type="uri"  )
351        public static final String SP_URL = "url";
352
353        /**
354         * <b>Fluent Client</b> search parameter constant for <b>url</b>
355         * <p>
356         * Description: <b></b><br>
357         * Type: <b>uri</b><br>
358         * Path: <b>ImplementationGuide.url</b><br>
359         * </p>
360         */
361        public static final UriClientParam URL = new UriClientParam(SP_URL);
362
363        /**
364         * Search parameter constant for <b>version</b>
365         * <p>
366         * Description: <b>The version identifier of the implementation guide</b><br>
367         * Type: <b>token</b><br>
368         * Path: <b>ImplementationGuide.version</b><br>
369         * </p>
370         */
371        @SearchParamDefinition(name="version", path="ImplementationGuide.version", description="The version identifier of the implementation guide", type="token"  )
372        public static final String SP_VERSION = "version";
373
374        /**
375         * <b>Fluent Client</b> search parameter constant for <b>version</b>
376         * <p>
377         * Description: <b>The version identifier of the implementation guide</b><br>
378         * Type: <b>token</b><br>
379         * Path: <b>ImplementationGuide.version</b><br>
380         * </p>
381         */
382        public static final TokenClientParam VERSION = new TokenClientParam(SP_VERSION);
383
384        /**
385         * Search parameter constant for <b>name</b>
386         * <p>
387         * Description: <b>Name of the implementation guide</b><br>
388         * Type: <b>string</b><br>
389         * Path: <b>ImplementationGuide.name</b><br>
390         * </p>
391         */
392        @SearchParamDefinition(name="name", path="ImplementationGuide.name", description="Name of the implementation guide", type="string"  )
393        public static final String SP_NAME = "name";
394
395        /**
396         * <b>Fluent Client</b> search parameter constant for <b>name</b>
397         * <p>
398         * Description: <b>Name of the implementation guide</b><br>
399         * Type: <b>string</b><br>
400         * Path: <b>ImplementationGuide.name</b><br>
401         * </p>
402         */
403        public static final StringClientParam NAME = new StringClientParam(SP_NAME);
404
405        /**
406         * Search parameter constant for <b>publisher</b>
407         * <p>
408         * Description: <b>Name of the publisher of the implementation guide</b><br>
409         * Type: <b>string</b><br>
410         * Path: <b>ImplementationGuide.publisher</b><br>
411         * </p>
412         */
413        @SearchParamDefinition(name="publisher", path="ImplementationGuide.publisher", description="Name of the publisher of the implementation guide", type="string"  )
414        public static final String SP_PUBLISHER = "publisher";
415
416        /**
417         * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
418         * <p>
419         * Description: <b>Name of the publisher of the implementation guide</b><br>
420         * Type: <b>string</b><br>
421         * Path: <b>ImplementationGuide.publisher</b><br>
422         * </p>
423         */
424        public static final StringClientParam PUBLISHER = new StringClientParam(SP_PUBLISHER);
425
426        /**
427         * Search parameter constant for <b>description</b>
428         * <p>
429         * Description: <b>Text search in the description of the implementation guide</b><br>
430         * Type: <b>string</b><br>
431         * Path: <b>ImplementationGuide.description</b><br>
432         * </p>
433         */
434        @SearchParamDefinition(name="description", path="ImplementationGuide.description", description="Text search in the description of the implementation guide", type="string"  )
435        public static final String SP_DESCRIPTION = "description";
436
437        /**
438         * <b>Fluent Client</b> search parameter constant for <b>description</b>
439         * <p>
440         * Description: <b>Text search in the description of the implementation guide</b><br>
441         * Type: <b>string</b><br>
442         * Path: <b>ImplementationGuide.description</b><br>
443         * </p>
444         */
445        public static final StringClientParam DESCRIPTION = new StringClientParam(SP_DESCRIPTION);
446
447        /**
448         * Search parameter constant for <b>status</b>
449         * <p>
450         * Description: <b>The current status of the implementation guide</b><br>
451         * Type: <b>token</b><br>
452         * Path: <b>ImplementationGuide.status</b><br>
453         * </p>
454         */
455        @SearchParamDefinition(name="status", path="ImplementationGuide.status", description="The current status of the implementation guide", type="token"  )
456        public static final String SP_STATUS = "status";
457
458        /**
459         * <b>Fluent Client</b> search parameter constant for <b>status</b>
460         * <p>
461         * Description: <b>The current status of the implementation guide</b><br>
462         * Type: <b>token</b><br>
463         * Path: <b>ImplementationGuide.status</b><br>
464         * </p>
465         */
466        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
467
468        /**
469         * Search parameter constant for <b>date</b>
470         * <p>
471         * Description: <b>The implementation guide publication date</b><br>
472         * Type: <b>date</b><br>
473         * Path: <b>ImplementationGuide.date</b><br>
474         * </p>
475         */
476        @SearchParamDefinition(name="date", path="ImplementationGuide.date", description="The implementation guide publication date", type="date"  )
477        public static final String SP_DATE = "date";
478
479        /**
480         * <b>Fluent Client</b> search parameter constant for <b>date</b>
481         * <p>
482         * Description: <b>The implementation guide publication date</b><br>
483         * Type: <b>date</b><br>
484         * Path: <b>ImplementationGuide.date</b><br>
485         * </p>
486         */
487        public static final DateClientParam DATE = new DateClientParam(SP_DATE);
488
489        /**
490         * Search parameter constant for <b>context</b>
491         * <p>
492         * Description: <b>A use context assigned to the structure</b><br>
493         * Type: <b>token</b><br>
494         * Path: <b>ImplementationGuide.useContext</b><br>
495         * </p>
496         */
497        @SearchParamDefinition(name="context", path="ImplementationGuide.useContext", description="A use context assigned to the structure", type="token"  )
498        public static final String SP_CONTEXT = "context";
499
500        /**
501         * <b>Fluent Client</b> search parameter constant for <b>context</b>
502         * <p>
503         * Description: <b>A use context assigned to the structure</b><br>
504         * Type: <b>token</b><br>
505         * Path: <b>ImplementationGuide.useContext</b><br>
506         * </p>
507         */
508        public static final TokenClientParam CONTEXT = new TokenClientParam(SP_CONTEXT);
509
510        /**
511         * Search parameter constant for <b>experimental</b>
512         * <p>
513         * Description: <b></b><br>
514         * Type: <b>token</b><br>
515         * Path: <b>ImplementationGuide.experimental</b><br>
516         * </p>
517         */
518        @SearchParamDefinition(name="experimental", path="ImplementationGuide.experimental", description="", type="token"  )
519        public static final String SP_EXPERIMENTAL = "experimental";
520
521        /**
522         * <b>Fluent Client</b> search parameter constant for <b>experimental</b>
523         * <p>
524         * Description: <b></b><br>
525         * Type: <b>token</b><br>
526         * Path: <b>ImplementationGuide.experimental</b><br>
527         * </p>
528         */
529        public static final TokenClientParam EXPERIMENTAL = new TokenClientParam(SP_EXPERIMENTAL);
530
531        /**
532         * Search parameter constant for <b>dependency</b>
533         * <p>
534         * Description: <b></b><br>
535         * Type: <b>uri</b><br>
536         * Path: <b>ImplementationGuide.dependency.uri</b><br>
537         * </p>
538         */
539        @SearchParamDefinition(name="dependency", path="ImplementationGuide.dependency.uri", description="", type="uri"  )
540        public static final String SP_DEPENDENCY = "dependency";
541
542        /**
543         * <b>Fluent Client</b> search parameter constant for <b>dependency</b>
544         * <p>
545         * Description: <b></b><br>
546         * Type: <b>uri</b><br>
547         * Path: <b>ImplementationGuide.dependency.uri</b><br>
548         * </p>
549         */
550        public static final UriClientParam DEPENDENCY = new UriClientParam(SP_DEPENDENCY);
551
552
553
554        @Child(name="url", type=UriDt.class, order=0, min=1, max=1, summary=true, modifier=false)       
555        @Description(
556                shortDefinition="id",
557                formalDefinition="An absolute URL that is used to identify this implementation guide 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 implementation guide is (or will be) published"
558        )
559        private UriDt myUrl;
560        
561        @Child(name="version", type=StringDt.class, order=1, min=0, max=1, summary=true, modifier=false)        
562        @Description(
563                shortDefinition="id.version",
564                formalDefinition="The identifier that is used to identify this version of the Implementation Guide when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the Implementation Guide author manually"
565        )
566        private StringDt myVersion;
567        
568        @Child(name="name", type=StringDt.class, order=2, min=1, max=1, summary=true, modifier=false)   
569        @Description(
570                shortDefinition="",
571                formalDefinition="A free text natural language name identifying the Implementation Guide"
572        )
573        private StringDt myName;
574        
575        @Child(name="status", type=CodeDt.class, order=3, min=1, max=1, summary=true, modifier=false)   
576        @Description(
577                shortDefinition="status",
578                formalDefinition="The status of the Implementation Guide"
579        )
580        private BoundCodeDt<ConformanceResourceStatusEnum> myStatus;
581        
582        @Child(name="experimental", type=BooleanDt.class, order=4, min=0, max=1, summary=true, modifier=false)  
583        @Description(
584                shortDefinition="class",
585                formalDefinition="This Implementation Guide was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage"
586        )
587        private BooleanDt myExperimental;
588        
589        @Child(name="publisher", type=StringDt.class, order=5, min=0, max=1, summary=true, modifier=false)      
590        @Description(
591                shortDefinition="who.witness",
592                formalDefinition="The name of the individual or organization that published the implementation guide"
593        )
594        private StringDt myPublisher;
595        
596        @Child(name="contact", order=6, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
597        @Description(
598                shortDefinition="",
599                formalDefinition="Contacts to assist a user in finding and communicating with the publisher"
600        )
601        private java.util.List<Contact> myContact;
602        
603        @Child(name="date", type=DateTimeDt.class, order=7, min=0, max=1, summary=true, modifier=false) 
604        @Description(
605                shortDefinition="when.recorded",
606                formalDefinition="The date this version of the implementation guide was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the implementation guide changes"
607        )
608        private DateTimeDt myDate;
609        
610        @Child(name="description", type=StringDt.class, order=8, min=0, max=1, summary=true, modifier=false)    
611        @Description(
612                shortDefinition="",
613                formalDefinition="A free text natural language description of the Implementation Guide and its use"
614        )
615        private StringDt myDescription;
616        
617        @Child(name="useContext", type=CodeableConceptDt.class, order=9, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)  
618        @Description(
619                shortDefinition="",
620                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 implementation guides. The most common use of this element is to represent the country / jurisdiction for which this implementation guide was defined"
621        )
622        private java.util.List<CodeableConceptDt> myUseContext;
623        
624        @Child(name="copyright", type=StringDt.class, order=10, min=0, max=1, summary=false, modifier=false)    
625        @Description(
626                shortDefinition="",
627                formalDefinition="A copyright statement relating to the implementation guide and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings"
628        )
629        private StringDt myCopyright;
630        
631        @Child(name="fhirVersion", type=IdDt.class, order=11, min=0, max=1, summary=true, modifier=false)       
632        @Description(
633                shortDefinition="",
634                formalDefinition="The version of the FHIR specification on which this ImplementationGuide is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is $version$ for this version"
635        )
636        private IdDt myFhirVersion;
637        
638        @Child(name="dependency", order=12, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)       
639        @Description(
640                shortDefinition="",
641                formalDefinition="Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides"
642        )
643        private java.util.List<Dependency> myDependency;
644        
645        @Child(name="package", order=13, min=1, max=Child.MAX_UNLIMITED, summary=true, modifier=false)  
646        @Description(
647                shortDefinition="",
648                formalDefinition="A logical group of resources. Logical groups can be used when building pages"
649        )
650        private java.util.List<Package> myPackage;
651        
652        @Child(name="global", order=14, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
653        @Description(
654                shortDefinition="",
655                formalDefinition="A set of profiles that all resources covered by this implementation guide must conform to"
656        )
657        private java.util.List<Global> myGlobal;
658        
659        @Child(name="binary", type=UriDt.class, order=15, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
660        @Description(
661                shortDefinition="",
662                formalDefinition="A binary file that is included in the  implementation guide when it is published"
663        )
664        private java.util.List<UriDt> myBinary;
665        
666        @Child(name="page", order=16, min=1, max=1, summary=true, modifier=false)       
667        @Description(
668                shortDefinition="",
669                formalDefinition="A page / section in the implementation guide. The root page is the implementation guide home page"
670        )
671        private Page myPage;
672        
673
674        @Override
675        public boolean isEmpty() {
676                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myUrl,  myVersion,  myName,  myStatus,  myExperimental,  myPublisher,  myContact,  myDate,  myDescription,  myUseContext,  myCopyright,  myFhirVersion,  myDependency,  myPackage,  myGlobal,  myBinary,  myPage);
677        }
678        
679        @Override
680        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
681                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myUrl, myVersion, myName, myStatus, myExperimental, myPublisher, myContact, myDate, myDescription, myUseContext, myCopyright, myFhirVersion, myDependency, myPackage, myGlobal, myBinary, myPage);
682        }
683
684        /**
685         * Gets the value(s) for <b>url</b> (id).
686         * creating it if it does
687         * not exist. Will not return <code>null</code>.
688         *
689     * <p>
690     * <b>Definition:</b>
691     * An absolute URL that is used to identify this implementation guide 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 implementation guide is (or will be) published
692     * </p> 
693         */
694        public UriDt getUrlElement() {  
695                if (myUrl == null) {
696                        myUrl = new UriDt();
697                }
698                return myUrl;
699        }
700
701        
702        /**
703         * Gets the value(s) for <b>url</b> (id).
704         * creating it if it does
705         * not exist. Will not return <code>null</code>.
706         *
707     * <p>
708     * <b>Definition:</b>
709     * An absolute URL that is used to identify this implementation guide 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 implementation guide is (or will be) published
710     * </p> 
711         */
712        public String getUrl() {  
713                return getUrlElement().getValue();
714        }
715
716        /**
717         * Sets the value(s) for <b>url</b> (id)
718         *
719     * <p>
720     * <b>Definition:</b>
721     * An absolute URL that is used to identify this implementation guide 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 implementation guide is (or will be) published
722     * </p> 
723         */
724        public ImplementationGuide setUrl(UriDt theValue) {
725                myUrl = theValue;
726                return this;
727        }
728        
729        
730
731        /**
732         * Sets the value for <b>url</b> (id)
733         *
734     * <p>
735     * <b>Definition:</b>
736     * An absolute URL that is used to identify this implementation guide 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 implementation guide is (or will be) published
737     * </p> 
738         */
739        public ImplementationGuide setUrl( String theUri) {
740                myUrl = new UriDt(theUri); 
741                return this; 
742        }
743
744 
745        /**
746         * Gets the value(s) for <b>version</b> (id.version).
747         * creating it if it does
748         * not exist. Will not return <code>null</code>.
749         *
750     * <p>
751     * <b>Definition:</b>
752     * The identifier that is used to identify this version of the Implementation Guide when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the Implementation Guide author manually
753     * </p> 
754         */
755        public StringDt getVersionElement() {  
756                if (myVersion == null) {
757                        myVersion = new StringDt();
758                }
759                return myVersion;
760        }
761
762        
763        /**
764         * Gets the value(s) for <b>version</b> (id.version).
765         * creating it if it does
766         * not exist. Will not return <code>null</code>.
767         *
768     * <p>
769     * <b>Definition:</b>
770     * The identifier that is used to identify this version of the Implementation Guide when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the Implementation Guide author manually
771     * </p> 
772         */
773        public String getVersion() {  
774                return getVersionElement().getValue();
775        }
776
777        /**
778         * Sets the value(s) for <b>version</b> (id.version)
779         *
780     * <p>
781     * <b>Definition:</b>
782     * The identifier that is used to identify this version of the Implementation Guide when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the Implementation Guide author manually
783     * </p> 
784         */
785        public ImplementationGuide setVersion(StringDt theValue) {
786                myVersion = theValue;
787                return this;
788        }
789        
790        
791
792        /**
793         * Sets the value for <b>version</b> (id.version)
794         *
795     * <p>
796     * <b>Definition:</b>
797     * The identifier that is used to identify this version of the Implementation Guide when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the Implementation Guide author manually
798     * </p> 
799         */
800        public ImplementationGuide setVersion( String theString) {
801                myVersion = new StringDt(theString); 
802                return this; 
803        }
804
805 
806        /**
807         * Gets the value(s) for <b>name</b> ().
808         * creating it if it does
809         * not exist. Will not return <code>null</code>.
810         *
811     * <p>
812     * <b>Definition:</b>
813     * A free text natural language name identifying the Implementation Guide
814     * </p> 
815         */
816        public StringDt getNameElement() {  
817                if (myName == null) {
818                        myName = new StringDt();
819                }
820                return myName;
821        }
822
823        
824        /**
825         * Gets the value(s) for <b>name</b> ().
826         * creating it if it does
827         * not exist. Will not return <code>null</code>.
828         *
829     * <p>
830     * <b>Definition:</b>
831     * A free text natural language name identifying the Implementation Guide
832     * </p> 
833         */
834        public String getName() {  
835                return getNameElement().getValue();
836        }
837
838        /**
839         * Sets the value(s) for <b>name</b> ()
840         *
841     * <p>
842     * <b>Definition:</b>
843     * A free text natural language name identifying the Implementation Guide
844     * </p> 
845         */
846        public ImplementationGuide setName(StringDt theValue) {
847                myName = theValue;
848                return this;
849        }
850        
851        
852
853        /**
854         * Sets the value for <b>name</b> ()
855         *
856     * <p>
857     * <b>Definition:</b>
858     * A free text natural language name identifying the Implementation Guide
859     * </p> 
860         */
861        public ImplementationGuide setName( String theString) {
862                myName = new StringDt(theString); 
863                return this; 
864        }
865
866 
867        /**
868         * Gets the value(s) for <b>status</b> (status).
869         * creating it if it does
870         * not exist. Will not return <code>null</code>.
871         *
872     * <p>
873     * <b>Definition:</b>
874     * The status of the Implementation Guide
875     * </p> 
876         */
877        public BoundCodeDt<ConformanceResourceStatusEnum> getStatusElement() {  
878                if (myStatus == null) {
879                        myStatus = new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER);
880                }
881                return myStatus;
882        }
883
884        
885        /**
886         * Gets the value(s) for <b>status</b> (status).
887         * creating it if it does
888         * not exist. Will not return <code>null</code>.
889         *
890     * <p>
891     * <b>Definition:</b>
892     * The status of the Implementation Guide
893     * </p> 
894         */
895        public String getStatus() {  
896                return getStatusElement().getValue();
897        }
898
899        /**
900         * Sets the value(s) for <b>status</b> (status)
901         *
902     * <p>
903     * <b>Definition:</b>
904     * The status of the Implementation Guide
905     * </p> 
906         */
907        public ImplementationGuide setStatus(BoundCodeDt<ConformanceResourceStatusEnum> theValue) {
908                myStatus = theValue;
909                return this;
910        }
911        
912        
913
914        /**
915         * Sets the value(s) for <b>status</b> (status)
916         *
917     * <p>
918     * <b>Definition:</b>
919     * The status of the Implementation Guide
920     * </p> 
921         */
922        public ImplementationGuide setStatus(ConformanceResourceStatusEnum theValue) {
923                setStatus(new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER, theValue));
924                
925/*
926                getStatusElement().setValueAsEnum(theValue);
927*/
928                return this;
929        }
930
931  
932        /**
933         * Gets the value(s) for <b>experimental</b> (class).
934         * creating it if it does
935         * not exist. Will not return <code>null</code>.
936         *
937     * <p>
938     * <b>Definition:</b>
939     * This Implementation Guide was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
940     * </p> 
941         */
942        public BooleanDt getExperimentalElement() {  
943                if (myExperimental == null) {
944                        myExperimental = new BooleanDt();
945                }
946                return myExperimental;
947        }
948
949        
950        /**
951         * Gets the value(s) for <b>experimental</b> (class).
952         * creating it if it does
953         * not exist. Will not return <code>null</code>.
954         *
955     * <p>
956     * <b>Definition:</b>
957     * This Implementation Guide was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
958     * </p> 
959         */
960        public Boolean getExperimental() {  
961                return getExperimentalElement().getValue();
962        }
963
964        /**
965         * Sets the value(s) for <b>experimental</b> (class)
966         *
967     * <p>
968     * <b>Definition:</b>
969     * This Implementation Guide was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
970     * </p> 
971         */
972        public ImplementationGuide setExperimental(BooleanDt theValue) {
973                myExperimental = theValue;
974                return this;
975        }
976        
977        
978
979        /**
980         * Sets the value for <b>experimental</b> (class)
981         *
982     * <p>
983     * <b>Definition:</b>
984     * This Implementation Guide was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
985     * </p> 
986         */
987        public ImplementationGuide setExperimental( boolean theBoolean) {
988                myExperimental = new BooleanDt(theBoolean); 
989                return this; 
990        }
991
992 
993        /**
994         * Gets the value(s) for <b>publisher</b> (who.witness).
995         * creating it if it does
996         * not exist. Will not return <code>null</code>.
997         *
998     * <p>
999     * <b>Definition:</b>
1000     * The name of the individual or organization that published the implementation guide
1001     * </p> 
1002         */
1003        public StringDt getPublisherElement() {  
1004                if (myPublisher == null) {
1005                        myPublisher = new StringDt();
1006                }
1007                return myPublisher;
1008        }
1009
1010        
1011        /**
1012         * Gets the value(s) for <b>publisher</b> (who.witness).
1013         * creating it if it does
1014         * not exist. Will not return <code>null</code>.
1015         *
1016     * <p>
1017     * <b>Definition:</b>
1018     * The name of the individual or organization that published the implementation guide
1019     * </p> 
1020         */
1021        public String getPublisher() {  
1022                return getPublisherElement().getValue();
1023        }
1024
1025        /**
1026         * Sets the value(s) for <b>publisher</b> (who.witness)
1027         *
1028     * <p>
1029     * <b>Definition:</b>
1030     * The name of the individual or organization that published the implementation guide
1031     * </p> 
1032         */
1033        public ImplementationGuide setPublisher(StringDt theValue) {
1034                myPublisher = theValue;
1035                return this;
1036        }
1037        
1038        
1039
1040        /**
1041         * Sets the value for <b>publisher</b> (who.witness)
1042         *
1043     * <p>
1044     * <b>Definition:</b>
1045     * The name of the individual or organization that published the implementation guide
1046     * </p> 
1047         */
1048        public ImplementationGuide setPublisher( String theString) {
1049                myPublisher = new StringDt(theString); 
1050                return this; 
1051        }
1052
1053 
1054        /**
1055         * Gets the value(s) for <b>contact</b> ().
1056         * creating it if it does
1057         * not exist. Will not return <code>null</code>.
1058         *
1059     * <p>
1060     * <b>Definition:</b>
1061     * Contacts to assist a user in finding and communicating with the publisher
1062     * </p> 
1063         */
1064        public java.util.List<Contact> getContact() {  
1065                if (myContact == null) {
1066                        myContact = new java.util.ArrayList<Contact>();
1067                }
1068                return myContact;
1069        }
1070
1071        /**
1072         * Sets the value(s) for <b>contact</b> ()
1073         *
1074     * <p>
1075     * <b>Definition:</b>
1076     * Contacts to assist a user in finding and communicating with the publisher
1077     * </p> 
1078         */
1079        public ImplementationGuide setContact(java.util.List<Contact> theValue) {
1080                myContact = theValue;
1081                return this;
1082        }
1083        
1084        
1085
1086        /**
1087         * Adds and returns a new value for <b>contact</b> ()
1088         *
1089     * <p>
1090     * <b>Definition:</b>
1091     * Contacts to assist a user in finding and communicating with the publisher
1092     * </p> 
1093         */
1094        public Contact addContact() {
1095                Contact newType = new Contact();
1096                getContact().add(newType);
1097                return newType; 
1098        }
1099
1100        /**
1101         * Adds a given new value for <b>contact</b> ()
1102         *
1103         * <p>
1104         * <b>Definition:</b>
1105         * Contacts to assist a user in finding and communicating with the publisher
1106         * </p>
1107         * @param theValue The contact to add (must not be <code>null</code>)
1108         */
1109        public ImplementationGuide addContact(Contact theValue) {
1110                if (theValue == null) {
1111                        throw new NullPointerException("theValue must not be null");
1112                }
1113                getContact().add(theValue);
1114                return this;
1115        }
1116
1117        /**
1118         * Gets the first repetition for <b>contact</b> (),
1119         * creating it if it does not already exist.
1120         *
1121     * <p>
1122     * <b>Definition:</b>
1123     * Contacts to assist a user in finding and communicating with the publisher
1124     * </p> 
1125         */
1126        public Contact getContactFirstRep() {
1127                if (getContact().isEmpty()) {
1128                        return addContact();
1129                }
1130                return getContact().get(0); 
1131        }
1132  
1133        /**
1134         * Gets the value(s) for <b>date</b> (when.recorded).
1135         * creating it if it does
1136         * not exist. Will not return <code>null</code>.
1137         *
1138     * <p>
1139     * <b>Definition:</b>
1140     * The date this version of the implementation guide was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the implementation guide changes
1141     * </p> 
1142         */
1143        public DateTimeDt getDateElement() {  
1144                if (myDate == null) {
1145                        myDate = new DateTimeDt();
1146                }
1147                return myDate;
1148        }
1149
1150        
1151        /**
1152         * Gets the value(s) for <b>date</b> (when.recorded).
1153         * creating it if it does
1154         * not exist. Will not return <code>null</code>.
1155         *
1156     * <p>
1157     * <b>Definition:</b>
1158     * The date this version of the implementation guide was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the implementation guide changes
1159     * </p> 
1160         */
1161        public Date getDate() {  
1162                return getDateElement().getValue();
1163        }
1164
1165        /**
1166         * Sets the value(s) for <b>date</b> (when.recorded)
1167         *
1168     * <p>
1169     * <b>Definition:</b>
1170     * The date this version of the implementation guide was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the implementation guide changes
1171     * </p> 
1172         */
1173        public ImplementationGuide setDate(DateTimeDt theValue) {
1174                myDate = theValue;
1175                return this;
1176        }
1177        
1178        
1179
1180        /**
1181         * Sets the value for <b>date</b> (when.recorded)
1182         *
1183     * <p>
1184     * <b>Definition:</b>
1185     * The date this version of the implementation guide was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the implementation guide changes
1186     * </p> 
1187         */
1188        public ImplementationGuide setDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
1189                myDate = new DateTimeDt(theDate, thePrecision); 
1190                return this; 
1191        }
1192
1193        /**
1194         * Sets the value for <b>date</b> (when.recorded)
1195         *
1196     * <p>
1197     * <b>Definition:</b>
1198     * The date this version of the implementation guide was published. The date must change when the business version changes, if it does, and it must change if the status code changes. In addition, it should change when the substantive content of the implementation guide changes
1199     * </p> 
1200         */
1201        public ImplementationGuide setDateWithSecondsPrecision( Date theDate) {
1202                myDate = new DateTimeDt(theDate); 
1203                return this; 
1204        }
1205
1206 
1207        /**
1208         * Gets the value(s) for <b>description</b> ().
1209         * creating it if it does
1210         * not exist. Will not return <code>null</code>.
1211         *
1212     * <p>
1213     * <b>Definition:</b>
1214     * A free text natural language description of the Implementation Guide and its use
1215     * </p> 
1216         */
1217        public StringDt getDescriptionElement() {  
1218                if (myDescription == null) {
1219                        myDescription = new StringDt();
1220                }
1221                return myDescription;
1222        }
1223
1224        
1225        /**
1226         * Gets the value(s) for <b>description</b> ().
1227         * creating it if it does
1228         * not exist. Will not return <code>null</code>.
1229         *
1230     * <p>
1231     * <b>Definition:</b>
1232     * A free text natural language description of the Implementation Guide and its use
1233     * </p> 
1234         */
1235        public String getDescription() {  
1236                return getDescriptionElement().getValue();
1237        }
1238
1239        /**
1240         * Sets the value(s) for <b>description</b> ()
1241         *
1242     * <p>
1243     * <b>Definition:</b>
1244     * A free text natural language description of the Implementation Guide and its use
1245     * </p> 
1246         */
1247        public ImplementationGuide setDescription(StringDt theValue) {
1248                myDescription = theValue;
1249                return this;
1250        }
1251        
1252        
1253
1254        /**
1255         * Sets the value for <b>description</b> ()
1256         *
1257     * <p>
1258     * <b>Definition:</b>
1259     * A free text natural language description of the Implementation Guide and its use
1260     * </p> 
1261         */
1262        public ImplementationGuide setDescription( String theString) {
1263                myDescription = new StringDt(theString); 
1264                return this; 
1265        }
1266
1267 
1268        /**
1269         * Gets the value(s) for <b>useContext</b> ().
1270         * creating it if it does
1271         * not exist. Will not return <code>null</code>.
1272         *
1273     * <p>
1274     * <b>Definition:</b>
1275     * 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 implementation guides. The most common use of this element is to represent the country / jurisdiction for which this implementation guide was defined
1276     * </p> 
1277         */
1278        public java.util.List<CodeableConceptDt> getUseContext() {  
1279                if (myUseContext == null) {
1280                        myUseContext = new java.util.ArrayList<CodeableConceptDt>();
1281                }
1282                return myUseContext;
1283        }
1284
1285        /**
1286         * Sets the value(s) for <b>useContext</b> ()
1287         *
1288     * <p>
1289     * <b>Definition:</b>
1290     * 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 implementation guides. The most common use of this element is to represent the country / jurisdiction for which this implementation guide was defined
1291     * </p> 
1292         */
1293        public ImplementationGuide setUseContext(java.util.List<CodeableConceptDt> theValue) {
1294                myUseContext = theValue;
1295                return this;
1296        }
1297        
1298        
1299
1300        /**
1301         * Adds and returns a new value for <b>useContext</b> ()
1302         *
1303     * <p>
1304     * <b>Definition:</b>
1305     * 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 implementation guides. The most common use of this element is to represent the country / jurisdiction for which this implementation guide was defined
1306     * </p> 
1307         */
1308        public CodeableConceptDt addUseContext() {
1309                CodeableConceptDt newType = new CodeableConceptDt();
1310                getUseContext().add(newType);
1311                return newType; 
1312        }
1313
1314        /**
1315         * Adds a given new value for <b>useContext</b> ()
1316         *
1317         * <p>
1318         * <b>Definition:</b>
1319         * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of implementation guides. The most common use of this element is to represent the country / jurisdiction for which this implementation guide was defined
1320         * </p>
1321         * @param theValue The useContext to add (must not be <code>null</code>)
1322         */
1323        public ImplementationGuide addUseContext(CodeableConceptDt theValue) {
1324                if (theValue == null) {
1325                        throw new NullPointerException("theValue must not be null");
1326                }
1327                getUseContext().add(theValue);
1328                return this;
1329        }
1330
1331        /**
1332         * Gets the first repetition for <b>useContext</b> (),
1333         * creating it if it does not already exist.
1334         *
1335     * <p>
1336     * <b>Definition:</b>
1337     * The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching of implementation guides. The most common use of this element is to represent the country / jurisdiction for which this implementation guide was defined
1338     * </p> 
1339         */
1340        public CodeableConceptDt getUseContextFirstRep() {
1341                if (getUseContext().isEmpty()) {
1342                        return addUseContext();
1343                }
1344                return getUseContext().get(0); 
1345        }
1346  
1347        /**
1348         * Gets the value(s) for <b>copyright</b> ().
1349         * creating it if it does
1350         * not exist. Will not return <code>null</code>.
1351         *
1352     * <p>
1353     * <b>Definition:</b>
1354     * A copyright statement relating to the implementation guide and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings
1355     * </p> 
1356         */
1357        public StringDt getCopyrightElement() {  
1358                if (myCopyright == null) {
1359                        myCopyright = new StringDt();
1360                }
1361                return myCopyright;
1362        }
1363
1364        
1365        /**
1366         * Gets the value(s) for <b>copyright</b> ().
1367         * creating it if it does
1368         * not exist. Will not return <code>null</code>.
1369         *
1370     * <p>
1371     * <b>Definition:</b>
1372     * A copyright statement relating to the implementation guide and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings
1373     * </p> 
1374         */
1375        public String getCopyright() {  
1376                return getCopyrightElement().getValue();
1377        }
1378
1379        /**
1380         * Sets the value(s) for <b>copyright</b> ()
1381         *
1382     * <p>
1383     * <b>Definition:</b>
1384     * A copyright statement relating to the implementation guide and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings
1385     * </p> 
1386         */
1387        public ImplementationGuide setCopyright(StringDt theValue) {
1388                myCopyright = theValue;
1389                return this;
1390        }
1391        
1392        
1393
1394        /**
1395         * Sets the value for <b>copyright</b> ()
1396         *
1397     * <p>
1398     * <b>Definition:</b>
1399     * A copyright statement relating to the implementation guide and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the constraints and mappings
1400     * </p> 
1401         */
1402        public ImplementationGuide setCopyright( String theString) {
1403                myCopyright = new StringDt(theString); 
1404                return this; 
1405        }
1406
1407 
1408        /**
1409         * Gets the value(s) for <b>fhirVersion</b> ().
1410         * creating it if it does
1411         * not exist. Will not return <code>null</code>.
1412         *
1413     * <p>
1414     * <b>Definition:</b>
1415     * The version of the FHIR specification on which this ImplementationGuide is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is $version$ for this version
1416     * </p> 
1417         */
1418        public IdDt getFhirVersionElement() {  
1419                if (myFhirVersion == null) {
1420                        myFhirVersion = new IdDt();
1421                }
1422                return myFhirVersion;
1423        }
1424
1425        
1426        /**
1427         * Gets the value(s) for <b>fhirVersion</b> ().
1428         * creating it if it does
1429         * not exist. Will not return <code>null</code>.
1430         *
1431     * <p>
1432     * <b>Definition:</b>
1433     * The version of the FHIR specification on which this ImplementationGuide is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is $version$ for this version
1434     * </p> 
1435         */
1436        public String getFhirVersion() {  
1437                return getFhirVersionElement().getValue();
1438        }
1439
1440        /**
1441         * Sets the value(s) for <b>fhirVersion</b> ()
1442         *
1443     * <p>
1444     * <b>Definition:</b>
1445     * The version of the FHIR specification on which this ImplementationGuide is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is $version$ for this version
1446     * </p> 
1447         */
1448        public ImplementationGuide setFhirVersion(IdDt theValue) {
1449                myFhirVersion = theValue;
1450                return this;
1451        }
1452        
1453        
1454
1455        /**
1456         * Sets the value for <b>fhirVersion</b> ()
1457         *
1458     * <p>
1459     * <b>Definition:</b>
1460     * The version of the FHIR specification on which this ImplementationGuide is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is $version$ for this version
1461     * </p> 
1462         */
1463        public ImplementationGuide setFhirVersion( String theId) {
1464                myFhirVersion = new IdDt(theId); 
1465                return this; 
1466        }
1467
1468 
1469        /**
1470         * Gets the value(s) for <b>dependency</b> ().
1471         * creating it if it does
1472         * not exist. Will not return <code>null</code>.
1473         *
1474     * <p>
1475     * <b>Definition:</b>
1476     * Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides
1477     * </p> 
1478         */
1479        public java.util.List<Dependency> getDependency() {  
1480                if (myDependency == null) {
1481                        myDependency = new java.util.ArrayList<Dependency>();
1482                }
1483                return myDependency;
1484        }
1485
1486        /**
1487         * Sets the value(s) for <b>dependency</b> ()
1488         *
1489     * <p>
1490     * <b>Definition:</b>
1491     * Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides
1492     * </p> 
1493         */
1494        public ImplementationGuide setDependency(java.util.List<Dependency> theValue) {
1495                myDependency = theValue;
1496                return this;
1497        }
1498        
1499        
1500
1501        /**
1502         * Adds and returns a new value for <b>dependency</b> ()
1503         *
1504     * <p>
1505     * <b>Definition:</b>
1506     * Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides
1507     * </p> 
1508         */
1509        public Dependency addDependency() {
1510                Dependency newType = new Dependency();
1511                getDependency().add(newType);
1512                return newType; 
1513        }
1514
1515        /**
1516         * Adds a given new value for <b>dependency</b> ()
1517         *
1518         * <p>
1519         * <b>Definition:</b>
1520         * Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides
1521         * </p>
1522         * @param theValue The dependency to add (must not be <code>null</code>)
1523         */
1524        public ImplementationGuide addDependency(Dependency theValue) {
1525                if (theValue == null) {
1526                        throw new NullPointerException("theValue must not be null");
1527                }
1528                getDependency().add(theValue);
1529                return this;
1530        }
1531
1532        /**
1533         * Gets the first repetition for <b>dependency</b> (),
1534         * creating it if it does not already exist.
1535         *
1536     * <p>
1537     * <b>Definition:</b>
1538     * Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides
1539     * </p> 
1540         */
1541        public Dependency getDependencyFirstRep() {
1542                if (getDependency().isEmpty()) {
1543                        return addDependency();
1544                }
1545                return getDependency().get(0); 
1546        }
1547  
1548        /**
1549         * Gets the value(s) for <b>package</b> ().
1550         * creating it if it does
1551         * not exist. Will not return <code>null</code>.
1552         *
1553     * <p>
1554     * <b>Definition:</b>
1555     * A logical group of resources. Logical groups can be used when building pages
1556     * </p> 
1557         */
1558        public java.util.List<Package> getPackage() {  
1559                if (myPackage == null) {
1560                        myPackage = new java.util.ArrayList<Package>();
1561                }
1562                return myPackage;
1563        }
1564
1565        /**
1566         * Sets the value(s) for <b>package</b> ()
1567         *
1568     * <p>
1569     * <b>Definition:</b>
1570     * A logical group of resources. Logical groups can be used when building pages
1571     * </p> 
1572         */
1573        public ImplementationGuide setPackage(java.util.List<Package> theValue) {
1574                myPackage = theValue;
1575                return this;
1576        }
1577        
1578        
1579
1580        /**
1581         * Adds and returns a new value for <b>package</b> ()
1582         *
1583     * <p>
1584     * <b>Definition:</b>
1585     * A logical group of resources. Logical groups can be used when building pages
1586     * </p> 
1587         */
1588        public Package addPackage() {
1589                Package newType = new Package();
1590                getPackage().add(newType);
1591                return newType; 
1592        }
1593
1594        /**
1595         * Adds a given new value for <b>package</b> ()
1596         *
1597         * <p>
1598         * <b>Definition:</b>
1599         * A logical group of resources. Logical groups can be used when building pages
1600         * </p>
1601         * @param theValue The package to add (must not be <code>null</code>)
1602         */
1603        public ImplementationGuide addPackage(Package theValue) {
1604                if (theValue == null) {
1605                        throw new NullPointerException("theValue must not be null");
1606                }
1607                getPackage().add(theValue);
1608                return this;
1609        }
1610
1611        /**
1612         * Gets the first repetition for <b>package</b> (),
1613         * creating it if it does not already exist.
1614         *
1615     * <p>
1616     * <b>Definition:</b>
1617     * A logical group of resources. Logical groups can be used when building pages
1618     * </p> 
1619         */
1620        public Package getPackageFirstRep() {
1621                if (getPackage().isEmpty()) {
1622                        return addPackage();
1623                }
1624                return getPackage().get(0); 
1625        }
1626  
1627        /**
1628         * Gets the value(s) for <b>global</b> ().
1629         * creating it if it does
1630         * not exist. Will not return <code>null</code>.
1631         *
1632     * <p>
1633     * <b>Definition:</b>
1634     * A set of profiles that all resources covered by this implementation guide must conform to
1635     * </p> 
1636         */
1637        public java.util.List<Global> getGlobal() {  
1638                if (myGlobal == null) {
1639                        myGlobal = new java.util.ArrayList<Global>();
1640                }
1641                return myGlobal;
1642        }
1643
1644        /**
1645         * Sets the value(s) for <b>global</b> ()
1646         *
1647     * <p>
1648     * <b>Definition:</b>
1649     * A set of profiles that all resources covered by this implementation guide must conform to
1650     * </p> 
1651         */
1652        public ImplementationGuide setGlobal(java.util.List<Global> theValue) {
1653                myGlobal = theValue;
1654                return this;
1655        }
1656        
1657        
1658
1659        /**
1660         * Adds and returns a new value for <b>global</b> ()
1661         *
1662     * <p>
1663     * <b>Definition:</b>
1664     * A set of profiles that all resources covered by this implementation guide must conform to
1665     * </p> 
1666         */
1667        public Global addGlobal() {
1668                Global newType = new Global();
1669                getGlobal().add(newType);
1670                return newType; 
1671        }
1672
1673        /**
1674         * Adds a given new value for <b>global</b> ()
1675         *
1676         * <p>
1677         * <b>Definition:</b>
1678         * A set of profiles that all resources covered by this implementation guide must conform to
1679         * </p>
1680         * @param theValue The global to add (must not be <code>null</code>)
1681         */
1682        public ImplementationGuide addGlobal(Global theValue) {
1683                if (theValue == null) {
1684                        throw new NullPointerException("theValue must not be null");
1685                }
1686                getGlobal().add(theValue);
1687                return this;
1688        }
1689
1690        /**
1691         * Gets the first repetition for <b>global</b> (),
1692         * creating it if it does not already exist.
1693         *
1694     * <p>
1695     * <b>Definition:</b>
1696     * A set of profiles that all resources covered by this implementation guide must conform to
1697     * </p> 
1698         */
1699        public Global getGlobalFirstRep() {
1700                if (getGlobal().isEmpty()) {
1701                        return addGlobal();
1702                }
1703                return getGlobal().get(0); 
1704        }
1705  
1706        /**
1707         * Gets the value(s) for <b>binary</b> ().
1708         * creating it if it does
1709         * not exist. Will not return <code>null</code>.
1710         *
1711     * <p>
1712     * <b>Definition:</b>
1713     * A binary file that is included in the  implementation guide when it is published
1714     * </p> 
1715         */
1716        public java.util.List<UriDt> getBinary() {  
1717                if (myBinary == null) {
1718                        myBinary = new java.util.ArrayList<UriDt>();
1719                }
1720                return myBinary;
1721        }
1722
1723        /**
1724         * Sets the value(s) for <b>binary</b> ()
1725         *
1726     * <p>
1727     * <b>Definition:</b>
1728     * A binary file that is included in the  implementation guide when it is published
1729     * </p> 
1730         */
1731        public ImplementationGuide setBinary(java.util.List<UriDt> theValue) {
1732                myBinary = theValue;
1733                return this;
1734        }
1735        
1736        
1737
1738        /**
1739         * Adds and returns a new value for <b>binary</b> ()
1740         *
1741     * <p>
1742     * <b>Definition:</b>
1743     * A binary file that is included in the  implementation guide when it is published
1744     * </p> 
1745         */
1746        public UriDt addBinary() {
1747                UriDt newType = new UriDt();
1748                getBinary().add(newType);
1749                return newType; 
1750        }
1751
1752        /**
1753         * Adds a given new value for <b>binary</b> ()
1754         *
1755         * <p>
1756         * <b>Definition:</b>
1757         * A binary file that is included in the  implementation guide when it is published
1758         * </p>
1759         * @param theValue The binary to add (must not be <code>null</code>)
1760         */
1761        public ImplementationGuide addBinary(UriDt theValue) {
1762                if (theValue == null) {
1763                        throw new NullPointerException("theValue must not be null");
1764                }
1765                getBinary().add(theValue);
1766                return this;
1767        }
1768
1769        /**
1770         * Gets the first repetition for <b>binary</b> (),
1771         * creating it if it does not already exist.
1772         *
1773     * <p>
1774     * <b>Definition:</b>
1775     * A binary file that is included in the  implementation guide when it is published
1776     * </p> 
1777         */
1778        public UriDt getBinaryFirstRep() {
1779                if (getBinary().isEmpty()) {
1780                        return addBinary();
1781                }
1782                return getBinary().get(0); 
1783        }
1784        /**
1785         * Adds a new value for <b>binary</b> ()
1786         *
1787     * <p>
1788     * <b>Definition:</b>
1789     * A binary file that is included in the  implementation guide when it is published
1790     * </p> 
1791     *
1792     * @return Returns a reference to this object, to allow for simple chaining.
1793         */
1794        public ImplementationGuide addBinary( String theUri) {
1795                if (myBinary == null) {
1796                        myBinary = new java.util.ArrayList<UriDt>();
1797                }
1798                myBinary.add(new UriDt(theUri));
1799                return this; 
1800        }
1801
1802 
1803        /**
1804         * Gets the value(s) for <b>page</b> ().
1805         * creating it if it does
1806         * not exist. Will not return <code>null</code>.
1807         *
1808     * <p>
1809     * <b>Definition:</b>
1810     * A page / section in the implementation guide. The root page is the implementation guide home page
1811     * </p> 
1812         */
1813        public Page getPage() {  
1814                if (myPage == null) {
1815                        myPage = new Page();
1816                }
1817                return myPage;
1818        }
1819
1820        /**
1821         * Sets the value(s) for <b>page</b> ()
1822         *
1823     * <p>
1824     * <b>Definition:</b>
1825     * A page / section in the implementation guide. The root page is the implementation guide home page
1826     * </p> 
1827         */
1828        public ImplementationGuide setPage(Page theValue) {
1829                myPage = theValue;
1830                return this;
1831        }
1832        
1833        
1834
1835  
1836        /**
1837         * Block class for child element: <b>ImplementationGuide.contact</b> ()
1838         *
1839     * <p>
1840     * <b>Definition:</b>
1841     * Contacts to assist a user in finding and communicating with the publisher
1842     * </p> 
1843         */
1844        @Block()        
1845        public static class Contact 
1846            extends  BaseIdentifiableElement        implements IResourceBlock {
1847        
1848        @Child(name="name", type=StringDt.class, order=0, min=0, max=1, summary=true, modifier=false)   
1849        @Description(
1850                shortDefinition="",
1851                formalDefinition="The name of an individual to contact regarding the implementation guide"
1852        )
1853        private StringDt myName;
1854        
1855        @Child(name="telecom", type=ContactPointDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
1856        @Description(
1857                shortDefinition="",
1858                formalDefinition="Contact details for individual (if a name was provided) or the publisher"
1859        )
1860        private java.util.List<ContactPointDt> myTelecom;
1861        
1862
1863        @Override
1864        public boolean isEmpty() {
1865                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myTelecom);
1866        }
1867        
1868        @Override
1869        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1870                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myTelecom);
1871        }
1872
1873        /**
1874         * Gets the value(s) for <b>name</b> ().
1875         * creating it if it does
1876         * not exist. Will not return <code>null</code>.
1877         *
1878     * <p>
1879     * <b>Definition:</b>
1880     * The name of an individual to contact regarding the implementation guide
1881     * </p> 
1882         */
1883        public StringDt getNameElement() {  
1884                if (myName == null) {
1885                        myName = new StringDt();
1886                }
1887                return myName;
1888        }
1889
1890        
1891        /**
1892         * Gets the value(s) for <b>name</b> ().
1893         * creating it if it does
1894         * not exist. Will not return <code>null</code>.
1895         *
1896     * <p>
1897     * <b>Definition:</b>
1898     * The name of an individual to contact regarding the implementation guide
1899     * </p> 
1900         */
1901        public String getName() {  
1902                return getNameElement().getValue();
1903        }
1904
1905        /**
1906         * Sets the value(s) for <b>name</b> ()
1907         *
1908     * <p>
1909     * <b>Definition:</b>
1910     * The name of an individual to contact regarding the implementation guide
1911     * </p> 
1912         */
1913        public Contact setName(StringDt theValue) {
1914                myName = theValue;
1915                return this;
1916        }
1917        
1918        
1919
1920        /**
1921         * Sets the value for <b>name</b> ()
1922         *
1923     * <p>
1924     * <b>Definition:</b>
1925     * The name of an individual to contact regarding the implementation guide
1926     * </p> 
1927         */
1928        public Contact setName( String theString) {
1929                myName = new StringDt(theString); 
1930                return this; 
1931        }
1932
1933 
1934        /**
1935         * Gets the value(s) for <b>telecom</b> ().
1936         * creating it if it does
1937         * not exist. Will not return <code>null</code>.
1938         *
1939     * <p>
1940     * <b>Definition:</b>
1941     * Contact details for individual (if a name was provided) or the publisher
1942     * </p> 
1943         */
1944        public java.util.List<ContactPointDt> getTelecom() {  
1945                if (myTelecom == null) {
1946                        myTelecom = new java.util.ArrayList<ContactPointDt>();
1947                }
1948                return myTelecom;
1949        }
1950
1951        /**
1952         * Sets the value(s) for <b>telecom</b> ()
1953         *
1954     * <p>
1955     * <b>Definition:</b>
1956     * Contact details for individual (if a name was provided) or the publisher
1957     * </p> 
1958         */
1959        public Contact setTelecom(java.util.List<ContactPointDt> theValue) {
1960                myTelecom = theValue;
1961                return this;
1962        }
1963        
1964        
1965
1966        /**
1967         * Adds and returns a new value for <b>telecom</b> ()
1968         *
1969     * <p>
1970     * <b>Definition:</b>
1971     * Contact details for individual (if a name was provided) or the publisher
1972     * </p> 
1973         */
1974        public ContactPointDt addTelecom() {
1975                ContactPointDt newType = new ContactPointDt();
1976                getTelecom().add(newType);
1977                return newType; 
1978        }
1979
1980        /**
1981         * Adds a given new value for <b>telecom</b> ()
1982         *
1983         * <p>
1984         * <b>Definition:</b>
1985         * Contact details for individual (if a name was provided) or the publisher
1986         * </p>
1987         * @param theValue The telecom to add (must not be <code>null</code>)
1988         */
1989        public Contact addTelecom(ContactPointDt theValue) {
1990                if (theValue == null) {
1991                        throw new NullPointerException("theValue must not be null");
1992                }
1993                getTelecom().add(theValue);
1994                return this;
1995        }
1996
1997        /**
1998         * Gets the first repetition for <b>telecom</b> (),
1999         * creating it if it does not already exist.
2000         *
2001     * <p>
2002     * <b>Definition:</b>
2003     * Contact details for individual (if a name was provided) or the publisher
2004     * </p> 
2005         */
2006        public ContactPointDt getTelecomFirstRep() {
2007                if (getTelecom().isEmpty()) {
2008                        return addTelecom();
2009                }
2010                return getTelecom().get(0); 
2011        }
2012  
2013
2014
2015        }
2016
2017
2018        /**
2019         * Block class for child element: <b>ImplementationGuide.dependency</b> ()
2020         *
2021     * <p>
2022     * <b>Definition:</b>
2023     * Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides
2024     * </p> 
2025         */
2026        @Block()        
2027        public static class Dependency 
2028            extends  BaseIdentifiableElement        implements IResourceBlock {
2029        
2030        @Child(name="type", type=CodeDt.class, order=0, min=1, max=1, summary=true, modifier=false)     
2031        @Description(
2032                shortDefinition="",
2033                formalDefinition="How the dependency is represented when the guide is published"
2034        )
2035        private BoundCodeDt<GuideDependencyTypeEnum> myType;
2036        
2037        @Child(name="uri", type=UriDt.class, order=1, min=1, max=1, summary=true, modifier=false)       
2038        @Description(
2039                shortDefinition="",
2040                formalDefinition="Where the dependency is located"
2041        )
2042        private UriDt myUri;
2043        
2044
2045        @Override
2046        public boolean isEmpty() {
2047                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myType,  myUri);
2048        }
2049        
2050        @Override
2051        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2052                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myType, myUri);
2053        }
2054
2055        /**
2056         * Gets the value(s) for <b>type</b> ().
2057         * creating it if it does
2058         * not exist. Will not return <code>null</code>.
2059         *
2060     * <p>
2061     * <b>Definition:</b>
2062     * How the dependency is represented when the guide is published
2063     * </p> 
2064         */
2065        public BoundCodeDt<GuideDependencyTypeEnum> getTypeElement() {  
2066                if (myType == null) {
2067                        myType = new BoundCodeDt<GuideDependencyTypeEnum>(GuideDependencyTypeEnum.VALUESET_BINDER);
2068                }
2069                return myType;
2070        }
2071
2072        
2073        /**
2074         * Gets the value(s) for <b>type</b> ().
2075         * creating it if it does
2076         * not exist. Will not return <code>null</code>.
2077         *
2078     * <p>
2079     * <b>Definition:</b>
2080     * How the dependency is represented when the guide is published
2081     * </p> 
2082         */
2083        public String getType() {  
2084                return getTypeElement().getValue();
2085        }
2086
2087        /**
2088         * Sets the value(s) for <b>type</b> ()
2089         *
2090     * <p>
2091     * <b>Definition:</b>
2092     * How the dependency is represented when the guide is published
2093     * </p> 
2094         */
2095        public Dependency setType(BoundCodeDt<GuideDependencyTypeEnum> theValue) {
2096                myType = theValue;
2097                return this;
2098        }
2099        
2100        
2101
2102        /**
2103         * Sets the value(s) for <b>type</b> ()
2104         *
2105     * <p>
2106     * <b>Definition:</b>
2107     * How the dependency is represented when the guide is published
2108     * </p> 
2109         */
2110        public Dependency setType(GuideDependencyTypeEnum theValue) {
2111                setType(new BoundCodeDt<GuideDependencyTypeEnum>(GuideDependencyTypeEnum.VALUESET_BINDER, theValue));
2112                
2113/*
2114                getTypeElement().setValueAsEnum(theValue);
2115*/
2116                return this;
2117        }
2118
2119  
2120        /**
2121         * Gets the value(s) for <b>uri</b> ().
2122         * creating it if it does
2123         * not exist. Will not return <code>null</code>.
2124         *
2125     * <p>
2126     * <b>Definition:</b>
2127     * Where the dependency is located
2128     * </p> 
2129         */
2130        public UriDt getUriElement() {  
2131                if (myUri == null) {
2132                        myUri = new UriDt();
2133                }
2134                return myUri;
2135        }
2136
2137        
2138        /**
2139         * Gets the value(s) for <b>uri</b> ().
2140         * creating it if it does
2141         * not exist. Will not return <code>null</code>.
2142         *
2143     * <p>
2144     * <b>Definition:</b>
2145     * Where the dependency is located
2146     * </p> 
2147         */
2148        public String getUri() {  
2149                return getUriElement().getValue();
2150        }
2151
2152        /**
2153         * Sets the value(s) for <b>uri</b> ()
2154         *
2155     * <p>
2156     * <b>Definition:</b>
2157     * Where the dependency is located
2158     * </p> 
2159         */
2160        public Dependency setUri(UriDt theValue) {
2161                myUri = theValue;
2162                return this;
2163        }
2164        
2165        
2166
2167        /**
2168         * Sets the value for <b>uri</b> ()
2169         *
2170     * <p>
2171     * <b>Definition:</b>
2172     * Where the dependency is located
2173     * </p> 
2174         */
2175        public Dependency setUri( String theUri) {
2176                myUri = new UriDt(theUri); 
2177                return this; 
2178        }
2179
2180 
2181
2182
2183        }
2184
2185
2186        /**
2187         * Block class for child element: <b>ImplementationGuide.package</b> ()
2188         *
2189     * <p>
2190     * <b>Definition:</b>
2191     * A logical group of resources. Logical groups can be used when building pages
2192     * </p> 
2193         */
2194        @Block()        
2195        public static class Package 
2196            extends  BaseIdentifiableElement        implements IResourceBlock {
2197        
2198        @Child(name="name", type=StringDt.class, order=0, min=1, max=1, summary=true, modifier=false)   
2199        @Description(
2200                shortDefinition="",
2201                formalDefinition="The name for the group, as used in page.package"
2202        )
2203        private StringDt myName;
2204        
2205        @Child(name="description", type=StringDt.class, order=1, min=0, max=1, summary=false, modifier=false)   
2206        @Description(
2207                shortDefinition="",
2208                formalDefinition=""
2209        )
2210        private StringDt myDescription;
2211        
2212        @Child(name="resource", order=2, min=1, max=Child.MAX_UNLIMITED, summary=true, modifier=false)  
2213        @Description(
2214                shortDefinition="",
2215                formalDefinition="A resource that is part of the implementation guide. Conformance resources (value set, structure definition, conformance statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource"
2216        )
2217        private java.util.List<PackageResource> myResource;
2218        
2219
2220        @Override
2221        public boolean isEmpty() {
2222                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myDescription,  myResource);
2223        }
2224        
2225        @Override
2226        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2227                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myDescription, myResource);
2228        }
2229
2230        /**
2231         * Gets the value(s) for <b>name</b> ().
2232         * creating it if it does
2233         * not exist. Will not return <code>null</code>.
2234         *
2235     * <p>
2236     * <b>Definition:</b>
2237     * The name for the group, as used in page.package
2238     * </p> 
2239         */
2240        public StringDt getNameElement() {  
2241                if (myName == null) {
2242                        myName = new StringDt();
2243                }
2244                return myName;
2245        }
2246
2247        
2248        /**
2249         * Gets the value(s) for <b>name</b> ().
2250         * creating it if it does
2251         * not exist. Will not return <code>null</code>.
2252         *
2253     * <p>
2254     * <b>Definition:</b>
2255     * The name for the group, as used in page.package
2256     * </p> 
2257         */
2258        public String getName() {  
2259                return getNameElement().getValue();
2260        }
2261
2262        /**
2263         * Sets the value(s) for <b>name</b> ()
2264         *
2265     * <p>
2266     * <b>Definition:</b>
2267     * The name for the group, as used in page.package
2268     * </p> 
2269         */
2270        public Package setName(StringDt theValue) {
2271                myName = theValue;
2272                return this;
2273        }
2274        
2275        
2276
2277        /**
2278         * Sets the value for <b>name</b> ()
2279         *
2280     * <p>
2281     * <b>Definition:</b>
2282     * The name for the group, as used in page.package
2283     * </p> 
2284         */
2285        public Package setName( String theString) {
2286                myName = new StringDt(theString); 
2287                return this; 
2288        }
2289
2290 
2291        /**
2292         * Gets the value(s) for <b>description</b> ().
2293         * creating it if it does
2294         * not exist. Will not return <code>null</code>.
2295         *
2296     * <p>
2297     * <b>Definition:</b>
2298     * 
2299     * </p> 
2300         */
2301        public StringDt getDescriptionElement() {  
2302                if (myDescription == null) {
2303                        myDescription = new StringDt();
2304                }
2305                return myDescription;
2306        }
2307
2308        
2309        /**
2310         * Gets the value(s) for <b>description</b> ().
2311         * creating it if it does
2312         * not exist. Will not return <code>null</code>.
2313         *
2314     * <p>
2315     * <b>Definition:</b>
2316     * 
2317     * </p> 
2318         */
2319        public String getDescription() {  
2320                return getDescriptionElement().getValue();
2321        }
2322
2323        /**
2324         * Sets the value(s) for <b>description</b> ()
2325         *
2326     * <p>
2327     * <b>Definition:</b>
2328     * 
2329     * </p> 
2330         */
2331        public Package setDescription(StringDt theValue) {
2332                myDescription = theValue;
2333                return this;
2334        }
2335        
2336        
2337
2338        /**
2339         * Sets the value for <b>description</b> ()
2340         *
2341     * <p>
2342     * <b>Definition:</b>
2343     * 
2344     * </p> 
2345         */
2346        public Package setDescription( String theString) {
2347                myDescription = new StringDt(theString); 
2348                return this; 
2349        }
2350
2351 
2352        /**
2353         * Gets the value(s) for <b>resource</b> ().
2354         * creating it if it does
2355         * not exist. Will not return <code>null</code>.
2356         *
2357     * <p>
2358     * <b>Definition:</b>
2359     * A resource that is part of the implementation guide. Conformance resources (value set, structure definition, conformance statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource
2360     * </p> 
2361         */
2362        public java.util.List<PackageResource> getResource() {  
2363                if (myResource == null) {
2364                        myResource = new java.util.ArrayList<PackageResource>();
2365                }
2366                return myResource;
2367        }
2368
2369        /**
2370         * Sets the value(s) for <b>resource</b> ()
2371         *
2372     * <p>
2373     * <b>Definition:</b>
2374     * A resource that is part of the implementation guide. Conformance resources (value set, structure definition, conformance statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource
2375     * </p> 
2376         */
2377        public Package setResource(java.util.List<PackageResource> theValue) {
2378                myResource = theValue;
2379                return this;
2380        }
2381        
2382        
2383
2384        /**
2385         * Adds and returns a new value for <b>resource</b> ()
2386         *
2387     * <p>
2388     * <b>Definition:</b>
2389     * A resource that is part of the implementation guide. Conformance resources (value set, structure definition, conformance statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource
2390     * </p> 
2391         */
2392        public PackageResource addResource() {
2393                PackageResource newType = new PackageResource();
2394                getResource().add(newType);
2395                return newType; 
2396        }
2397
2398        /**
2399         * Adds a given new value for <b>resource</b> ()
2400         *
2401         * <p>
2402         * <b>Definition:</b>
2403         * A resource that is part of the implementation guide. Conformance resources (value set, structure definition, conformance statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource
2404         * </p>
2405         * @param theValue The resource to add (must not be <code>null</code>)
2406         */
2407        public Package addResource(PackageResource theValue) {
2408                if (theValue == null) {
2409                        throw new NullPointerException("theValue must not be null");
2410                }
2411                getResource().add(theValue);
2412                return this;
2413        }
2414
2415        /**
2416         * Gets the first repetition for <b>resource</b> (),
2417         * creating it if it does not already exist.
2418         *
2419     * <p>
2420     * <b>Definition:</b>
2421     * A resource that is part of the implementation guide. Conformance resources (value set, structure definition, conformance statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource
2422     * </p> 
2423         */
2424        public PackageResource getResourceFirstRep() {
2425                if (getResource().isEmpty()) {
2426                        return addResource();
2427                }
2428                return getResource().get(0); 
2429        }
2430  
2431
2432
2433        }
2434
2435        /**
2436         * Block class for child element: <b>ImplementationGuide.package.resource</b> ()
2437         *
2438     * <p>
2439     * <b>Definition:</b>
2440     * A resource that is part of the implementation guide. Conformance resources (value set, structure definition, conformance statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource
2441     * </p> 
2442         */
2443        @Block()        
2444        public static class PackageResource 
2445            extends  BaseIdentifiableElement        implements IResourceBlock {
2446        
2447        @Child(name="purpose", type=CodeDt.class, order=0, min=1, max=1, summary=true, modifier=false)  
2448        @Description(
2449                shortDefinition="",
2450                formalDefinition="Why the resource is included in the guide"
2451        )
2452        private BoundCodeDt<GuideResourcePurposeEnum> myPurpose;
2453        
2454        @Child(name="name", type=StringDt.class, order=1, min=0, max=1, summary=true, modifier=false)   
2455        @Description(
2456                shortDefinition="",
2457                formalDefinition="A human assigned name for the resource. All resources SHOULD have a name, but the name may be extracted from the resource (e.g. ValueSet.name)"
2458        )
2459        private StringDt myName;
2460        
2461        @Child(name="description", type=StringDt.class, order=2, min=0, max=1, summary=false, modifier=false)   
2462        @Description(
2463                shortDefinition="",
2464                formalDefinition="A description of the reason that a resource has been included in the implementation guide"
2465        )
2466        private StringDt myDescription;
2467        
2468        @Child(name="acronym", type=StringDt.class, order=3, min=0, max=1, summary=false, modifier=false)       
2469        @Description(
2470                shortDefinition="",
2471                formalDefinition="A short code that may be used to identify the resource throughout the implementation guide"
2472        )
2473        private StringDt myAcronym;
2474        
2475        @Child(name="source", order=4, min=1, max=1, summary=true, modifier=false, type={
2476                UriDt.class,            IResource.class })
2477        @Description(
2478                shortDefinition="",
2479                formalDefinition="Where this resource is found"
2480        )
2481        private IDatatype mySource;
2482        
2483        @Child(name="exampleFor", order=5, min=0, max=1, summary=false, modifier=false, type={
2484                ca.uhn.fhir.model.dstu2.resource.StructureDefinition.class      })
2485        @Description(
2486                shortDefinition="",
2487                formalDefinition="Another resource that this resource is an example for. This is mostly used for resources that are included as examples of StructureDefinitions"
2488        )
2489        private ResourceReferenceDt myExampleFor;
2490        
2491
2492        @Override
2493        public boolean isEmpty() {
2494                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myPurpose,  myName,  myDescription,  myAcronym,  mySource,  myExampleFor);
2495        }
2496        
2497        @Override
2498        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2499                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myPurpose, myName, myDescription, myAcronym, mySource, myExampleFor);
2500        }
2501
2502        /**
2503         * Gets the value(s) for <b>purpose</b> ().
2504         * creating it if it does
2505         * not exist. Will not return <code>null</code>.
2506         *
2507     * <p>
2508     * <b>Definition:</b>
2509     * Why the resource is included in the guide
2510     * </p> 
2511         */
2512        public BoundCodeDt<GuideResourcePurposeEnum> getPurposeElement() {  
2513                if (myPurpose == null) {
2514                        myPurpose = new BoundCodeDt<GuideResourcePurposeEnum>(GuideResourcePurposeEnum.VALUESET_BINDER);
2515                }
2516                return myPurpose;
2517        }
2518
2519        
2520        /**
2521         * Gets the value(s) for <b>purpose</b> ().
2522         * creating it if it does
2523         * not exist. Will not return <code>null</code>.
2524         *
2525     * <p>
2526     * <b>Definition:</b>
2527     * Why the resource is included in the guide
2528     * </p> 
2529         */
2530        public String getPurpose() {  
2531                return getPurposeElement().getValue();
2532        }
2533
2534        /**
2535         * Sets the value(s) for <b>purpose</b> ()
2536         *
2537     * <p>
2538     * <b>Definition:</b>
2539     * Why the resource is included in the guide
2540     * </p> 
2541         */
2542        public PackageResource setPurpose(BoundCodeDt<GuideResourcePurposeEnum> theValue) {
2543                myPurpose = theValue;
2544                return this;
2545        }
2546        
2547        
2548
2549        /**
2550         * Sets the value(s) for <b>purpose</b> ()
2551         *
2552     * <p>
2553     * <b>Definition:</b>
2554     * Why the resource is included in the guide
2555     * </p> 
2556         */
2557        public PackageResource setPurpose(GuideResourcePurposeEnum theValue) {
2558                setPurpose(new BoundCodeDt<GuideResourcePurposeEnum>(GuideResourcePurposeEnum.VALUESET_BINDER, theValue));
2559                
2560/*
2561                getPurposeElement().setValueAsEnum(theValue);
2562*/
2563                return this;
2564        }
2565
2566  
2567        /**
2568         * Gets the value(s) for <b>name</b> ().
2569         * creating it if it does
2570         * not exist. Will not return <code>null</code>.
2571         *
2572     * <p>
2573     * <b>Definition:</b>
2574     * A human assigned name for the resource. All resources SHOULD have a name, but the name may be extracted from the resource (e.g. ValueSet.name)
2575     * </p> 
2576         */
2577        public StringDt getNameElement() {  
2578                if (myName == null) {
2579                        myName = new StringDt();
2580                }
2581                return myName;
2582        }
2583
2584        
2585        /**
2586         * Gets the value(s) for <b>name</b> ().
2587         * creating it if it does
2588         * not exist. Will not return <code>null</code>.
2589         *
2590     * <p>
2591     * <b>Definition:</b>
2592     * A human assigned name for the resource. All resources SHOULD have a name, but the name may be extracted from the resource (e.g. ValueSet.name)
2593     * </p> 
2594         */
2595        public String getName() {  
2596                return getNameElement().getValue();
2597        }
2598
2599        /**
2600         * Sets the value(s) for <b>name</b> ()
2601         *
2602     * <p>
2603     * <b>Definition:</b>
2604     * A human assigned name for the resource. All resources SHOULD have a name, but the name may be extracted from the resource (e.g. ValueSet.name)
2605     * </p> 
2606         */
2607        public PackageResource setName(StringDt theValue) {
2608                myName = theValue;
2609                return this;
2610        }
2611        
2612        
2613
2614        /**
2615         * Sets the value for <b>name</b> ()
2616         *
2617     * <p>
2618     * <b>Definition:</b>
2619     * A human assigned name for the resource. All resources SHOULD have a name, but the name may be extracted from the resource (e.g. ValueSet.name)
2620     * </p> 
2621         */
2622        public PackageResource setName( String theString) {
2623                myName = new StringDt(theString); 
2624                return this; 
2625        }
2626
2627 
2628        /**
2629         * Gets the value(s) for <b>description</b> ().
2630         * creating it if it does
2631         * not exist. Will not return <code>null</code>.
2632         *
2633     * <p>
2634     * <b>Definition:</b>
2635     * A description of the reason that a resource has been included in the implementation guide
2636     * </p> 
2637         */
2638        public StringDt getDescriptionElement() {  
2639                if (myDescription == null) {
2640                        myDescription = new StringDt();
2641                }
2642                return myDescription;
2643        }
2644
2645        
2646        /**
2647         * Gets the value(s) for <b>description</b> ().
2648         * creating it if it does
2649         * not exist. Will not return <code>null</code>.
2650         *
2651     * <p>
2652     * <b>Definition:</b>
2653     * A description of the reason that a resource has been included in the implementation guide
2654     * </p> 
2655         */
2656        public String getDescription() {  
2657                return getDescriptionElement().getValue();
2658        }
2659
2660        /**
2661         * Sets the value(s) for <b>description</b> ()
2662         *
2663     * <p>
2664     * <b>Definition:</b>
2665     * A description of the reason that a resource has been included in the implementation guide
2666     * </p> 
2667         */
2668        public PackageResource setDescription(StringDt theValue) {
2669                myDescription = theValue;
2670                return this;
2671        }
2672        
2673        
2674
2675        /**
2676         * Sets the value for <b>description</b> ()
2677         *
2678     * <p>
2679     * <b>Definition:</b>
2680     * A description of the reason that a resource has been included in the implementation guide
2681     * </p> 
2682         */
2683        public PackageResource setDescription( String theString) {
2684                myDescription = new StringDt(theString); 
2685                return this; 
2686        }
2687
2688 
2689        /**
2690         * Gets the value(s) for <b>acronym</b> ().
2691         * creating it if it does
2692         * not exist. Will not return <code>null</code>.
2693         *
2694     * <p>
2695     * <b>Definition:</b>
2696     * A short code that may be used to identify the resource throughout the implementation guide
2697     * </p> 
2698         */
2699        public StringDt getAcronymElement() {  
2700                if (myAcronym == null) {
2701                        myAcronym = new StringDt();
2702                }
2703                return myAcronym;
2704        }
2705
2706        
2707        /**
2708         * Gets the value(s) for <b>acronym</b> ().
2709         * creating it if it does
2710         * not exist. Will not return <code>null</code>.
2711         *
2712     * <p>
2713     * <b>Definition:</b>
2714     * A short code that may be used to identify the resource throughout the implementation guide
2715     * </p> 
2716         */
2717        public String getAcronym() {  
2718                return getAcronymElement().getValue();
2719        }
2720
2721        /**
2722         * Sets the value(s) for <b>acronym</b> ()
2723         *
2724     * <p>
2725     * <b>Definition:</b>
2726     * A short code that may be used to identify the resource throughout the implementation guide
2727     * </p> 
2728         */
2729        public PackageResource setAcronym(StringDt theValue) {
2730                myAcronym = theValue;
2731                return this;
2732        }
2733        
2734        
2735
2736        /**
2737         * Sets the value for <b>acronym</b> ()
2738         *
2739     * <p>
2740     * <b>Definition:</b>
2741     * A short code that may be used to identify the resource throughout the implementation guide
2742     * </p> 
2743         */
2744        public PackageResource setAcronym( String theString) {
2745                myAcronym = new StringDt(theString); 
2746                return this; 
2747        }
2748
2749 
2750        /**
2751         * Gets the value(s) for <b>source[x]</b> ().
2752         * creating it if it does
2753         * not exist. Will not return <code>null</code>.
2754         *
2755     * <p>
2756     * <b>Definition:</b>
2757     * Where this resource is found
2758     * </p> 
2759         */
2760        public IDatatype getSource() {  
2761                return mySource;
2762        }
2763
2764        /**
2765         * Sets the value(s) for <b>source[x]</b> ()
2766         *
2767     * <p>
2768     * <b>Definition:</b>
2769     * Where this resource is found
2770     * </p> 
2771         */
2772        public PackageResource setSource(IDatatype theValue) {
2773                mySource = theValue;
2774                return this;
2775        }
2776        
2777        
2778
2779  
2780        /**
2781         * Gets the value(s) for <b>exampleFor</b> ().
2782         * creating it if it does
2783         * not exist. Will not return <code>null</code>.
2784         *
2785     * <p>
2786     * <b>Definition:</b>
2787     * Another resource that this resource is an example for. This is mostly used for resources that are included as examples of StructureDefinitions
2788     * </p> 
2789         */
2790        public ResourceReferenceDt getExampleFor() {  
2791                if (myExampleFor == null) {
2792                        myExampleFor = new ResourceReferenceDt();
2793                }
2794                return myExampleFor;
2795        }
2796
2797        /**
2798         * Sets the value(s) for <b>exampleFor</b> ()
2799         *
2800     * <p>
2801     * <b>Definition:</b>
2802     * Another resource that this resource is an example for. This is mostly used for resources that are included as examples of StructureDefinitions
2803     * </p> 
2804         */
2805        public PackageResource setExampleFor(ResourceReferenceDt theValue) {
2806                myExampleFor = theValue;
2807                return this;
2808        }
2809        
2810        
2811
2812  
2813
2814
2815        }
2816
2817
2818
2819        /**
2820         * Block class for child element: <b>ImplementationGuide.global</b> ()
2821         *
2822     * <p>
2823     * <b>Definition:</b>
2824     * A set of profiles that all resources covered by this implementation guide must conform to
2825     * </p> 
2826         */
2827        @Block()        
2828        public static class Global 
2829            extends  BaseIdentifiableElement        implements IResourceBlock {
2830        
2831        @Child(name="type", type=CodeDt.class, order=0, min=1, max=1, summary=true, modifier=false)     
2832        @Description(
2833                shortDefinition="",
2834                formalDefinition="The type of resource that all instances must conform to"
2835        )
2836        private BoundCodeDt<ResourceTypeEnum> myType;
2837        
2838        @Child(name="profile", order=1, min=1, max=1, summary=true, modifier=false, type={
2839                ca.uhn.fhir.model.dstu2.resource.StructureDefinition.class      })
2840        @Description(
2841                shortDefinition="",
2842                formalDefinition="A reference to the profile that all instances must conform to"
2843        )
2844        private ResourceReferenceDt myProfile;
2845        
2846
2847        @Override
2848        public boolean isEmpty() {
2849                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myType,  myProfile);
2850        }
2851        
2852        @Override
2853        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2854                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myType, myProfile);
2855        }
2856
2857        /**
2858         * Gets the value(s) for <b>type</b> ().
2859         * creating it if it does
2860         * not exist. Will not return <code>null</code>.
2861         *
2862     * <p>
2863     * <b>Definition:</b>
2864     * The type of resource that all instances must conform to
2865     * </p> 
2866         */
2867        public BoundCodeDt<ResourceTypeEnum> getTypeElement() {  
2868                if (myType == null) {
2869                        myType = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER);
2870                }
2871                return myType;
2872        }
2873
2874        
2875        /**
2876         * Gets the value(s) for <b>type</b> ().
2877         * creating it if it does
2878         * not exist. Will not return <code>null</code>.
2879         *
2880     * <p>
2881     * <b>Definition:</b>
2882     * The type of resource that all instances must conform to
2883     * </p> 
2884         */
2885        public String getType() {  
2886                return getTypeElement().getValue();
2887        }
2888
2889        /**
2890         * Sets the value(s) for <b>type</b> ()
2891         *
2892     * <p>
2893     * <b>Definition:</b>
2894     * The type of resource that all instances must conform to
2895     * </p> 
2896         */
2897        public Global setType(BoundCodeDt<ResourceTypeEnum> theValue) {
2898                myType = theValue;
2899                return this;
2900        }
2901        
2902        
2903
2904        /**
2905         * Sets the value(s) for <b>type</b> ()
2906         *
2907     * <p>
2908     * <b>Definition:</b>
2909     * The type of resource that all instances must conform to
2910     * </p> 
2911         */
2912        public Global setType(ResourceTypeEnum theValue) {
2913                setType(new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER, theValue));
2914                
2915/*
2916                getTypeElement().setValueAsEnum(theValue);
2917*/
2918                return this;
2919        }
2920
2921  
2922        /**
2923         * Gets the value(s) for <b>profile</b> ().
2924         * creating it if it does
2925         * not exist. Will not return <code>null</code>.
2926         *
2927     * <p>
2928     * <b>Definition:</b>
2929     * A reference to the profile that all instances must conform to
2930     * </p> 
2931         */
2932        public ResourceReferenceDt getProfile() {  
2933                if (myProfile == null) {
2934                        myProfile = new ResourceReferenceDt();
2935                }
2936                return myProfile;
2937        }
2938
2939        /**
2940         * Sets the value(s) for <b>profile</b> ()
2941         *
2942     * <p>
2943     * <b>Definition:</b>
2944     * A reference to the profile that all instances must conform to
2945     * </p> 
2946         */
2947        public Global setProfile(ResourceReferenceDt theValue) {
2948                myProfile = theValue;
2949                return this;
2950        }
2951        
2952        
2953
2954  
2955
2956
2957        }
2958
2959
2960        /**
2961         * Block class for child element: <b>ImplementationGuide.page</b> ()
2962         *
2963     * <p>
2964     * <b>Definition:</b>
2965     * A page / section in the implementation guide. The root page is the implementation guide home page
2966     * </p> 
2967         */
2968        @Block()        
2969        public static class Page 
2970            extends  BaseIdentifiableElement        implements IResourceBlock {
2971        
2972        @Child(name="source", type=UriDt.class, order=0, min=1, max=1, summary=true, modifier=false)    
2973        @Description(
2974                shortDefinition="",
2975                formalDefinition="The source address for the page"
2976        )
2977        private UriDt mySource;
2978        
2979        @Child(name="name", type=StringDt.class, order=1, min=1, max=1, summary=true, modifier=false)   
2980        @Description(
2981                shortDefinition="",
2982                formalDefinition="A short name used to represent this page in navigational structures such as table of contents, bread crumbs, etc."
2983        )
2984        private StringDt myName;
2985        
2986        @Child(name="kind", type=CodeDt.class, order=2, min=1, max=1, summary=true, modifier=false)     
2987        @Description(
2988                shortDefinition="",
2989                formalDefinition="The kind of page that this is. Some pages are autogenerated (list, example), and other kinds are of interest so that tools can navigate the user to the page of interest"
2990        )
2991        private BoundCodeDt<GuidePageKindEnum> myKind;
2992        
2993        @Child(name="type", type=CodeDt.class, order=3, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
2994        @Description(
2995                shortDefinition="",
2996                formalDefinition="For constructed pages, what kind of resources to include in the list"
2997        )
2998        private java.util.List<BoundCodeDt<ResourceTypeEnum>> myType;
2999        
3000        @Child(name="package", type=StringDt.class, order=4, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
3001        @Description(
3002                shortDefinition="",
3003                formalDefinition="For constructed pages, a list of packages to include in the page (or else empty for everything)"
3004        )
3005        private java.util.List<StringDt> myPackage;
3006        
3007        @Child(name="format", type=CodeDt.class, order=5, min=0, max=1, summary=false, modifier=false)  
3008        @Description(
3009                shortDefinition="",
3010                formalDefinition="The format of the page"
3011        )
3012        private CodeDt myFormat;
3013        
3014        @Child(name="page", type=Page.class, order=6, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
3015        @Description(
3016                shortDefinition="",
3017                formalDefinition="Nested Pages/Sections under this page"
3018        )
3019        private java.util.List<Page> myPage;
3020        
3021
3022        @Override
3023        public boolean isEmpty() {
3024                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  mySource,  myName,  myKind,  myType,  myPackage,  myFormat,  myPage);
3025        }
3026        
3027        @Override
3028        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
3029                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, mySource, myName, myKind, myType, myPackage, myFormat, myPage);
3030        }
3031
3032        /**
3033         * Gets the value(s) for <b>source</b> ().
3034         * creating it if it does
3035         * not exist. Will not return <code>null</code>.
3036         *
3037     * <p>
3038     * <b>Definition:</b>
3039     * The source address for the page
3040     * </p> 
3041         */
3042        public UriDt getSourceElement() {  
3043                if (mySource == null) {
3044                        mySource = new UriDt();
3045                }
3046                return mySource;
3047        }
3048
3049        
3050        /**
3051         * Gets the value(s) for <b>source</b> ().
3052         * creating it if it does
3053         * not exist. Will not return <code>null</code>.
3054         *
3055     * <p>
3056     * <b>Definition:</b>
3057     * The source address for the page
3058     * </p> 
3059         */
3060        public String getSource() {  
3061                return getSourceElement().getValue();
3062        }
3063
3064        /**
3065         * Sets the value(s) for <b>source</b> ()
3066         *
3067     * <p>
3068     * <b>Definition:</b>
3069     * The source address for the page
3070     * </p> 
3071         */
3072        public Page setSource(UriDt theValue) {
3073                mySource = theValue;
3074                return this;
3075        }
3076        
3077        
3078
3079        /**
3080         * Sets the value for <b>source</b> ()
3081         *
3082     * <p>
3083     * <b>Definition:</b>
3084     * The source address for the page
3085     * </p> 
3086         */
3087        public Page setSource( String theUri) {
3088                mySource = new UriDt(theUri); 
3089                return this; 
3090        }
3091
3092 
3093        /**
3094         * Gets the value(s) for <b>name</b> ().
3095         * creating it if it does
3096         * not exist. Will not return <code>null</code>.
3097         *
3098     * <p>
3099     * <b>Definition:</b>
3100     * A short name used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
3101     * </p> 
3102         */
3103        public StringDt getNameElement() {  
3104                if (myName == null) {
3105                        myName = new StringDt();
3106                }
3107                return myName;
3108        }
3109
3110        
3111        /**
3112         * Gets the value(s) for <b>name</b> ().
3113         * creating it if it does
3114         * not exist. Will not return <code>null</code>.
3115         *
3116     * <p>
3117     * <b>Definition:</b>
3118     * A short name used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
3119     * </p> 
3120         */
3121        public String getName() {  
3122                return getNameElement().getValue();
3123        }
3124
3125        /**
3126         * Sets the value(s) for <b>name</b> ()
3127         *
3128     * <p>
3129     * <b>Definition:</b>
3130     * A short name used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
3131     * </p> 
3132         */
3133        public Page setName(StringDt theValue) {
3134                myName = theValue;
3135                return this;
3136        }
3137        
3138        
3139
3140        /**
3141         * Sets the value for <b>name</b> ()
3142         *
3143     * <p>
3144     * <b>Definition:</b>
3145     * A short name used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
3146     * </p> 
3147         */
3148        public Page setName( String theString) {
3149                myName = new StringDt(theString); 
3150                return this; 
3151        }
3152
3153 
3154        /**
3155         * Gets the value(s) for <b>kind</b> ().
3156         * creating it if it does
3157         * not exist. Will not return <code>null</code>.
3158         *
3159     * <p>
3160     * <b>Definition:</b>
3161     * The kind of page that this is. Some pages are autogenerated (list, example), and other kinds are of interest so that tools can navigate the user to the page of interest
3162     * </p> 
3163         */
3164        public BoundCodeDt<GuidePageKindEnum> getKindElement() {  
3165                if (myKind == null) {
3166                        myKind = new BoundCodeDt<GuidePageKindEnum>(GuidePageKindEnum.VALUESET_BINDER);
3167                }
3168                return myKind;
3169        }
3170
3171        
3172        /**
3173         * Gets the value(s) for <b>kind</b> ().
3174         * creating it if it does
3175         * not exist. Will not return <code>null</code>.
3176         *
3177     * <p>
3178     * <b>Definition:</b>
3179     * The kind of page that this is. Some pages are autogenerated (list, example), and other kinds are of interest so that tools can navigate the user to the page of interest
3180     * </p> 
3181         */
3182        public String getKind() {  
3183                return getKindElement().getValue();
3184        }
3185
3186        /**
3187         * Sets the value(s) for <b>kind</b> ()
3188         *
3189     * <p>
3190     * <b>Definition:</b>
3191     * The kind of page that this is. Some pages are autogenerated (list, example), and other kinds are of interest so that tools can navigate the user to the page of interest
3192     * </p> 
3193         */
3194        public Page setKind(BoundCodeDt<GuidePageKindEnum> theValue) {
3195                myKind = theValue;
3196                return this;
3197        }
3198        
3199        
3200
3201        /**
3202         * Sets the value(s) for <b>kind</b> ()
3203         *
3204     * <p>
3205     * <b>Definition:</b>
3206     * The kind of page that this is. Some pages are autogenerated (list, example), and other kinds are of interest so that tools can navigate the user to the page of interest
3207     * </p> 
3208         */
3209        public Page setKind(GuidePageKindEnum theValue) {
3210                setKind(new BoundCodeDt<GuidePageKindEnum>(GuidePageKindEnum.VALUESET_BINDER, theValue));
3211                
3212/*
3213                getKindElement().setValueAsEnum(theValue);
3214*/
3215                return this;
3216        }
3217
3218  
3219        /**
3220         * Gets the value(s) for <b>type</b> ().
3221         * creating it if it does
3222         * not exist. Will not return <code>null</code>.
3223         *
3224     * <p>
3225     * <b>Definition:</b>
3226     * For constructed pages, what kind of resources to include in the list
3227     * </p> 
3228         */
3229        public java.util.List<BoundCodeDt<ResourceTypeEnum>> getType() {  
3230                if (myType == null) {
3231                        myType = new java.util.ArrayList<BoundCodeDt<ResourceTypeEnum>>();
3232                }
3233                return myType;
3234        }
3235
3236        /**
3237         * Sets the value(s) for <b>type</b> ()
3238         *
3239     * <p>
3240     * <b>Definition:</b>
3241     * For constructed pages, what kind of resources to include in the list
3242     * </p> 
3243         */
3244        public Page setType(java.util.List<BoundCodeDt<ResourceTypeEnum>> theValue) {
3245                myType = theValue;
3246                return this;
3247        }
3248        
3249        
3250
3251        /**
3252         * Add a value for <b>type</b> () using an enumerated type. This
3253         * is intended as a convenience method for situations where the FHIR defined ValueSets are mandatory
3254         * or contain the desirable codes. If you wish to use codes other than those which are built-in, 
3255         * you may also use the {@link #addType()} method.
3256         *
3257     * <p>
3258     * <b>Definition:</b>
3259     * For constructed pages, what kind of resources to include in the list
3260     * </p> 
3261         */
3262        public BoundCodeDt<ResourceTypeEnum> addType(ResourceTypeEnum theValue) {
3263                BoundCodeDt<ResourceTypeEnum> retVal = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER, theValue);
3264                getType().add(retVal);
3265                return retVal;
3266        }
3267
3268        /**
3269         * Gets the first repetition for <b>type</b> (),
3270         * creating it if it does not already exist.
3271         *
3272     * <p>
3273     * <b>Definition:</b>
3274     * For constructed pages, what kind of resources to include in the list
3275     * </p> 
3276         */
3277        public BoundCodeDt<ResourceTypeEnum> getTypeFirstRep() {
3278                if (getType().size() == 0) {
3279                        addType();
3280                }
3281                return getType().get(0);
3282        }
3283
3284        /**
3285         * Add a value for <b>type</b> ()
3286         *
3287     * <p>
3288     * <b>Definition:</b>
3289     * For constructed pages, what kind of resources to include in the list
3290     * </p> 
3291         */
3292        public BoundCodeDt<ResourceTypeEnum> addType() {
3293                BoundCodeDt<ResourceTypeEnum> retVal = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER);
3294                getType().add(retVal);
3295                return retVal;
3296        }
3297
3298        /**
3299         * Sets the value(s), and clears any existing value(s) for <b>type</b> ()
3300         *
3301     * <p>
3302     * <b>Definition:</b>
3303     * For constructed pages, what kind of resources to include in the list
3304     * </p> 
3305         */
3306        public Page setType(ResourceTypeEnum theValue) {
3307                getType().clear();
3308                addType(theValue);
3309                return this;
3310        }
3311
3312  
3313        /**
3314         * Gets the value(s) for <b>package</b> ().
3315         * creating it if it does
3316         * not exist. Will not return <code>null</code>.
3317         *
3318     * <p>
3319     * <b>Definition:</b>
3320     * For constructed pages, a list of packages to include in the page (or else empty for everything)
3321     * </p> 
3322         */
3323        public java.util.List<StringDt> getPackage() {  
3324                if (myPackage == null) {
3325                        myPackage = new java.util.ArrayList<StringDt>();
3326                }
3327                return myPackage;
3328        }
3329
3330        /**
3331         * Sets the value(s) for <b>package</b> ()
3332         *
3333     * <p>
3334     * <b>Definition:</b>
3335     * For constructed pages, a list of packages to include in the page (or else empty for everything)
3336     * </p> 
3337         */
3338        public Page setPackage(java.util.List<StringDt> theValue) {
3339                myPackage = theValue;
3340                return this;
3341        }
3342        
3343        
3344
3345        /**
3346         * Adds and returns a new value for <b>package</b> ()
3347         *
3348     * <p>
3349     * <b>Definition:</b>
3350     * For constructed pages, a list of packages to include in the page (or else empty for everything)
3351     * </p> 
3352         */
3353        public StringDt addPackage() {
3354                StringDt newType = new StringDt();
3355                getPackage().add(newType);
3356                return newType; 
3357        }
3358
3359        /**
3360         * Adds a given new value for <b>package</b> ()
3361         *
3362         * <p>
3363         * <b>Definition:</b>
3364         * For constructed pages, a list of packages to include in the page (or else empty for everything)
3365         * </p>
3366         * @param theValue The package to add (must not be <code>null</code>)
3367         */
3368        public Page addPackage(StringDt theValue) {
3369                if (theValue == null) {
3370                        throw new NullPointerException("theValue must not be null");
3371                }
3372                getPackage().add(theValue);
3373                return this;
3374        }
3375
3376        /**
3377         * Gets the first repetition for <b>package</b> (),
3378         * creating it if it does not already exist.
3379         *
3380     * <p>
3381     * <b>Definition:</b>
3382     * For constructed pages, a list of packages to include in the page (or else empty for everything)
3383     * </p> 
3384         */
3385        public StringDt getPackageFirstRep() {
3386                if (getPackage().isEmpty()) {
3387                        return addPackage();
3388                }
3389                return getPackage().get(0); 
3390        }
3391        /**
3392         * Adds a new value for <b>package</b> ()
3393         *
3394     * <p>
3395     * <b>Definition:</b>
3396     * For constructed pages, a list of packages to include in the page (or else empty for everything)
3397     * </p> 
3398     *
3399     * @return Returns a reference to this object, to allow for simple chaining.
3400         */
3401        public Page addPackage( String theString) {
3402                if (myPackage == null) {
3403                        myPackage = new java.util.ArrayList<StringDt>();
3404                }
3405                myPackage.add(new StringDt(theString));
3406                return this; 
3407        }
3408
3409 
3410        /**
3411         * Gets the value(s) for <b>format</b> ().
3412         * creating it if it does
3413         * not exist. Will not return <code>null</code>.
3414         *
3415     * <p>
3416     * <b>Definition:</b>
3417     * The format of the page
3418     * </p> 
3419         */
3420        public CodeDt getFormatElement() {  
3421                if (myFormat == null) {
3422                        myFormat = new CodeDt();
3423                }
3424                return myFormat;
3425        }
3426
3427        
3428        /**
3429         * Gets the value(s) for <b>format</b> ().
3430         * creating it if it does
3431         * not exist. Will not return <code>null</code>.
3432         *
3433     * <p>
3434     * <b>Definition:</b>
3435     * The format of the page
3436     * </p> 
3437         */
3438        public String getFormat() {  
3439                return getFormatElement().getValue();
3440        }
3441
3442        /**
3443         * Sets the value(s) for <b>format</b> ()
3444         *
3445     * <p>
3446     * <b>Definition:</b>
3447     * The format of the page
3448     * </p> 
3449         */
3450        public Page setFormat(CodeDt theValue) {
3451                myFormat = theValue;
3452                return this;
3453        }
3454        
3455        
3456
3457        /**
3458         * Sets the value for <b>format</b> ()
3459         *
3460     * <p>
3461     * <b>Definition:</b>
3462     * The format of the page
3463     * </p> 
3464         */
3465        public Page setFormat( String theCode) {
3466                myFormat = new CodeDt(theCode); 
3467                return this; 
3468        }
3469
3470 
3471        /**
3472         * Gets the value(s) for <b>page</b> ().
3473         * creating it if it does
3474         * not exist. Will not return <code>null</code>.
3475         *
3476     * <p>
3477     * <b>Definition:</b>
3478     * Nested Pages/Sections under this page
3479     * </p> 
3480         */
3481        public java.util.List<Page> getPage() {  
3482                if (myPage == null) {
3483                        myPage = new java.util.ArrayList<Page>();
3484                }
3485                return myPage;
3486        }
3487
3488        /**
3489         * Sets the value(s) for <b>page</b> ()
3490         *
3491     * <p>
3492     * <b>Definition:</b>
3493     * Nested Pages/Sections under this page
3494     * </p> 
3495         */
3496        public Page setPage(java.util.List<Page> theValue) {
3497                myPage = theValue;
3498                return this;
3499        }
3500        
3501        
3502
3503        /**
3504         * Adds and returns a new value for <b>page</b> ()
3505         *
3506     * <p>
3507     * <b>Definition:</b>
3508     * Nested Pages/Sections under this page
3509     * </p> 
3510         */
3511        public Page addPage() {
3512                Page newType = new Page();
3513                getPage().add(newType);
3514                return newType; 
3515        }
3516
3517        /**
3518         * Adds a given new value for <b>page</b> ()
3519         *
3520         * <p>
3521         * <b>Definition:</b>
3522         * Nested Pages/Sections under this page
3523         * </p>
3524         * @param theValue The page to add (must not be <code>null</code>)
3525         */
3526        public Page addPage(Page theValue) {
3527                if (theValue == null) {
3528                        throw new NullPointerException("theValue must not be null");
3529                }
3530                getPage().add(theValue);
3531                return this;
3532        }
3533
3534        /**
3535         * Gets the first repetition for <b>page</b> (),
3536         * creating it if it does not already exist.
3537         *
3538     * <p>
3539     * <b>Definition:</b>
3540     * Nested Pages/Sections under this page
3541     * </p> 
3542         */
3543        public Page getPageFirstRep() {
3544                if (getPage().isEmpty()) {
3545                        return addPage();
3546                }
3547                return getPage().get(0); 
3548        }
3549  
3550
3551
3552        }
3553
3554
3555
3556
3557    @Override
3558    public String getResourceName() {
3559        return "ImplementationGuide";
3560    }
3561    
3562    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
3563        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
3564    }
3565
3566
3567}