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