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