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>Conformance</b> Resource
282 * ()
283 *
284 * <p>
285 * <b>Definition:</b>
286 * A conformance statement is a set of capabilities of a FHIR Server that may be used as a statement of actual server functionality or a statement of required or desired server implementation.
287 * </p> 
288 *
289 * <p>
290 * <b>Requirements:</b>
291 * 
292 * </p> 
293 *
294 * <p>
295 * <b>Profile Definition:</b>
296 * <a href="http://hl7.org/fhir/profiles/Conformance">http://hl7.org/fhir/profiles/Conformance</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="Conformance", profile="http://hl7.org/fhir/profiles/Conformance", id="conformance")
301public class Conformance extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  ca.uhn.fhir.model.base.resource.BaseConformance 
303    {
304
305        /**
306         * Search parameter constant for <b>url</b>
307         * <p>
308         * Description: <b>The uri that identifies the conformance statement</b><br>
309         * Type: <b>uri</b><br>
310         * Path: <b>Conformance.url</b><br>
311         * </p>
312         */
313        @SearchParamDefinition(name="url", path="Conformance.url", description="The uri that identifies the conformance statement", type="uri" 
314 )
315        public static final String SP_URL = "url";
316
317        /**
318         * <b>Fluent Client</b> search parameter constant for <b>url</b>
319         * <p>
320         * Description: <b>The uri that identifies the conformance statement</b><br>
321         * Type: <b>uri</b><br>
322         * Path: <b>Conformance.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 conformance statement</b><br>
331         * Type: <b>token</b><br>
332         * Path: <b>Conformance.version</b><br>
333         * </p>
334         */
335        @SearchParamDefinition(name="version", path="Conformance.version", description="The version identifier of the conformance statement", 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 conformance statement</b><br>
343         * Type: <b>token</b><br>
344         * Path: <b>Conformance.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 conformance statement</b><br>
353         * Type: <b>string</b><br>
354         * Path: <b>Conformance.name</b><br>
355         * </p>
356         */
357        @SearchParamDefinition(name="name", path="Conformance.name", description="Name of the conformance statement", 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 conformance statement</b><br>
365         * Type: <b>string</b><br>
366         * Path: <b>Conformance.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 conformance statement</b><br>
375         * Type: <b>string</b><br>
376         * Path: <b>Conformance.publisher</b><br>
377         * </p>
378         */
379        @SearchParamDefinition(name="publisher", path="Conformance.publisher", description="Name of the publisher of the conformance statement", 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 conformance statement</b><br>
387         * Type: <b>string</b><br>
388         * Path: <b>Conformance.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 conformance statement</b><br>
397         * Type: <b>string</b><br>
398         * Path: <b>Conformance.description</b><br>
399         * </p>
400         */
401        @SearchParamDefinition(name="description", path="Conformance.description", description="Text search in the description of the conformance statement", 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 conformance statement</b><br>
409         * Type: <b>string</b><br>
410         * Path: <b>Conformance.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 conformance statement</b><br>
419         * Type: <b>token</b><br>
420         * Path: <b>Conformance.status</b><br>
421         * </p>
422         */
423        @SearchParamDefinition(name="status", path="Conformance.status", description="The current status of the conformance statement", 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 conformance statement</b><br>
431         * Type: <b>token</b><br>
432         * Path: <b>Conformance.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 conformance statement publication date</b><br>
441         * Type: <b>date</b><br>
442         * Path: <b>Conformance.date</b><br>
443         * </p>
444         */
445        @SearchParamDefinition(name="date", path="Conformance.date", description="The conformance statement 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 conformance statement publication date</b><br>
453         * Type: <b>date</b><br>
454         * Path: <b>Conformance.date</b><br>
455         * </p>
456         */
457        public static final DateClientParam DATE = new DateClientParam(SP_DATE);
458
459        /**
460         * Search parameter constant for <b>software</b>
461         * <p>
462         * Description: <b>Part of a the name of a software application</b><br>
463         * Type: <b>string</b><br>
464         * Path: <b>Conformance.software.name</b><br>
465         * </p>
466         */
467        @SearchParamDefinition(name="software", path="Conformance.software.name", description="Part of a the name of a software application", type="string" 
468 )
469        public static final String SP_SOFTWARE = "software";
470
471        /**
472         * <b>Fluent Client</b> search parameter constant for <b>software</b>
473         * <p>
474         * Description: <b>Part of a the name of a software application</b><br>
475         * Type: <b>string</b><br>
476         * Path: <b>Conformance.software.name</b><br>
477         * </p>
478         */
479        public static final StringClientParam SOFTWARE = new StringClientParam(SP_SOFTWARE);
480
481        /**
482         * Search parameter constant for <b>fhirversion</b>
483         * <p>
484         * Description: <b>The version of FHIR</b><br>
485         * Type: <b>token</b><br>
486         * Path: <b>Conformance.version</b><br>
487         * </p>
488         */
489        @SearchParamDefinition(name="fhirversion", path="Conformance.version", description="The version of FHIR", type="token" 
490 )
491        public static final String SP_FHIRVERSION = "fhirversion";
492
493        /**
494         * <b>Fluent Client</b> search parameter constant for <b>fhirversion</b>
495         * <p>
496         * Description: <b>The version of FHIR</b><br>
497         * Type: <b>token</b><br>
498         * Path: <b>Conformance.version</b><br>
499         * </p>
500         */
501        public static final TokenClientParam FHIRVERSION = new TokenClientParam(SP_FHIRVERSION);
502
503        /**
504         * Search parameter constant for <b>resource</b>
505         * <p>
506         * Description: <b>Name of a resource mentioned in a conformance statement</b><br>
507         * Type: <b>token</b><br>
508         * Path: <b>Conformance.rest.resource.type</b><br>
509         * </p>
510         */
511        @SearchParamDefinition(name="resource", path="Conformance.rest.resource.type", description="Name of a resource mentioned in a conformance statement", type="token" 
512 )
513        public static final String SP_RESOURCE = "resource";
514
515        /**
516         * <b>Fluent Client</b> search parameter constant for <b>resource</b>
517         * <p>
518         * Description: <b>Name of a resource mentioned in a conformance statement</b><br>
519         * Type: <b>token</b><br>
520         * Path: <b>Conformance.rest.resource.type</b><br>
521         * </p>
522         */
523        public static final TokenClientParam RESOURCE = new TokenClientParam(SP_RESOURCE);
524
525        /**
526         * Search parameter constant for <b>event</b>
527         * <p>
528         * Description: <b>Event code in a conformance statement</b><br>
529         * Type: <b>token</b><br>
530         * Path: <b>Conformance.messaging.event.code</b><br>
531         * </p>
532         */
533        @SearchParamDefinition(name="event", path="Conformance.messaging.event.code", description="Event code in a conformance statement", type="token" 
534 )
535        public static final String SP_EVENT = "event";
536
537        /**
538         * <b>Fluent Client</b> search parameter constant for <b>event</b>
539         * <p>
540         * Description: <b>Event code in a conformance statement</b><br>
541         * Type: <b>token</b><br>
542         * Path: <b>Conformance.messaging.event.code</b><br>
543         * </p>
544         */
545        public static final TokenClientParam EVENT = new TokenClientParam(SP_EVENT);
546
547        /**
548         * Search parameter constant for <b>mode</b>
549         * <p>
550         * Description: <b>Mode - restful (server/client) or messaging (sender/receiver)</b><br>
551         * Type: <b>token</b><br>
552         * Path: <b>Conformance.rest.mode</b><br>
553         * </p>
554         */
555        @SearchParamDefinition(name="mode", path="Conformance.rest.mode", description="Mode - restful (server/client) or messaging (sender/receiver)", type="token" 
556 )
557        public static final String SP_MODE = "mode";
558
559        /**
560         * <b>Fluent Client</b> search parameter constant for <b>mode</b>
561         * <p>
562         * Description: <b>Mode - restful (server/client) or messaging (sender/receiver)</b><br>
563         * Type: <b>token</b><br>
564         * Path: <b>Conformance.rest.mode</b><br>
565         * </p>
566         */
567        public static final TokenClientParam MODE = new TokenClientParam(SP_MODE);
568
569        /**
570         * Search parameter constant for <b>profile</b>
571         * <p>
572         * Description: <b>A profile id invoked in a conformance statement</b><br>
573         * Type: <b>reference</b><br>
574         * Path: <b>Conformance.rest.resource.profile</b><br>
575         * </p>
576         */
577        @SearchParamDefinition(name="profile", path="Conformance.rest.resource.profile", description="A profile id invoked in a conformance statement", type="reference" 
578 )
579        public static final String SP_PROFILE = "profile";
580
581        /**
582         * <b>Fluent Client</b> search parameter constant for <b>profile</b>
583         * <p>
584         * Description: <b>A profile id invoked in a conformance statement</b><br>
585         * Type: <b>reference</b><br>
586         * Path: <b>Conformance.rest.resource.profile</b><br>
587         * </p>
588         */
589        public static final ReferenceClientParam PROFILE = new ReferenceClientParam(SP_PROFILE);
590
591        /**
592         * Search parameter constant for <b>format</b>
593         * <p>
594         * Description: <b></b><br>
595         * Type: <b>token</b><br>
596         * Path: <b>Conformance.format</b><br>
597         * </p>
598         */
599        @SearchParamDefinition(name="format", path="Conformance.format", description="", type="token" 
600 )
601        public static final String SP_FORMAT = "format";
602
603        /**
604         * <b>Fluent Client</b> search parameter constant for <b>format</b>
605         * <p>
606         * Description: <b></b><br>
607         * Type: <b>token</b><br>
608         * Path: <b>Conformance.format</b><br>
609         * </p>
610         */
611        public static final TokenClientParam FORMAT = new TokenClientParam(SP_FORMAT);
612
613        /**
614         * Search parameter constant for <b>security</b>
615         * <p>
616         * Description: <b></b><br>
617         * Type: <b>token</b><br>
618         * Path: <b>Conformance.rest.security.service</b><br>
619         * </p>
620         */
621        @SearchParamDefinition(name="security", path="Conformance.rest.security.service", description="", type="token" 
622 )
623        public static final String SP_SECURITY = "security";
624
625        /**
626         * <b>Fluent Client</b> search parameter constant for <b>security</b>
627         * <p>
628         * Description: <b></b><br>
629         * Type: <b>token</b><br>
630         * Path: <b>Conformance.rest.security.service</b><br>
631         * </p>
632         */
633        public static final TokenClientParam SECURITY = new TokenClientParam(SP_SECURITY);
634
635        /**
636         * Search parameter constant for <b>supported-profile</b>
637         * <p>
638         * Description: <b></b><br>
639         * Type: <b>reference</b><br>
640         * Path: <b>Conformance.profile</b><br>
641         * </p>
642         */
643        @SearchParamDefinition(name="supported-profile", path="Conformance.profile", description="", type="reference" 
644 )
645        public static final String SP_SUPPORTED_PROFILE = "supported-profile";
646
647        /**
648         * <b>Fluent Client</b> search parameter constant for <b>supported-profile</b>
649         * <p>
650         * Description: <b></b><br>
651         * Type: <b>reference</b><br>
652         * Path: <b>Conformance.profile</b><br>
653         * </p>
654         */
655        public static final ReferenceClientParam SUPPORTED_PROFILE = new ReferenceClientParam(SP_SUPPORTED_PROFILE);
656
657
658        /**
659         * Constant for fluent queries to be used to add include statements. Specifies
660         * the path value of "<b>Conformance:profile</b>".
661         */
662        public static final Include INCLUDE_PROFILE = new Include("Conformance:profile");
663
664        /**
665         * Constant for fluent queries to be used to add include statements. Specifies
666         * the path value of "<b>Conformance:supported-profile</b>".
667         */
668        public static final Include INCLUDE_SUPPORTED_PROFILE = new Include("Conformance:supported-profile");
669
670
671        @Child(name="url", type=UriDt.class, order=0, min=0, max=1, summary=true, modifier=false)       
672        @Description(
673                shortDefinition="",
674                formalDefinition="An absolute URL that is used to identify this conformance statement 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 conformance statement is (or will be) published"
675        )
676        private UriDt myUrl;
677        
678        @Child(name="version", type=StringDt.class, order=1, min=0, max=1, summary=true, modifier=false)        
679        @Description(
680                shortDefinition="",
681                formalDefinition="The identifier that is used to identify this version of the conformance statement when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp"
682        )
683        private StringDt myVersion;
684        
685        @Child(name="name", type=StringDt.class, order=2, min=0, max=1, summary=true, modifier=false)   
686        @Description(
687                shortDefinition="",
688                formalDefinition="A free text natural language name identifying the conformance statement"
689        )
690        private StringDt myName;
691        
692        @Child(name="status", type=CodeDt.class, order=3, min=0, max=1, summary=true, modifier=false)   
693        @Description(
694                shortDefinition="",
695                formalDefinition="The status of this conformance statement"
696        )
697        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/conformance-resource-status")
698        private BoundCodeDt<ConformanceResourceStatusEnum> myStatus;
699        
700        @Child(name="experimental", type=BooleanDt.class, order=4, min=0, max=1, summary=true, modifier=false)  
701        @Description(
702                shortDefinition="",
703                formalDefinition="A flag to indicate that this conformance statement is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage"
704        )
705        private BooleanDt myExperimental;
706        
707        @Child(name="publisher", type=StringDt.class, order=5, min=0, max=1, summary=true, modifier=false)      
708        @Description(
709                shortDefinition="",
710                formalDefinition="The name of the individual or organization that published the conformance"
711        )
712        private StringDt myPublisher;
713        
714        @Child(name="contact", order=6, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
715        @Description(
716                shortDefinition="",
717                formalDefinition="Contacts to assist a user in finding and communicating with the publisher"
718        )
719        private java.util.List<Contact> myContact;
720        
721        @Child(name="date", type=DateTimeDt.class, order=7, min=1, max=1, summary=true, modifier=false) 
722        @Description(
723                shortDefinition="",
724                formalDefinition="The date  (and optionally time) when the conformance statement 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 conformance statement changes"
725        )
726        private DateTimeDt myDate;
727        
728        @Child(name="description", type=StringDt.class, order=8, min=0, max=1, summary=true, modifier=false)    
729        @Description(
730                shortDefinition="",
731                formalDefinition="A free text natural language description of the conformance statement and its use. Typically, this is used when the conformance statement describes a desired rather than an actual solution, for example as a formal expression of requirements as part of an RFP"
732        )
733        private StringDt myDescription;
734        
735        @Child(name="requirements", type=StringDt.class, order=9, min=0, max=1, summary=false, modifier=false)  
736        @Description(
737                shortDefinition="",
738                formalDefinition="Explains why this conformance statement is needed and why it's been constrained as it has"
739        )
740        private StringDt myRequirements;
741        
742        @Child(name="copyright", type=StringDt.class, order=10, min=0, max=1, summary=false, modifier=false)    
743        @Description(
744                shortDefinition="",
745                formalDefinition="A copyright statement relating to the conformance statement and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the system described by the conformance statement"
746        )
747        private StringDt myCopyright;
748        
749        @Child(name="kind", type=CodeDt.class, order=11, min=1, max=1, summary=true, modifier=false)    
750        @Description(
751                shortDefinition="",
752                formalDefinition="The way that this statement is intended to be used, to describe an actual running instance of software, a particular product (kind not instance of software) or a class of implementation (e.g. a desired purchase)"
753        )
754        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/conformance-statement-kind")
755        private BoundCodeDt<ConformanceStatementKindEnum> myKind;
756        
757        @Child(name="software", order=12, min=0, max=1, summary=true, modifier=false)   
758        @Description(
759                shortDefinition="",
760                formalDefinition="Software that is covered by this conformance statement.  It is used when the conformance statement describes the capabilities of a particular software version, independent of an installation."
761        )
762        private Software mySoftware;
763        
764        @Child(name="implementation", order=13, min=0, max=1, summary=true, modifier=false)     
765        @Description(
766                shortDefinition="",
767                formalDefinition="Identifies a specific implementation instance that is described by the conformance statement - i.e. a particular installation, rather than the capabilities of a software program"
768        )
769        private Implementation myImplementation;
770        
771        @Child(name="fhirVersion", type=IdDt.class, order=14, min=1, max=1, summary=true, modifier=false)       
772        @Description(
773                shortDefinition="",
774                formalDefinition="The version of the FHIR specification on which this conformance statement is based"
775        )
776        private IdDt myFhirVersion;
777        
778        @Child(name="acceptUnknown", type=CodeDt.class, order=15, min=1, max=1, summary=true, modifier=false)   
779        @Description(
780                shortDefinition="",
781                formalDefinition="A code that indicates whether the application accepts unknown elements or extensions when reading resources"
782        )
783        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/unknown-content-code")
784        private BoundCodeDt<UnknownContentCodeEnum> myAcceptUnknown;
785        
786        @Child(name="format", type=CodeDt.class, order=16, min=1, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
787        @Description(
788                shortDefinition="",
789                formalDefinition="A list of the formats supported by this implementation using their content types"
790        )
791        private java.util.List<CodeDt> myFormat;
792        
793        @Child(name="profile", order=17, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
794                ca.uhn.fhir.model.dstu2.resource.StructureDefinition.class
795        })
796        @Description(
797                shortDefinition="",
798                formalDefinition="A list of profiles that represent different use cases supported by the system. For a server, \"supported by the system\" means the system hosts/produces a set of resources that are conformant to a particular profile, and allows clients that use its services to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile. See further discussion in [Using Profiles]{profiling.html#profile-uses}"
799        )
800        private java.util.List<ResourceReferenceDt> myProfile;
801        
802        @Child(name="rest", order=18, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)     
803        @Description(
804                shortDefinition="",
805                formalDefinition="A definition of the restful capabilities of the solution, if any"
806        )
807        private java.util.List<Rest> myRest;
808        
809        @Child(name="messaging", order=19, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
810        @Description(
811                shortDefinition="",
812                formalDefinition="A description of the messaging capabilities of the solution"
813        )
814        private java.util.List<Messaging> myMessaging;
815        
816        @Child(name="document", order=20, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
817        @Description(
818                shortDefinition="",
819                formalDefinition="A document definition"
820        )
821        private java.util.List<Document> myDocument;
822        
823
824        @Override
825        public boolean isEmpty() {
826                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myUrl,  myVersion,  myName,  myStatus,  myExperimental,  myPublisher,  myContact,  myDate,  myDescription,  myRequirements,  myCopyright,  myKind,  mySoftware,  myImplementation,  myFhirVersion,  myAcceptUnknown,  myFormat,  myProfile,  myRest,  myMessaging,  myDocument);
827        }
828        
829        @Override
830        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
831                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myUrl, myVersion, myName, myStatus, myExperimental, myPublisher, myContact, myDate, myDescription, myRequirements, myCopyright, myKind, mySoftware, myImplementation, myFhirVersion, myAcceptUnknown, myFormat, myProfile, myRest, myMessaging, myDocument);
832        }
833
834        /**
835         * Gets the value(s) for <b>url</b> ().
836         * creating it if it does
837         * not exist. Will not return <code>null</code>.
838         *
839     * <p>
840     * <b>Definition:</b>
841     * An absolute URL that is used to identify this conformance statement 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 conformance statement is (or will be) published
842     * </p> 
843         */
844        public UriDt getUrlElement() {  
845                if (myUrl == null) {
846                        myUrl = new UriDt();
847                }
848                return myUrl;
849        }
850
851        
852        /**
853         * Gets the value(s) for <b>url</b> ().
854         * creating it if it does
855         * not exist. This method may return <code>null</code>.
856         *
857     * <p>
858     * <b>Definition:</b>
859     * An absolute URL that is used to identify this conformance statement 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 conformance statement is (or will be) published
860     * </p> 
861         */
862        public String getUrl() {  
863                return getUrlElement().getValue();
864        }
865
866        /**
867         * Sets the value(s) for <b>url</b> ()
868         *
869     * <p>
870     * <b>Definition:</b>
871     * An absolute URL that is used to identify this conformance statement 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 conformance statement is (or will be) published
872     * </p> 
873         */
874        public Conformance setUrl(UriDt theValue) {
875                myUrl = theValue;
876                return this;
877        }
878        
879        
880
881        /**
882         * Sets the value for <b>url</b> ()
883         *
884     * <p>
885     * <b>Definition:</b>
886     * An absolute URL that is used to identify this conformance statement 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 conformance statement is (or will be) published
887     * </p> 
888         */
889        public Conformance setUrl( String theUri) {
890                myUrl = new UriDt(theUri); 
891                return this; 
892        }
893
894 
895        /**
896         * Gets the value(s) for <b>version</b> ().
897         * creating it if it does
898         * not exist. Will not return <code>null</code>.
899         *
900     * <p>
901     * <b>Definition:</b>
902     * The identifier that is used to identify this version of the conformance statement when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp
903     * </p> 
904         */
905        public StringDt getVersionElement() {  
906                if (myVersion == null) {
907                        myVersion = new StringDt();
908                }
909                return myVersion;
910        }
911
912        
913        /**
914         * Gets the value(s) for <b>version</b> ().
915         * creating it if it does
916         * not exist. This method may return <code>null</code>.
917         *
918     * <p>
919     * <b>Definition:</b>
920     * The identifier that is used to identify this version of the conformance statement when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp
921     * </p> 
922         */
923        public String getVersion() {  
924                return getVersionElement().getValue();
925        }
926
927        /**
928         * Sets the value(s) for <b>version</b> ()
929         *
930     * <p>
931     * <b>Definition:</b>
932     * The identifier that is used to identify this version of the conformance statement when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp
933     * </p> 
934         */
935        public Conformance setVersion(StringDt theValue) {
936                myVersion = theValue;
937                return this;
938        }
939        
940        
941
942        /**
943         * Sets the value for <b>version</b> ()
944         *
945     * <p>
946     * <b>Definition:</b>
947     * The identifier that is used to identify this version of the conformance statement when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestamp
948     * </p> 
949         */
950        public Conformance setVersion( String theString) {
951                myVersion = new StringDt(theString); 
952                return this; 
953        }
954
955 
956        /**
957         * Gets the value(s) for <b>name</b> ().
958         * creating it if it does
959         * not exist. Will not return <code>null</code>.
960         *
961     * <p>
962     * <b>Definition:</b>
963     * A free text natural language name identifying the conformance statement
964     * </p> 
965         */
966        public StringDt getNameElement() {  
967                if (myName == null) {
968                        myName = new StringDt();
969                }
970                return myName;
971        }
972
973        
974        /**
975         * Gets the value(s) for <b>name</b> ().
976         * creating it if it does
977         * not exist. This method may return <code>null</code>.
978         *
979     * <p>
980     * <b>Definition:</b>
981     * A free text natural language name identifying the conformance statement
982     * </p> 
983         */
984        public String getName() {  
985                return getNameElement().getValue();
986        }
987
988        /**
989         * Sets the value(s) for <b>name</b> ()
990         *
991     * <p>
992     * <b>Definition:</b>
993     * A free text natural language name identifying the conformance statement
994     * </p> 
995         */
996        public Conformance setName(StringDt theValue) {
997                myName = theValue;
998                return this;
999        }
1000        
1001        
1002
1003        /**
1004         * Sets the value for <b>name</b> ()
1005         *
1006     * <p>
1007     * <b>Definition:</b>
1008     * A free text natural language name identifying the conformance statement
1009     * </p> 
1010         */
1011        public Conformance setName( String theString) {
1012                myName = new StringDt(theString); 
1013                return this; 
1014        }
1015
1016 
1017        /**
1018         * Gets the value(s) for <b>status</b> ().
1019         * creating it if it does
1020         * not exist. Will not return <code>null</code>.
1021         *
1022     * <p>
1023     * <b>Definition:</b>
1024     * The status of this conformance statement
1025     * </p> 
1026         */
1027        public BoundCodeDt<ConformanceResourceStatusEnum> getStatusElement() {  
1028                if (myStatus == null) {
1029                        myStatus = new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER);
1030                }
1031                return myStatus;
1032        }
1033
1034        
1035        /**
1036         * Gets the value(s) for <b>status</b> ().
1037         * creating it if it does
1038         * not exist. This method may return <code>null</code>.
1039         *
1040     * <p>
1041     * <b>Definition:</b>
1042     * The status of this conformance statement
1043     * </p> 
1044         */
1045        public String getStatus() {  
1046                return getStatusElement().getValue();
1047        }
1048
1049        /**
1050         * Sets the value(s) for <b>status</b> ()
1051         *
1052     * <p>
1053     * <b>Definition:</b>
1054     * The status of this conformance statement
1055     * </p> 
1056         */
1057        public Conformance setStatus(BoundCodeDt<ConformanceResourceStatusEnum> theValue) {
1058                myStatus = theValue;
1059                return this;
1060        }
1061        
1062        
1063
1064        /**
1065         * Sets the value(s) for <b>status</b> ()
1066         *
1067     * <p>
1068     * <b>Definition:</b>
1069     * The status of this conformance statement
1070     * </p> 
1071         */
1072        public Conformance setStatus(ConformanceResourceStatusEnum theValue) {
1073                setStatus(new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER, theValue));
1074                
1075/*
1076                getStatusElement().setValueAsEnum(theValue);
1077*/
1078                return this;
1079        }
1080
1081  
1082        /**
1083         * Gets the value(s) for <b>experimental</b> ().
1084         * creating it if it does
1085         * not exist. Will not return <code>null</code>.
1086         *
1087     * <p>
1088     * <b>Definition:</b>
1089     * A flag to indicate that this conformance statement is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1090     * </p> 
1091         */
1092        public BooleanDt getExperimentalElement() {  
1093                if (myExperimental == null) {
1094                        myExperimental = new BooleanDt();
1095                }
1096                return myExperimental;
1097        }
1098
1099        
1100        /**
1101         * Gets the value(s) for <b>experimental</b> ().
1102         * creating it if it does
1103         * not exist. This method may return <code>null</code>.
1104         *
1105     * <p>
1106     * <b>Definition:</b>
1107     * A flag to indicate that this conformance statement is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1108     * </p> 
1109         */
1110        public Boolean getExperimental() {  
1111                return getExperimentalElement().getValue();
1112        }
1113
1114        /**
1115         * Sets the value(s) for <b>experimental</b> ()
1116         *
1117     * <p>
1118     * <b>Definition:</b>
1119     * A flag to indicate that this conformance statement is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1120     * </p> 
1121         */
1122        public Conformance setExperimental(BooleanDt theValue) {
1123                myExperimental = theValue;
1124                return this;
1125        }
1126        
1127        
1128
1129        /**
1130         * Sets the value for <b>experimental</b> ()
1131         *
1132     * <p>
1133     * <b>Definition:</b>
1134     * A flag to indicate that this conformance statement is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1135     * </p> 
1136         */
1137        public Conformance setExperimental( boolean theBoolean) {
1138                myExperimental = new BooleanDt(theBoolean); 
1139                return this; 
1140        }
1141
1142 
1143        /**
1144         * Gets the value(s) for <b>publisher</b> ().
1145         * creating it if it does
1146         * not exist. Will not return <code>null</code>.
1147         *
1148     * <p>
1149     * <b>Definition:</b>
1150     * The name of the individual or organization that published the conformance
1151     * </p> 
1152         */
1153        public StringDt getPublisherElement() {  
1154                if (myPublisher == null) {
1155                        myPublisher = new StringDt();
1156                }
1157                return myPublisher;
1158        }
1159
1160        
1161        /**
1162         * Gets the value(s) for <b>publisher</b> ().
1163         * creating it if it does
1164         * not exist. This method may return <code>null</code>.
1165         *
1166     * <p>
1167     * <b>Definition:</b>
1168     * The name of the individual or organization that published the conformance
1169     * </p> 
1170         */
1171        public String getPublisher() {  
1172                return getPublisherElement().getValue();
1173        }
1174
1175        /**
1176         * Sets the value(s) for <b>publisher</b> ()
1177         *
1178     * <p>
1179     * <b>Definition:</b>
1180     * The name of the individual or organization that published the conformance
1181     * </p> 
1182         */
1183        public Conformance setPublisher(StringDt theValue) {
1184                myPublisher = theValue;
1185                return this;
1186        }
1187        
1188        
1189
1190        /**
1191         * Sets the value for <b>publisher</b> ()
1192         *
1193     * <p>
1194     * <b>Definition:</b>
1195     * The name of the individual or organization that published the conformance
1196     * </p> 
1197         */
1198        public Conformance setPublisher( String theString) {
1199                myPublisher = new StringDt(theString); 
1200                return this; 
1201        }
1202
1203 
1204        /**
1205         * Gets the value(s) for <b>contact</b> ().
1206         * creating it if it does
1207         * not exist. Will not return <code>null</code>.
1208         *
1209     * <p>
1210     * <b>Definition:</b>
1211     * Contacts to assist a user in finding and communicating with the publisher
1212     * </p> 
1213         */
1214        public java.util.List<Contact> getContact() {  
1215                if (myContact == null) {
1216                        myContact = new java.util.ArrayList<Contact>();
1217                }
1218                return myContact;
1219        }
1220
1221        /**
1222         * Sets the value(s) for <b>contact</b> ()
1223         *
1224     * <p>
1225     * <b>Definition:</b>
1226     * Contacts to assist a user in finding and communicating with the publisher
1227     * </p> 
1228         */
1229        public Conformance setContact(java.util.List<Contact> theValue) {
1230                myContact = theValue;
1231                return this;
1232        }
1233        
1234        
1235
1236        /**
1237         * Adds and returns a new value for <b>contact</b> ()
1238         *
1239     * <p>
1240     * <b>Definition:</b>
1241     * Contacts to assist a user in finding and communicating with the publisher
1242     * </p> 
1243         */
1244        public Contact addContact() {
1245                Contact newType = new Contact();
1246                getContact().add(newType);
1247                return newType; 
1248        }
1249
1250        /**
1251         * Adds a given new value for <b>contact</b> ()
1252         *
1253         * <p>
1254         * <b>Definition:</b>
1255         * Contacts to assist a user in finding and communicating with the publisher
1256         * </p>
1257         * @param theValue The contact to add (must not be <code>null</code>)
1258         */
1259        public Conformance addContact(Contact theValue) {
1260                if (theValue == null) {
1261                        throw new NullPointerException("theValue must not be null");
1262                }
1263                getContact().add(theValue);
1264                return this;
1265        }
1266
1267        /**
1268         * Gets the first repetition for <b>contact</b> (),
1269         * creating it if it does not already exist.
1270         *
1271     * <p>
1272     * <b>Definition:</b>
1273     * Contacts to assist a user in finding and communicating with the publisher
1274     * </p> 
1275         */
1276        public Contact getContactFirstRep() {
1277                if (getContact().isEmpty()) {
1278                        return addContact();
1279                }
1280                return getContact().get(0); 
1281        }
1282  
1283        /**
1284         * Gets the value(s) for <b>date</b> ().
1285         * creating it if it does
1286         * not exist. Will not return <code>null</code>.
1287         *
1288     * <p>
1289     * <b>Definition:</b>
1290     * The date  (and optionally time) when the conformance statement 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 conformance statement changes
1291     * </p> 
1292         */
1293        public DateTimeDt getDateElement() {  
1294                if (myDate == null) {
1295                        myDate = new DateTimeDt();
1296                }
1297                return myDate;
1298        }
1299
1300        
1301        /**
1302         * Gets the value(s) for <b>date</b> ().
1303         * creating it if it does
1304         * not exist. This method may return <code>null</code>.
1305         *
1306     * <p>
1307     * <b>Definition:</b>
1308     * The date  (and optionally time) when the conformance statement 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 conformance statement changes
1309     * </p> 
1310         */
1311        public Date getDate() {  
1312                return getDateElement().getValue();
1313        }
1314
1315        /**
1316         * Sets the value(s) for <b>date</b> ()
1317         *
1318     * <p>
1319     * <b>Definition:</b>
1320     * The date  (and optionally time) when the conformance statement 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 conformance statement changes
1321     * </p> 
1322         */
1323        public Conformance setDate(DateTimeDt theValue) {
1324                myDate = theValue;
1325                return this;
1326        }
1327        
1328        
1329
1330        /**
1331         * Sets the value for <b>date</b> ()
1332         *
1333     * <p>
1334     * <b>Definition:</b>
1335     * The date  (and optionally time) when the conformance statement 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 conformance statement changes
1336     * </p> 
1337         */
1338        public Conformance setDateWithSecondsPrecision( Date theDate) {
1339                myDate = new DateTimeDt(theDate); 
1340                return this; 
1341        }
1342
1343        /**
1344         * Sets the value for <b>date</b> ()
1345         *
1346     * <p>
1347     * <b>Definition:</b>
1348     * The date  (and optionally time) when the conformance statement 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 conformance statement changes
1349     * </p> 
1350         */
1351        public Conformance setDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
1352                myDate = new DateTimeDt(theDate, thePrecision); 
1353                return this; 
1354        }
1355
1356 
1357        /**
1358         * Gets the value(s) for <b>description</b> ().
1359         * creating it if it does
1360         * not exist. Will not return <code>null</code>.
1361         *
1362     * <p>
1363     * <b>Definition:</b>
1364     * A free text natural language description of the conformance statement and its use. Typically, this is used when the conformance statement describes a desired rather than an actual solution, for example as a formal expression of requirements as part of an RFP
1365     * </p> 
1366         */
1367        public StringDt getDescriptionElement() {  
1368                if (myDescription == null) {
1369                        myDescription = new StringDt();
1370                }
1371                return myDescription;
1372        }
1373
1374        
1375        /**
1376         * Gets the value(s) for <b>description</b> ().
1377         * creating it if it does
1378         * not exist. This method may return <code>null</code>.
1379         *
1380     * <p>
1381     * <b>Definition:</b>
1382     * A free text natural language description of the conformance statement and its use. Typically, this is used when the conformance statement describes a desired rather than an actual solution, for example as a formal expression of requirements as part of an RFP
1383     * </p> 
1384         */
1385        public String getDescription() {  
1386                return getDescriptionElement().getValue();
1387        }
1388
1389        /**
1390         * Sets the value(s) for <b>description</b> ()
1391         *
1392     * <p>
1393     * <b>Definition:</b>
1394     * A free text natural language description of the conformance statement and its use. Typically, this is used when the conformance statement describes a desired rather than an actual solution, for example as a formal expression of requirements as part of an RFP
1395     * </p> 
1396         */
1397        public Conformance setDescription(StringDt theValue) {
1398                myDescription = theValue;
1399                return this;
1400        }
1401        
1402        
1403
1404        /**
1405         * Sets the value for <b>description</b> ()
1406         *
1407     * <p>
1408     * <b>Definition:</b>
1409     * A free text natural language description of the conformance statement and its use. Typically, this is used when the conformance statement describes a desired rather than an actual solution, for example as a formal expression of requirements as part of an RFP
1410     * </p> 
1411         */
1412        public Conformance setDescription( String theString) {
1413                myDescription = new StringDt(theString); 
1414                return this; 
1415        }
1416
1417 
1418        /**
1419         * Gets the value(s) for <b>requirements</b> ().
1420         * creating it if it does
1421         * not exist. Will not return <code>null</code>.
1422         *
1423     * <p>
1424     * <b>Definition:</b>
1425     * Explains why this conformance statement is needed and why it's been constrained as it has
1426     * </p> 
1427         */
1428        public StringDt getRequirementsElement() {  
1429                if (myRequirements == null) {
1430                        myRequirements = new StringDt();
1431                }
1432                return myRequirements;
1433        }
1434
1435        
1436        /**
1437         * Gets the value(s) for <b>requirements</b> ().
1438         * creating it if it does
1439         * not exist. This method may return <code>null</code>.
1440         *
1441     * <p>
1442     * <b>Definition:</b>
1443     * Explains why this conformance statement is needed and why it's been constrained as it has
1444     * </p> 
1445         */
1446        public String getRequirements() {  
1447                return getRequirementsElement().getValue();
1448        }
1449
1450        /**
1451         * Sets the value(s) for <b>requirements</b> ()
1452         *
1453     * <p>
1454     * <b>Definition:</b>
1455     * Explains why this conformance statement is needed and why it's been constrained as it has
1456     * </p> 
1457         */
1458        public Conformance setRequirements(StringDt theValue) {
1459                myRequirements = theValue;
1460                return this;
1461        }
1462        
1463        
1464
1465        /**
1466         * Sets the value for <b>requirements</b> ()
1467         *
1468     * <p>
1469     * <b>Definition:</b>
1470     * Explains why this conformance statement is needed and why it's been constrained as it has
1471     * </p> 
1472         */
1473        public Conformance setRequirements( String theString) {
1474                myRequirements = new StringDt(theString); 
1475                return this; 
1476        }
1477
1478 
1479        /**
1480         * Gets the value(s) for <b>copyright</b> ().
1481         * creating it if it does
1482         * not exist. Will not return <code>null</code>.
1483         *
1484     * <p>
1485     * <b>Definition:</b>
1486     * A copyright statement relating to the conformance statement and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the system described by the conformance statement
1487     * </p> 
1488         */
1489        public StringDt getCopyrightElement() {  
1490                if (myCopyright == null) {
1491                        myCopyright = new StringDt();
1492                }
1493                return myCopyright;
1494        }
1495
1496        
1497        /**
1498         * Gets the value(s) for <b>copyright</b> ().
1499         * creating it if it does
1500         * not exist. This method may return <code>null</code>.
1501         *
1502     * <p>
1503     * <b>Definition:</b>
1504     * A copyright statement relating to the conformance statement and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the system described by the conformance statement
1505     * </p> 
1506         */
1507        public String getCopyright() {  
1508                return getCopyrightElement().getValue();
1509        }
1510
1511        /**
1512         * Sets the value(s) for <b>copyright</b> ()
1513         *
1514     * <p>
1515     * <b>Definition:</b>
1516     * A copyright statement relating to the conformance statement and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the system described by the conformance statement
1517     * </p> 
1518         */
1519        public Conformance setCopyright(StringDt theValue) {
1520                myCopyright = theValue;
1521                return this;
1522        }
1523        
1524        
1525
1526        /**
1527         * Sets the value for <b>copyright</b> ()
1528         *
1529     * <p>
1530     * <b>Definition:</b>
1531     * A copyright statement relating to the conformance statement and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the details of the system described by the conformance statement
1532     * </p> 
1533         */
1534        public Conformance setCopyright( String theString) {
1535                myCopyright = new StringDt(theString); 
1536                return this; 
1537        }
1538
1539 
1540        /**
1541         * Gets the value(s) for <b>kind</b> ().
1542         * creating it if it does
1543         * not exist. Will not return <code>null</code>.
1544         *
1545     * <p>
1546     * <b>Definition:</b>
1547     * The way that this statement is intended to be used, to describe an actual running instance of software, a particular product (kind not instance of software) or a class of implementation (e.g. a desired purchase)
1548     * </p> 
1549         */
1550        public BoundCodeDt<ConformanceStatementKindEnum> getKindElement() {  
1551                if (myKind == null) {
1552                        myKind = new BoundCodeDt<ConformanceStatementKindEnum>(ConformanceStatementKindEnum.VALUESET_BINDER);
1553                }
1554                return myKind;
1555        }
1556
1557        
1558        /**
1559         * Gets the value(s) for <b>kind</b> ().
1560         * creating it if it does
1561         * not exist. This method may return <code>null</code>.
1562         *
1563     * <p>
1564     * <b>Definition:</b>
1565     * The way that this statement is intended to be used, to describe an actual running instance of software, a particular product (kind not instance of software) or a class of implementation (e.g. a desired purchase)
1566     * </p> 
1567         */
1568        public String getKind() {  
1569                return getKindElement().getValue();
1570        }
1571
1572        /**
1573         * Sets the value(s) for <b>kind</b> ()
1574         *
1575     * <p>
1576     * <b>Definition:</b>
1577     * The way that this statement is intended to be used, to describe an actual running instance of software, a particular product (kind not instance of software) or a class of implementation (e.g. a desired purchase)
1578     * </p> 
1579         */
1580        public Conformance setKind(BoundCodeDt<ConformanceStatementKindEnum> theValue) {
1581                myKind = theValue;
1582                return this;
1583        }
1584        
1585        
1586
1587        /**
1588         * Sets the value(s) for <b>kind</b> ()
1589         *
1590     * <p>
1591     * <b>Definition:</b>
1592     * The way that this statement is intended to be used, to describe an actual running instance of software, a particular product (kind not instance of software) or a class of implementation (e.g. a desired purchase)
1593     * </p> 
1594         */
1595        public Conformance setKind(ConformanceStatementKindEnum theValue) {
1596                setKind(new BoundCodeDt<ConformanceStatementKindEnum>(ConformanceStatementKindEnum.VALUESET_BINDER, theValue));
1597                
1598/*
1599                getKindElement().setValueAsEnum(theValue);
1600*/
1601                return this;
1602        }
1603
1604  
1605        /**
1606         * Gets the value(s) for <b>software</b> ().
1607         * creating it if it does
1608         * not exist. Will not return <code>null</code>.
1609         *
1610     * <p>
1611     * <b>Definition:</b>
1612     * Software that is covered by this conformance statement.  It is used when the conformance statement describes the capabilities of a particular software version, independent of an installation.
1613     * </p> 
1614         */
1615        public Software getSoftware() {  
1616                if (mySoftware == null) {
1617                        mySoftware = new Software();
1618                }
1619                return mySoftware;
1620        }
1621
1622        /**
1623         * Sets the value(s) for <b>software</b> ()
1624         *
1625     * <p>
1626     * <b>Definition:</b>
1627     * Software that is covered by this conformance statement.  It is used when the conformance statement describes the capabilities of a particular software version, independent of an installation.
1628     * </p> 
1629         */
1630        public Conformance setSoftware(Software theValue) {
1631                mySoftware = theValue;
1632                return this;
1633        }
1634        
1635        
1636
1637  
1638        /**
1639         * Gets the value(s) for <b>implementation</b> ().
1640         * creating it if it does
1641         * not exist. Will not return <code>null</code>.
1642         *
1643     * <p>
1644     * <b>Definition:</b>
1645     * Identifies a specific implementation instance that is described by the conformance statement - i.e. a particular installation, rather than the capabilities of a software program
1646     * </p> 
1647         */
1648        public Implementation getImplementation() {  
1649                if (myImplementation == null) {
1650                        myImplementation = new Implementation();
1651                }
1652                return myImplementation;
1653        }
1654
1655        /**
1656         * Sets the value(s) for <b>implementation</b> ()
1657         *
1658     * <p>
1659     * <b>Definition:</b>
1660     * Identifies a specific implementation instance that is described by the conformance statement - i.e. a particular installation, rather than the capabilities of a software program
1661     * </p> 
1662         */
1663        public Conformance setImplementation(Implementation theValue) {
1664                myImplementation = theValue;
1665                return this;
1666        }
1667        
1668        
1669
1670  
1671        /**
1672         * Gets the value(s) for <b>fhirVersion</b> ().
1673         * creating it if it does
1674         * not exist. Will not return <code>null</code>.
1675         *
1676     * <p>
1677     * <b>Definition:</b>
1678     * The version of the FHIR specification on which this conformance statement is based
1679     * </p> 
1680         */
1681        public IdDt getFhirVersionElement() {  
1682                if (myFhirVersion == null) {
1683                        myFhirVersion = new IdDt();
1684                }
1685                return myFhirVersion;
1686        }
1687
1688        
1689        /**
1690         * Gets the value(s) for <b>fhirVersion</b> ().
1691         * creating it if it does
1692         * not exist. This method may return <code>null</code>.
1693         *
1694     * <p>
1695     * <b>Definition:</b>
1696     * The version of the FHIR specification on which this conformance statement is based
1697     * </p> 
1698         */
1699        public String getFhirVersion() {  
1700                return getFhirVersionElement().getValue();
1701        }
1702
1703        /**
1704         * Sets the value(s) for <b>fhirVersion</b> ()
1705         *
1706     * <p>
1707     * <b>Definition:</b>
1708     * The version of the FHIR specification on which this conformance statement is based
1709     * </p> 
1710         */
1711        public Conformance setFhirVersion(IdDt theValue) {
1712                myFhirVersion = theValue;
1713                return this;
1714        }
1715        
1716        
1717
1718        /**
1719         * Sets the value for <b>fhirVersion</b> ()
1720         *
1721     * <p>
1722     * <b>Definition:</b>
1723     * The version of the FHIR specification on which this conformance statement is based
1724     * </p> 
1725         */
1726        public Conformance setFhirVersion( String theId) {
1727                myFhirVersion = new IdDt(theId); 
1728                return this; 
1729        }
1730
1731 
1732        /**
1733         * Gets the value(s) for <b>acceptUnknown</b> ().
1734         * creating it if it does
1735         * not exist. Will not return <code>null</code>.
1736         *
1737     * <p>
1738     * <b>Definition:</b>
1739     * A code that indicates whether the application accepts unknown elements or extensions when reading resources
1740     * </p> 
1741         */
1742        public BoundCodeDt<UnknownContentCodeEnum> getAcceptUnknownElement() {  
1743                if (myAcceptUnknown == null) {
1744                        myAcceptUnknown = new BoundCodeDt<UnknownContentCodeEnum>(UnknownContentCodeEnum.VALUESET_BINDER);
1745                }
1746                return myAcceptUnknown;
1747        }
1748
1749        
1750        /**
1751         * Gets the value(s) for <b>acceptUnknown</b> ().
1752         * creating it if it does
1753         * not exist. This method may return <code>null</code>.
1754         *
1755     * <p>
1756     * <b>Definition:</b>
1757     * A code that indicates whether the application accepts unknown elements or extensions when reading resources
1758     * </p> 
1759         */
1760        public String getAcceptUnknown() {  
1761                return getAcceptUnknownElement().getValue();
1762        }
1763
1764        /**
1765         * Sets the value(s) for <b>acceptUnknown</b> ()
1766         *
1767     * <p>
1768     * <b>Definition:</b>
1769     * A code that indicates whether the application accepts unknown elements or extensions when reading resources
1770     * </p> 
1771         */
1772        public Conformance setAcceptUnknown(BoundCodeDt<UnknownContentCodeEnum> theValue) {
1773                myAcceptUnknown = theValue;
1774                return this;
1775        }
1776        
1777        
1778
1779        /**
1780         * Sets the value(s) for <b>acceptUnknown</b> ()
1781         *
1782     * <p>
1783     * <b>Definition:</b>
1784     * A code that indicates whether the application accepts unknown elements or extensions when reading resources
1785     * </p> 
1786         */
1787        public Conformance setAcceptUnknown(UnknownContentCodeEnum theValue) {
1788                setAcceptUnknown(new BoundCodeDt<UnknownContentCodeEnum>(UnknownContentCodeEnum.VALUESET_BINDER, theValue));
1789                
1790/*
1791                getAcceptUnknownElement().setValueAsEnum(theValue);
1792*/
1793                return this;
1794        }
1795
1796  
1797        /**
1798         * Gets the value(s) for <b>format</b> ().
1799         * creating it if it does
1800         * not exist. Will not return <code>null</code>.
1801         *
1802     * <p>
1803     * <b>Definition:</b>
1804     * A list of the formats supported by this implementation using their content types
1805     * </p> 
1806         */
1807        public java.util.List<CodeDt> getFormat() {  
1808                if (myFormat == null) {
1809                        myFormat = new java.util.ArrayList<CodeDt>();
1810                }
1811                return myFormat;
1812        }
1813
1814        /**
1815         * Sets the value(s) for <b>format</b> ()
1816         *
1817     * <p>
1818     * <b>Definition:</b>
1819     * A list of the formats supported by this implementation using their content types
1820     * </p> 
1821         */
1822        public Conformance setFormat(java.util.List<CodeDt> theValue) {
1823                myFormat = theValue;
1824                return this;
1825        }
1826        
1827        
1828
1829        /**
1830         * Adds and returns a new value for <b>format</b> ()
1831         *
1832     * <p>
1833     * <b>Definition:</b>
1834     * A list of the formats supported by this implementation using their content types
1835     * </p> 
1836         */
1837        public CodeDt addFormat() {
1838                CodeDt newType = new CodeDt();
1839                getFormat().add(newType);
1840                return newType; 
1841        }
1842
1843        /**
1844         * Adds a given new value for <b>format</b> ()
1845         *
1846         * <p>
1847         * <b>Definition:</b>
1848         * A list of the formats supported by this implementation using their content types
1849         * </p>
1850         * @param theValue The format to add (must not be <code>null</code>)
1851         */
1852        public Conformance addFormat(CodeDt theValue) {
1853                if (theValue == null) {
1854                        throw new NullPointerException("theValue must not be null");
1855                }
1856                getFormat().add(theValue);
1857                return this;
1858        }
1859
1860        /**
1861         * Gets the first repetition for <b>format</b> (),
1862         * creating it if it does not already exist.
1863         *
1864     * <p>
1865     * <b>Definition:</b>
1866     * A list of the formats supported by this implementation using their content types
1867     * </p> 
1868         */
1869        public CodeDt getFormatFirstRep() {
1870                if (getFormat().isEmpty()) {
1871                        return addFormat();
1872                }
1873                return getFormat().get(0); 
1874        }
1875        /**
1876         * Adds a new value for <b>format</b> ()
1877         *
1878     * <p>
1879     * <b>Definition:</b>
1880     * A list of the formats supported by this implementation using their content types
1881     * </p> 
1882     *
1883     * @return Returns a reference to this object, to allow for simple chaining.
1884         */
1885        public Conformance addFormat( String theCode) {
1886                if (myFormat == null) {
1887                        myFormat = new java.util.ArrayList<CodeDt>();
1888                }
1889                myFormat.add(new CodeDt(theCode));
1890                return this; 
1891        }
1892
1893 
1894        /**
1895         * Gets the value(s) for <b>profile</b> ().
1896         * creating it if it does
1897         * not exist. Will not return <code>null</code>.
1898         *
1899     * <p>
1900     * <b>Definition:</b>
1901     * A list of profiles that represent different use cases supported by the system. For a server, \&quot;supported by the system\&quot; means the system hosts/produces a set of resources that are conformant to a particular profile, and allows clients that use its services to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile. See further discussion in [Using Profiles]{profiling.html#profile-uses}
1902     * </p> 
1903         */
1904        public java.util.List<ResourceReferenceDt> getProfile() {  
1905                if (myProfile == null) {
1906                        myProfile = new java.util.ArrayList<ResourceReferenceDt>();
1907                }
1908                return myProfile;
1909        }
1910
1911        /**
1912         * Sets the value(s) for <b>profile</b> ()
1913         *
1914     * <p>
1915     * <b>Definition:</b>
1916     * A list of profiles that represent different use cases supported by the system. For a server, \&quot;supported by the system\&quot; means the system hosts/produces a set of resources that are conformant to a particular profile, and allows clients that use its services to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile. See further discussion in [Using Profiles]{profiling.html#profile-uses}
1917     * </p> 
1918         */
1919        public Conformance setProfile(java.util.List<ResourceReferenceDt> theValue) {
1920                myProfile = theValue;
1921                return this;
1922        }
1923        
1924        
1925
1926        /**
1927         * Adds and returns a new value for <b>profile</b> ()
1928         *
1929     * <p>
1930     * <b>Definition:</b>
1931     * A list of profiles that represent different use cases supported by the system. For a server, \&quot;supported by the system\&quot; means the system hosts/produces a set of resources that are conformant to a particular profile, and allows clients that use its services to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile. See further discussion in [Using Profiles]{profiling.html#profile-uses}
1932     * </p> 
1933         */
1934        public ResourceReferenceDt addProfile() {
1935                ResourceReferenceDt newType = new ResourceReferenceDt();
1936                getProfile().add(newType);
1937                return newType; 
1938        }
1939  
1940        /**
1941         * Gets the value(s) for <b>rest</b> ().
1942         * creating it if it does
1943         * not exist. Will not return <code>null</code>.
1944         *
1945     * <p>
1946     * <b>Definition:</b>
1947     * A definition of the restful capabilities of the solution, if any
1948     * </p> 
1949         */
1950        public java.util.List<Rest> getRest() {  
1951                if (myRest == null) {
1952                        myRest = new java.util.ArrayList<Rest>();
1953                }
1954                return myRest;
1955        }
1956
1957        /**
1958         * Sets the value(s) for <b>rest</b> ()
1959         *
1960     * <p>
1961     * <b>Definition:</b>
1962     * A definition of the restful capabilities of the solution, if any
1963     * </p> 
1964         */
1965        public Conformance setRest(java.util.List<Rest> theValue) {
1966                myRest = theValue;
1967                return this;
1968        }
1969        
1970        
1971
1972        /**
1973         * Adds and returns a new value for <b>rest</b> ()
1974         *
1975     * <p>
1976     * <b>Definition:</b>
1977     * A definition of the restful capabilities of the solution, if any
1978     * </p> 
1979         */
1980        public Rest addRest() {
1981                Rest newType = new Rest();
1982                getRest().add(newType);
1983                return newType; 
1984        }
1985
1986        /**
1987         * Adds a given new value for <b>rest</b> ()
1988         *
1989         * <p>
1990         * <b>Definition:</b>
1991         * A definition of the restful capabilities of the solution, if any
1992         * </p>
1993         * @param theValue The rest to add (must not be <code>null</code>)
1994         */
1995        public Conformance addRest(Rest theValue) {
1996                if (theValue == null) {
1997                        throw new NullPointerException("theValue must not be null");
1998                }
1999                getRest().add(theValue);
2000                return this;
2001        }
2002
2003        /**
2004         * Gets the first repetition for <b>rest</b> (),
2005         * creating it if it does not already exist.
2006         *
2007     * <p>
2008     * <b>Definition:</b>
2009     * A definition of the restful capabilities of the solution, if any
2010     * </p> 
2011         */
2012        public Rest getRestFirstRep() {
2013                if (getRest().isEmpty()) {
2014                        return addRest();
2015                }
2016                return getRest().get(0); 
2017        }
2018  
2019        /**
2020         * Gets the value(s) for <b>messaging</b> ().
2021         * creating it if it does
2022         * not exist. Will not return <code>null</code>.
2023         *
2024     * <p>
2025     * <b>Definition:</b>
2026     * A description of the messaging capabilities of the solution
2027     * </p> 
2028         */
2029        public java.util.List<Messaging> getMessaging() {  
2030                if (myMessaging == null) {
2031                        myMessaging = new java.util.ArrayList<Messaging>();
2032                }
2033                return myMessaging;
2034        }
2035
2036        /**
2037         * Sets the value(s) for <b>messaging</b> ()
2038         *
2039     * <p>
2040     * <b>Definition:</b>
2041     * A description of the messaging capabilities of the solution
2042     * </p> 
2043         */
2044        public Conformance setMessaging(java.util.List<Messaging> theValue) {
2045                myMessaging = theValue;
2046                return this;
2047        }
2048        
2049        
2050
2051        /**
2052         * Adds and returns a new value for <b>messaging</b> ()
2053         *
2054     * <p>
2055     * <b>Definition:</b>
2056     * A description of the messaging capabilities of the solution
2057     * </p> 
2058         */
2059        public Messaging addMessaging() {
2060                Messaging newType = new Messaging();
2061                getMessaging().add(newType);
2062                return newType; 
2063        }
2064
2065        /**
2066         * Adds a given new value for <b>messaging</b> ()
2067         *
2068         * <p>
2069         * <b>Definition:</b>
2070         * A description of the messaging capabilities of the solution
2071         * </p>
2072         * @param theValue The messaging to add (must not be <code>null</code>)
2073         */
2074        public Conformance addMessaging(Messaging theValue) {
2075                if (theValue == null) {
2076                        throw new NullPointerException("theValue must not be null");
2077                }
2078                getMessaging().add(theValue);
2079                return this;
2080        }
2081
2082        /**
2083         * Gets the first repetition for <b>messaging</b> (),
2084         * creating it if it does not already exist.
2085         *
2086     * <p>
2087     * <b>Definition:</b>
2088     * A description of the messaging capabilities of the solution
2089     * </p> 
2090         */
2091        public Messaging getMessagingFirstRep() {
2092                if (getMessaging().isEmpty()) {
2093                        return addMessaging();
2094                }
2095                return getMessaging().get(0); 
2096        }
2097  
2098        /**
2099         * Gets the value(s) for <b>document</b> ().
2100         * creating it if it does
2101         * not exist. Will not return <code>null</code>.
2102         *
2103     * <p>
2104     * <b>Definition:</b>
2105     * A document definition
2106     * </p> 
2107         */
2108        public java.util.List<Document> getDocument() {  
2109                if (myDocument == null) {
2110                        myDocument = new java.util.ArrayList<Document>();
2111                }
2112                return myDocument;
2113        }
2114
2115        /**
2116         * Sets the value(s) for <b>document</b> ()
2117         *
2118     * <p>
2119     * <b>Definition:</b>
2120     * A document definition
2121     * </p> 
2122         */
2123        public Conformance setDocument(java.util.List<Document> theValue) {
2124                myDocument = theValue;
2125                return this;
2126        }
2127        
2128        
2129
2130        /**
2131         * Adds and returns a new value for <b>document</b> ()
2132         *
2133     * <p>
2134     * <b>Definition:</b>
2135     * A document definition
2136     * </p> 
2137         */
2138        public Document addDocument() {
2139                Document newType = new Document();
2140                getDocument().add(newType);
2141                return newType; 
2142        }
2143
2144        /**
2145         * Adds a given new value for <b>document</b> ()
2146         *
2147         * <p>
2148         * <b>Definition:</b>
2149         * A document definition
2150         * </p>
2151         * @param theValue The document to add (must not be <code>null</code>)
2152         */
2153        public Conformance addDocument(Document theValue) {
2154                if (theValue == null) {
2155                        throw new NullPointerException("theValue must not be null");
2156                }
2157                getDocument().add(theValue);
2158                return this;
2159        }
2160
2161        /**
2162         * Gets the first repetition for <b>document</b> (),
2163         * creating it if it does not already exist.
2164         *
2165     * <p>
2166     * <b>Definition:</b>
2167     * A document definition
2168     * </p> 
2169         */
2170        public Document getDocumentFirstRep() {
2171                if (getDocument().isEmpty()) {
2172                        return addDocument();
2173                }
2174                return getDocument().get(0); 
2175        }
2176  
2177        /**
2178         * Block class for child element: <b>Conformance.contact</b> ()
2179         *
2180     * <p>
2181     * <b>Definition:</b>
2182     * Contacts to assist a user in finding and communicating with the publisher
2183     * </p> 
2184         */
2185        @Block()        
2186        public static class Contact 
2187            extends  BaseIdentifiableElement  
2188            implements IResourceBlock {
2189        
2190        @Child(name="name", type=StringDt.class, order=0, min=0, max=1, summary=true, modifier=false)   
2191        @Description(
2192                shortDefinition="",
2193                formalDefinition="The name of an individual to contact regarding the conformance"
2194        )
2195        private StringDt myName;
2196        
2197        @Child(name="telecom", type=ContactPointDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
2198        @Description(
2199                shortDefinition="",
2200                formalDefinition="Contact details for individual (if a name was provided) or the publisher"
2201        )
2202        private java.util.List<ContactPointDt> myTelecom;
2203        
2204
2205        @Override
2206        public boolean isEmpty() {
2207                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myTelecom);
2208        }
2209        
2210        @Override
2211        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2212                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myTelecom);
2213        }
2214
2215        /**
2216         * Gets the value(s) for <b>name</b> ().
2217         * creating it if it does
2218         * not exist. Will not return <code>null</code>.
2219         *
2220     * <p>
2221     * <b>Definition:</b>
2222     * The name of an individual to contact regarding the conformance
2223     * </p> 
2224         */
2225        public StringDt getNameElement() {  
2226                if (myName == null) {
2227                        myName = new StringDt();
2228                }
2229                return myName;
2230        }
2231
2232        
2233        /**
2234         * Gets the value(s) for <b>name</b> ().
2235         * creating it if it does
2236         * not exist. This method may return <code>null</code>.
2237         *
2238     * <p>
2239     * <b>Definition:</b>
2240     * The name of an individual to contact regarding the conformance
2241     * </p> 
2242         */
2243        public String getName() {  
2244                return getNameElement().getValue();
2245        }
2246
2247        /**
2248         * Sets the value(s) for <b>name</b> ()
2249         *
2250     * <p>
2251     * <b>Definition:</b>
2252     * The name of an individual to contact regarding the conformance
2253     * </p> 
2254         */
2255        public Contact setName(StringDt theValue) {
2256                myName = theValue;
2257                return this;
2258        }
2259        
2260        
2261
2262        /**
2263         * Sets the value for <b>name</b> ()
2264         *
2265     * <p>
2266     * <b>Definition:</b>
2267     * The name of an individual to contact regarding the conformance
2268     * </p> 
2269         */
2270        public Contact setName( String theString) {
2271                myName = new StringDt(theString); 
2272                return this; 
2273        }
2274
2275 
2276        /**
2277         * Gets the value(s) for <b>telecom</b> ().
2278         * creating it if it does
2279         * not exist. Will not return <code>null</code>.
2280         *
2281     * <p>
2282     * <b>Definition:</b>
2283     * Contact details for individual (if a name was provided) or the publisher
2284     * </p> 
2285         */
2286        public java.util.List<ContactPointDt> getTelecom() {  
2287                if (myTelecom == null) {
2288                        myTelecom = new java.util.ArrayList<ContactPointDt>();
2289                }
2290                return myTelecom;
2291        }
2292
2293        /**
2294         * Sets the value(s) for <b>telecom</b> ()
2295         *
2296     * <p>
2297     * <b>Definition:</b>
2298     * Contact details for individual (if a name was provided) or the publisher
2299     * </p> 
2300         */
2301        public Contact setTelecom(java.util.List<ContactPointDt> theValue) {
2302                myTelecom = theValue;
2303                return this;
2304        }
2305        
2306        
2307
2308        /**
2309         * Adds and returns a new value for <b>telecom</b> ()
2310         *
2311     * <p>
2312     * <b>Definition:</b>
2313     * Contact details for individual (if a name was provided) or the publisher
2314     * </p> 
2315         */
2316        public ContactPointDt addTelecom() {
2317                ContactPointDt newType = new ContactPointDt();
2318                getTelecom().add(newType);
2319                return newType; 
2320        }
2321
2322        /**
2323         * Adds a given new value for <b>telecom</b> ()
2324         *
2325         * <p>
2326         * <b>Definition:</b>
2327         * Contact details for individual (if a name was provided) or the publisher
2328         * </p>
2329         * @param theValue The telecom to add (must not be <code>null</code>)
2330         */
2331        public Contact addTelecom(ContactPointDt theValue) {
2332                if (theValue == null) {
2333                        throw new NullPointerException("theValue must not be null");
2334                }
2335                getTelecom().add(theValue);
2336                return this;
2337        }
2338
2339        /**
2340         * Gets the first repetition for <b>telecom</b> (),
2341         * creating it if it does not already exist.
2342         *
2343     * <p>
2344     * <b>Definition:</b>
2345     * Contact details for individual (if a name was provided) or the publisher
2346     * </p> 
2347         */
2348        public ContactPointDt getTelecomFirstRep() {
2349                if (getTelecom().isEmpty()) {
2350                        return addTelecom();
2351                }
2352                return getTelecom().get(0); 
2353        }
2354  
2355
2356
2357        }
2358
2359
2360        /**
2361         * Block class for child element: <b>Conformance.software</b> ()
2362         *
2363     * <p>
2364     * <b>Definition:</b>
2365     * Software that is covered by this conformance statement.  It is used when the conformance statement describes the capabilities of a particular software version, independent of an installation.
2366     * </p> 
2367         */
2368        @Block()        
2369        public static class Software 
2370            extends  BaseIdentifiableElement  
2371            implements IResourceBlock {
2372        
2373        @Child(name="name", type=StringDt.class, order=0, min=1, max=1, summary=true, modifier=false)   
2374        @Description(
2375                shortDefinition="",
2376                formalDefinition="Name software is known by"
2377        )
2378        private StringDt myName;
2379        
2380        @Child(name="version", type=StringDt.class, order=1, min=0, max=1, summary=true, modifier=false)        
2381        @Description(
2382                shortDefinition="",
2383                formalDefinition="The version identifier for the software covered by this statement"
2384        )
2385        private StringDt myVersion;
2386        
2387        @Child(name="releaseDate", type=DateTimeDt.class, order=2, min=0, max=1, summary=true, modifier=false)  
2388        @Description(
2389                shortDefinition="",
2390                formalDefinition="Date this version of the software released"
2391        )
2392        private DateTimeDt myReleaseDate;
2393        
2394
2395        @Override
2396        public boolean isEmpty() {
2397                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myVersion,  myReleaseDate);
2398        }
2399        
2400        @Override
2401        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2402                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myVersion, myReleaseDate);
2403        }
2404
2405        /**
2406         * Gets the value(s) for <b>name</b> ().
2407         * creating it if it does
2408         * not exist. Will not return <code>null</code>.
2409         *
2410     * <p>
2411     * <b>Definition:</b>
2412     * Name software is known by
2413     * </p> 
2414         */
2415        public StringDt getNameElement() {  
2416                if (myName == null) {
2417                        myName = new StringDt();
2418                }
2419                return myName;
2420        }
2421
2422        
2423        /**
2424         * Gets the value(s) for <b>name</b> ().
2425         * creating it if it does
2426         * not exist. This method may return <code>null</code>.
2427         *
2428     * <p>
2429     * <b>Definition:</b>
2430     * Name software is known by
2431     * </p> 
2432         */
2433        public String getName() {  
2434                return getNameElement().getValue();
2435        }
2436
2437        /**
2438         * Sets the value(s) for <b>name</b> ()
2439         *
2440     * <p>
2441     * <b>Definition:</b>
2442     * Name software is known by
2443     * </p> 
2444         */
2445        public Software setName(StringDt theValue) {
2446                myName = theValue;
2447                return this;
2448        }
2449        
2450        
2451
2452        /**
2453         * Sets the value for <b>name</b> ()
2454         *
2455     * <p>
2456     * <b>Definition:</b>
2457     * Name software is known by
2458     * </p> 
2459         */
2460        public Software setName( String theString) {
2461                myName = new StringDt(theString); 
2462                return this; 
2463        }
2464
2465 
2466        /**
2467         * Gets the value(s) for <b>version</b> ().
2468         * creating it if it does
2469         * not exist. Will not return <code>null</code>.
2470         *
2471     * <p>
2472     * <b>Definition:</b>
2473     * The version identifier for the software covered by this statement
2474     * </p> 
2475         */
2476        public StringDt getVersionElement() {  
2477                if (myVersion == null) {
2478                        myVersion = new StringDt();
2479                }
2480                return myVersion;
2481        }
2482
2483        
2484        /**
2485         * Gets the value(s) for <b>version</b> ().
2486         * creating it if it does
2487         * not exist. This method may return <code>null</code>.
2488         *
2489     * <p>
2490     * <b>Definition:</b>
2491     * The version identifier for the software covered by this statement
2492     * </p> 
2493         */
2494        public String getVersion() {  
2495                return getVersionElement().getValue();
2496        }
2497
2498        /**
2499         * Sets the value(s) for <b>version</b> ()
2500         *
2501     * <p>
2502     * <b>Definition:</b>
2503     * The version identifier for the software covered by this statement
2504     * </p> 
2505         */
2506        public Software setVersion(StringDt theValue) {
2507                myVersion = theValue;
2508                return this;
2509        }
2510        
2511        
2512
2513        /**
2514         * Sets the value for <b>version</b> ()
2515         *
2516     * <p>
2517     * <b>Definition:</b>
2518     * The version identifier for the software covered by this statement
2519     * </p> 
2520         */
2521        public Software setVersion( String theString) {
2522                myVersion = new StringDt(theString); 
2523                return this; 
2524        }
2525
2526 
2527        /**
2528         * Gets the value(s) for <b>releaseDate</b> ().
2529         * creating it if it does
2530         * not exist. Will not return <code>null</code>.
2531         *
2532     * <p>
2533     * <b>Definition:</b>
2534     * Date this version of the software released
2535     * </p> 
2536         */
2537        public DateTimeDt getReleaseDateElement() {  
2538                if (myReleaseDate == null) {
2539                        myReleaseDate = new DateTimeDt();
2540                }
2541                return myReleaseDate;
2542        }
2543
2544        
2545        /**
2546         * Gets the value(s) for <b>releaseDate</b> ().
2547         * creating it if it does
2548         * not exist. This method may return <code>null</code>.
2549         *
2550     * <p>
2551     * <b>Definition:</b>
2552     * Date this version of the software released
2553     * </p> 
2554         */
2555        public Date getReleaseDate() {  
2556                return getReleaseDateElement().getValue();
2557        }
2558
2559        /**
2560         * Sets the value(s) for <b>releaseDate</b> ()
2561         *
2562     * <p>
2563     * <b>Definition:</b>
2564     * Date this version of the software released
2565     * </p> 
2566         */
2567        public Software setReleaseDate(DateTimeDt theValue) {
2568                myReleaseDate = theValue;
2569                return this;
2570        }
2571        
2572        
2573
2574        /**
2575         * Sets the value for <b>releaseDate</b> ()
2576         *
2577     * <p>
2578     * <b>Definition:</b>
2579     * Date this version of the software released
2580     * </p> 
2581         */
2582        public Software setReleaseDateWithSecondsPrecision( Date theDate) {
2583                myReleaseDate = new DateTimeDt(theDate); 
2584                return this; 
2585        }
2586
2587        /**
2588         * Sets the value for <b>releaseDate</b> ()
2589         *
2590     * <p>
2591     * <b>Definition:</b>
2592     * Date this version of the software released
2593     * </p> 
2594         */
2595        public Software setReleaseDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
2596                myReleaseDate = new DateTimeDt(theDate, thePrecision); 
2597                return this; 
2598        }
2599
2600 
2601
2602
2603        }
2604
2605
2606        /**
2607         * Block class for child element: <b>Conformance.implementation</b> ()
2608         *
2609     * <p>
2610     * <b>Definition:</b>
2611     * Identifies a specific implementation instance that is described by the conformance statement - i.e. a particular installation, rather than the capabilities of a software program
2612     * </p> 
2613         */
2614        @Block()        
2615        public static class Implementation 
2616            extends  BaseIdentifiableElement  
2617            implements IResourceBlock {
2618        
2619        @Child(name="description", type=StringDt.class, order=0, min=1, max=1, summary=true, modifier=false)    
2620        @Description(
2621                shortDefinition="",
2622                formalDefinition="Information about the specific installation that this conformance statement relates to"
2623        )
2624        private StringDt myDescription;
2625        
2626        @Child(name="url", type=UriDt.class, order=1, min=0, max=1, summary=true, modifier=false)       
2627        @Description(
2628                shortDefinition="",
2629                formalDefinition="An absolute base URL for the implementation.  This forms the base for REST interfaces as well as the mailbox and document interfaces."
2630        )
2631        private UriDt myUrl;
2632        
2633
2634        @Override
2635        public boolean isEmpty() {
2636                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myDescription,  myUrl);
2637        }
2638        
2639        @Override
2640        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2641                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myDescription, myUrl);
2642        }
2643
2644        /**
2645         * Gets the value(s) for <b>description</b> ().
2646         * creating it if it does
2647         * not exist. Will not return <code>null</code>.
2648         *
2649     * <p>
2650     * <b>Definition:</b>
2651     * Information about the specific installation that this conformance statement relates to
2652     * </p> 
2653         */
2654        public StringDt getDescriptionElement() {  
2655                if (myDescription == null) {
2656                        myDescription = new StringDt();
2657                }
2658                return myDescription;
2659        }
2660
2661        
2662        /**
2663         * Gets the value(s) for <b>description</b> ().
2664         * creating it if it does
2665         * not exist. This method may return <code>null</code>.
2666         *
2667     * <p>
2668     * <b>Definition:</b>
2669     * Information about the specific installation that this conformance statement relates to
2670     * </p> 
2671         */
2672        public String getDescription() {  
2673                return getDescriptionElement().getValue();
2674        }
2675
2676        /**
2677         * Sets the value(s) for <b>description</b> ()
2678         *
2679     * <p>
2680     * <b>Definition:</b>
2681     * Information about the specific installation that this conformance statement relates to
2682     * </p> 
2683         */
2684        public Implementation setDescription(StringDt theValue) {
2685                myDescription = theValue;
2686                return this;
2687        }
2688        
2689        
2690
2691        /**
2692         * Sets the value for <b>description</b> ()
2693         *
2694     * <p>
2695     * <b>Definition:</b>
2696     * Information about the specific installation that this conformance statement relates to
2697     * </p> 
2698         */
2699        public Implementation setDescription( String theString) {
2700                myDescription = new StringDt(theString); 
2701                return this; 
2702        }
2703
2704 
2705        /**
2706         * Gets the value(s) for <b>url</b> ().
2707         * creating it if it does
2708         * not exist. Will not return <code>null</code>.
2709         *
2710     * <p>
2711     * <b>Definition:</b>
2712     * An absolute base URL for the implementation.  This forms the base for REST interfaces as well as the mailbox and document interfaces.
2713     * </p> 
2714         */
2715        public UriDt getUrlElement() {  
2716                if (myUrl == null) {
2717                        myUrl = new UriDt();
2718                }
2719                return myUrl;
2720        }
2721
2722        
2723        /**
2724         * Gets the value(s) for <b>url</b> ().
2725         * creating it if it does
2726         * not exist. This method may return <code>null</code>.
2727         *
2728     * <p>
2729     * <b>Definition:</b>
2730     * An absolute base URL for the implementation.  This forms the base for REST interfaces as well as the mailbox and document interfaces.
2731     * </p> 
2732         */
2733        public String getUrl() {  
2734                return getUrlElement().getValue();
2735        }
2736
2737        /**
2738         * Sets the value(s) for <b>url</b> ()
2739         *
2740     * <p>
2741     * <b>Definition:</b>
2742     * An absolute base URL for the implementation.  This forms the base for REST interfaces as well as the mailbox and document interfaces.
2743     * </p> 
2744         */
2745        public Implementation setUrl(UriDt theValue) {
2746                myUrl = theValue;
2747                return this;
2748        }
2749        
2750        
2751
2752        /**
2753         * Sets the value for <b>url</b> ()
2754         *
2755     * <p>
2756     * <b>Definition:</b>
2757     * An absolute base URL for the implementation.  This forms the base for REST interfaces as well as the mailbox and document interfaces.
2758     * </p> 
2759         */
2760        public Implementation setUrl( String theUri) {
2761                myUrl = new UriDt(theUri); 
2762                return this; 
2763        }
2764
2765 
2766
2767
2768        }
2769
2770
2771        /**
2772         * Block class for child element: <b>Conformance.rest</b> ()
2773         *
2774     * <p>
2775     * <b>Definition:</b>
2776     * A definition of the restful capabilities of the solution, if any
2777     * </p> 
2778         */
2779        @Block()        
2780        public static class Rest 
2781            extends  BaseIdentifiableElement  
2782            implements IResourceBlock {
2783        
2784        @Child(name="mode", type=CodeDt.class, order=0, min=1, max=1, summary=true, modifier=false)     
2785        @Description(
2786                shortDefinition="",
2787                formalDefinition="Identifies whether this portion of the statement is describing ability to initiate or receive restful operations"
2788        )
2789        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/restful-conformance-mode")
2790        private BoundCodeDt<RestfulConformanceModeEnum> myMode;
2791        
2792        @Child(name="documentation", type=StringDt.class, order=1, min=0, max=1, summary=false, modifier=false) 
2793        @Description(
2794                shortDefinition="",
2795                formalDefinition="Information about the system's restful capabilities that apply across all applications, such as security"
2796        )
2797        private StringDt myDocumentation;
2798        
2799        @Child(name="security", order=2, min=0, max=1, summary=false, modifier=false)   
2800        @Description(
2801                shortDefinition="",
2802                formalDefinition="Information about security implementation from an interface perspective - what a client needs to know"
2803        )
2804        private RestSecurity mySecurity;
2805        
2806        @Child(name="resource", order=3, min=1, max=Child.MAX_UNLIMITED, summary=true, modifier=false)  
2807        @Description(
2808                shortDefinition="",
2809                formalDefinition="A specification of the restful capabilities of the solution for a specific resource type"
2810        )
2811        private java.util.List<RestResource> myResource;
2812        
2813        @Child(name="interaction", order=4, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
2814        @Description(
2815                shortDefinition="",
2816                formalDefinition="A specification of restful operations supported by the system"
2817        )
2818        private java.util.List<RestInteraction> myInteraction;
2819        
2820        @Child(name="transactionMode", type=CodeDt.class, order=5, min=0, max=1, summary=false, modifier=false) 
2821        @Description(
2822                shortDefinition="",
2823                formalDefinition="A code that indicates how transactions are supported"
2824        )
2825        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/transaction-mode")
2826        private BoundCodeDt<TransactionModeEnum> myTransactionMode;
2827        
2828        @Child(name="searchParam", type=RestResourceSearchParam.class, order=6, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)  
2829        @Description(
2830                shortDefinition="",
2831                formalDefinition="Search parameters that are supported for searching all resources for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation"
2832        )
2833        private java.util.List<RestResourceSearchParam> mySearchParam;
2834        
2835        @Child(name="operation", order=7, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
2836        @Description(
2837                shortDefinition="",
2838                formalDefinition="Definition of an operation or a named query and with its parameters and their meaning and type"
2839        )
2840        private java.util.List<RestOperation> myOperation;
2841        
2842        @Child(name="compartment", type=UriDt.class, order=8, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
2843        @Description(
2844                shortDefinition="",
2845                formalDefinition="An absolute URI which is a reference to the definition of a compartment hosted by the system"
2846        )
2847        private java.util.List<UriDt> myCompartment;
2848        
2849
2850        @Override
2851        public boolean isEmpty() {
2852                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myMode,  myDocumentation,  mySecurity,  myResource,  myInteraction,  myTransactionMode,  mySearchParam,  myOperation,  myCompartment);
2853        }
2854        
2855        @Override
2856        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2857                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myMode, myDocumentation, mySecurity, myResource, myInteraction, myTransactionMode, mySearchParam, myOperation, myCompartment);
2858        }
2859
2860        /**
2861         * Gets the value(s) for <b>mode</b> ().
2862         * creating it if it does
2863         * not exist. Will not return <code>null</code>.
2864         *
2865     * <p>
2866     * <b>Definition:</b>
2867     * Identifies whether this portion of the statement is describing ability to initiate or receive restful operations
2868     * </p> 
2869         */
2870        public BoundCodeDt<RestfulConformanceModeEnum> getModeElement() {  
2871                if (myMode == null) {
2872                        myMode = new BoundCodeDt<RestfulConformanceModeEnum>(RestfulConformanceModeEnum.VALUESET_BINDER);
2873                }
2874                return myMode;
2875        }
2876
2877        
2878        /**
2879         * Gets the value(s) for <b>mode</b> ().
2880         * creating it if it does
2881         * not exist. This method may return <code>null</code>.
2882         *
2883     * <p>
2884     * <b>Definition:</b>
2885     * Identifies whether this portion of the statement is describing ability to initiate or receive restful operations
2886     * </p> 
2887         */
2888        public String getMode() {  
2889                return getModeElement().getValue();
2890        }
2891
2892        /**
2893         * Sets the value(s) for <b>mode</b> ()
2894         *
2895     * <p>
2896     * <b>Definition:</b>
2897     * Identifies whether this portion of the statement is describing ability to initiate or receive restful operations
2898     * </p> 
2899         */
2900        public Rest setMode(BoundCodeDt<RestfulConformanceModeEnum> theValue) {
2901                myMode = theValue;
2902                return this;
2903        }
2904        
2905        
2906
2907        /**
2908         * Sets the value(s) for <b>mode</b> ()
2909         *
2910     * <p>
2911     * <b>Definition:</b>
2912     * Identifies whether this portion of the statement is describing ability to initiate or receive restful operations
2913     * </p> 
2914         */
2915        public Rest setMode(RestfulConformanceModeEnum theValue) {
2916                setMode(new BoundCodeDt<RestfulConformanceModeEnum>(RestfulConformanceModeEnum.VALUESET_BINDER, theValue));
2917                
2918/*
2919                getModeElement().setValueAsEnum(theValue);
2920*/
2921                return this;
2922        }
2923
2924  
2925        /**
2926         * Gets the value(s) for <b>documentation</b> ().
2927         * creating it if it does
2928         * not exist. Will not return <code>null</code>.
2929         *
2930     * <p>
2931     * <b>Definition:</b>
2932     * Information about the system's restful capabilities that apply across all applications, such as security
2933     * </p> 
2934         */
2935        public StringDt getDocumentationElement() {  
2936                if (myDocumentation == null) {
2937                        myDocumentation = new StringDt();
2938                }
2939                return myDocumentation;
2940        }
2941
2942        
2943        /**
2944         * Gets the value(s) for <b>documentation</b> ().
2945         * creating it if it does
2946         * not exist. This method may return <code>null</code>.
2947         *
2948     * <p>
2949     * <b>Definition:</b>
2950     * Information about the system's restful capabilities that apply across all applications, such as security
2951     * </p> 
2952         */
2953        public String getDocumentation() {  
2954                return getDocumentationElement().getValue();
2955        }
2956
2957        /**
2958         * Sets the value(s) for <b>documentation</b> ()
2959         *
2960     * <p>
2961     * <b>Definition:</b>
2962     * Information about the system's restful capabilities that apply across all applications, such as security
2963     * </p> 
2964         */
2965        public Rest setDocumentation(StringDt theValue) {
2966                myDocumentation = theValue;
2967                return this;
2968        }
2969        
2970        
2971
2972        /**
2973         * Sets the value for <b>documentation</b> ()
2974         *
2975     * <p>
2976     * <b>Definition:</b>
2977     * Information about the system's restful capabilities that apply across all applications, such as security
2978     * </p> 
2979         */
2980        public Rest setDocumentation( String theString) {
2981                myDocumentation = new StringDt(theString); 
2982                return this; 
2983        }
2984
2985 
2986        /**
2987         * Gets the value(s) for <b>security</b> ().
2988         * creating it if it does
2989         * not exist. Will not return <code>null</code>.
2990         *
2991     * <p>
2992     * <b>Definition:</b>
2993     * Information about security implementation from an interface perspective - what a client needs to know
2994     * </p> 
2995         */
2996        public RestSecurity getSecurity() {  
2997                if (mySecurity == null) {
2998                        mySecurity = new RestSecurity();
2999                }
3000                return mySecurity;
3001        }
3002
3003        /**
3004         * Sets the value(s) for <b>security</b> ()
3005         *
3006     * <p>
3007     * <b>Definition:</b>
3008     * Information about security implementation from an interface perspective - what a client needs to know
3009     * </p> 
3010         */
3011        public Rest setSecurity(RestSecurity theValue) {
3012                mySecurity = theValue;
3013                return this;
3014        }
3015        
3016        
3017
3018  
3019        /**
3020         * Gets the value(s) for <b>resource</b> ().
3021         * creating it if it does
3022         * not exist. Will not return <code>null</code>.
3023         *
3024     * <p>
3025     * <b>Definition:</b>
3026     * A specification of the restful capabilities of the solution for a specific resource type
3027     * </p> 
3028         */
3029        public java.util.List<RestResource> getResource() {  
3030                if (myResource == null) {
3031                        myResource = new java.util.ArrayList<RestResource>();
3032                }
3033                return myResource;
3034        }
3035
3036        /**
3037         * Sets the value(s) for <b>resource</b> ()
3038         *
3039     * <p>
3040     * <b>Definition:</b>
3041     * A specification of the restful capabilities of the solution for a specific resource type
3042     * </p> 
3043         */
3044        public Rest setResource(java.util.List<RestResource> theValue) {
3045                myResource = theValue;
3046                return this;
3047        }
3048        
3049        
3050
3051        /**
3052         * Adds and returns a new value for <b>resource</b> ()
3053         *
3054     * <p>
3055     * <b>Definition:</b>
3056     * A specification of the restful capabilities of the solution for a specific resource type
3057     * </p> 
3058         */
3059        public RestResource addResource() {
3060                RestResource newType = new RestResource();
3061                getResource().add(newType);
3062                return newType; 
3063        }
3064
3065        /**
3066         * Adds a given new value for <b>resource</b> ()
3067         *
3068         * <p>
3069         * <b>Definition:</b>
3070         * A specification of the restful capabilities of the solution for a specific resource type
3071         * </p>
3072         * @param theValue The resource to add (must not be <code>null</code>)
3073         */
3074        public Rest addResource(RestResource theValue) {
3075                if (theValue == null) {
3076                        throw new NullPointerException("theValue must not be null");
3077                }
3078                getResource().add(theValue);
3079                return this;
3080        }
3081
3082        /**
3083         * Gets the first repetition for <b>resource</b> (),
3084         * creating it if it does not already exist.
3085         *
3086     * <p>
3087     * <b>Definition:</b>
3088     * A specification of the restful capabilities of the solution for a specific resource type
3089     * </p> 
3090         */
3091        public RestResource getResourceFirstRep() {
3092                if (getResource().isEmpty()) {
3093                        return addResource();
3094                }
3095                return getResource().get(0); 
3096        }
3097  
3098        /**
3099         * Gets the value(s) for <b>interaction</b> ().
3100         * creating it if it does
3101         * not exist. Will not return <code>null</code>.
3102         *
3103     * <p>
3104     * <b>Definition:</b>
3105     * A specification of restful operations supported by the system
3106     * </p> 
3107         */
3108        public java.util.List<RestInteraction> getInteraction() {  
3109                if (myInteraction == null) {
3110                        myInteraction = new java.util.ArrayList<RestInteraction>();
3111                }
3112                return myInteraction;
3113        }
3114
3115        /**
3116         * Sets the value(s) for <b>interaction</b> ()
3117         *
3118     * <p>
3119     * <b>Definition:</b>
3120     * A specification of restful operations supported by the system
3121     * </p> 
3122         */
3123        public Rest setInteraction(java.util.List<RestInteraction> theValue) {
3124                myInteraction = theValue;
3125                return this;
3126        }
3127        
3128        
3129
3130        /**
3131         * Adds and returns a new value for <b>interaction</b> ()
3132         *
3133     * <p>
3134     * <b>Definition:</b>
3135     * A specification of restful operations supported by the system
3136     * </p> 
3137         */
3138        public RestInteraction addInteraction() {
3139                RestInteraction newType = new RestInteraction();
3140                getInteraction().add(newType);
3141                return newType; 
3142        }
3143
3144        /**
3145         * Adds a given new value for <b>interaction</b> ()
3146         *
3147         * <p>
3148         * <b>Definition:</b>
3149         * A specification of restful operations supported by the system
3150         * </p>
3151         * @param theValue The interaction to add (must not be <code>null</code>)
3152         */
3153        public Rest addInteraction(RestInteraction theValue) {
3154                if (theValue == null) {
3155                        throw new NullPointerException("theValue must not be null");
3156                }
3157                getInteraction().add(theValue);
3158                return this;
3159        }
3160
3161        /**
3162         * Gets the first repetition for <b>interaction</b> (),
3163         * creating it if it does not already exist.
3164         *
3165     * <p>
3166     * <b>Definition:</b>
3167     * A specification of restful operations supported by the system
3168     * </p> 
3169         */
3170        public RestInteraction getInteractionFirstRep() {
3171                if (getInteraction().isEmpty()) {
3172                        return addInteraction();
3173                }
3174                return getInteraction().get(0); 
3175        }
3176  
3177        /**
3178         * Gets the value(s) for <b>transactionMode</b> ().
3179         * creating it if it does
3180         * not exist. Will not return <code>null</code>.
3181         *
3182     * <p>
3183     * <b>Definition:</b>
3184     * A code that indicates how transactions are supported
3185     * </p> 
3186         */
3187        public BoundCodeDt<TransactionModeEnum> getTransactionModeElement() {  
3188                if (myTransactionMode == null) {
3189                        myTransactionMode = new BoundCodeDt<TransactionModeEnum>(TransactionModeEnum.VALUESET_BINDER);
3190                }
3191                return myTransactionMode;
3192        }
3193
3194        
3195        /**
3196         * Gets the value(s) for <b>transactionMode</b> ().
3197         * creating it if it does
3198         * not exist. This method may return <code>null</code>.
3199         *
3200     * <p>
3201     * <b>Definition:</b>
3202     * A code that indicates how transactions are supported
3203     * </p> 
3204         */
3205        public String getTransactionMode() {  
3206                return getTransactionModeElement().getValue();
3207        }
3208
3209        /**
3210         * Sets the value(s) for <b>transactionMode</b> ()
3211         *
3212     * <p>
3213     * <b>Definition:</b>
3214     * A code that indicates how transactions are supported
3215     * </p> 
3216         */
3217        public Rest setTransactionMode(BoundCodeDt<TransactionModeEnum> theValue) {
3218                myTransactionMode = theValue;
3219                return this;
3220        }
3221        
3222        
3223
3224        /**
3225         * Sets the value(s) for <b>transactionMode</b> ()
3226         *
3227     * <p>
3228     * <b>Definition:</b>
3229     * A code that indicates how transactions are supported
3230     * </p> 
3231         */
3232        public Rest setTransactionMode(TransactionModeEnum theValue) {
3233                setTransactionMode(new BoundCodeDt<TransactionModeEnum>(TransactionModeEnum.VALUESET_BINDER, theValue));
3234                
3235/*
3236                getTransactionModeElement().setValueAsEnum(theValue);
3237*/
3238                return this;
3239        }
3240
3241  
3242        /**
3243         * Gets the value(s) for <b>searchParam</b> ().
3244         * creating it if it does
3245         * not exist. Will not return <code>null</code>.
3246         *
3247     * <p>
3248     * <b>Definition:</b>
3249     * Search parameters that are supported for searching all resources for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation
3250     * </p> 
3251         */
3252        public java.util.List<RestResourceSearchParam> getSearchParam() {  
3253                if (mySearchParam == null) {
3254                        mySearchParam = new java.util.ArrayList<RestResourceSearchParam>();
3255                }
3256                return mySearchParam;
3257        }
3258
3259        /**
3260         * Sets the value(s) for <b>searchParam</b> ()
3261         *
3262     * <p>
3263     * <b>Definition:</b>
3264     * Search parameters that are supported for searching all resources for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation
3265     * </p> 
3266         */
3267        public Rest setSearchParam(java.util.List<RestResourceSearchParam> theValue) {
3268                mySearchParam = theValue;
3269                return this;
3270        }
3271        
3272        
3273
3274        /**
3275         * Adds and returns a new value for <b>searchParam</b> ()
3276         *
3277     * <p>
3278     * <b>Definition:</b>
3279     * Search parameters that are supported for searching all resources for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation
3280     * </p> 
3281         */
3282        public RestResourceSearchParam addSearchParam() {
3283                RestResourceSearchParam newType = new RestResourceSearchParam();
3284                getSearchParam().add(newType);
3285                return newType; 
3286        }
3287
3288        /**
3289         * Adds a given new value for <b>searchParam</b> ()
3290         *
3291         * <p>
3292         * <b>Definition:</b>
3293         * Search parameters that are supported for searching all resources for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation
3294         * </p>
3295         * @param theValue The searchParam to add (must not be <code>null</code>)
3296         */
3297        public Rest addSearchParam(RestResourceSearchParam theValue) {
3298                if (theValue == null) {
3299                        throw new NullPointerException("theValue must not be null");
3300                }
3301                getSearchParam().add(theValue);
3302                return this;
3303        }
3304
3305        /**
3306         * Gets the first repetition for <b>searchParam</b> (),
3307         * creating it if it does not already exist.
3308         *
3309     * <p>
3310     * <b>Definition:</b>
3311     * Search parameters that are supported for searching all resources for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation
3312     * </p> 
3313         */
3314        public RestResourceSearchParam getSearchParamFirstRep() {
3315                if (getSearchParam().isEmpty()) {
3316                        return addSearchParam();
3317                }
3318                return getSearchParam().get(0); 
3319        }
3320  
3321        /**
3322         * Gets the value(s) for <b>operation</b> ().
3323         * creating it if it does
3324         * not exist. Will not return <code>null</code>.
3325         *
3326     * <p>
3327     * <b>Definition:</b>
3328     * Definition of an operation or a named query and with its parameters and their meaning and type
3329     * </p> 
3330         */
3331        public java.util.List<RestOperation> getOperation() {  
3332                if (myOperation == null) {
3333                        myOperation = new java.util.ArrayList<RestOperation>();
3334                }
3335                return myOperation;
3336        }
3337
3338        /**
3339         * Sets the value(s) for <b>operation</b> ()
3340         *
3341     * <p>
3342     * <b>Definition:</b>
3343     * Definition of an operation or a named query and with its parameters and their meaning and type
3344     * </p> 
3345         */
3346        public Rest setOperation(java.util.List<RestOperation> theValue) {
3347                myOperation = theValue;
3348                return this;
3349        }
3350        
3351        
3352
3353        /**
3354         * Adds and returns a new value for <b>operation</b> ()
3355         *
3356     * <p>
3357     * <b>Definition:</b>
3358     * Definition of an operation or a named query and with its parameters and their meaning and type
3359     * </p> 
3360         */
3361        public RestOperation addOperation() {
3362                RestOperation newType = new RestOperation();
3363                getOperation().add(newType);
3364                return newType; 
3365        }
3366
3367        /**
3368         * Adds a given new value for <b>operation</b> ()
3369         *
3370         * <p>
3371         * <b>Definition:</b>
3372         * Definition of an operation or a named query and with its parameters and their meaning and type
3373         * </p>
3374         * @param theValue The operation to add (must not be <code>null</code>)
3375         */
3376        public Rest addOperation(RestOperation theValue) {
3377                if (theValue == null) {
3378                        throw new NullPointerException("theValue must not be null");
3379                }
3380                getOperation().add(theValue);
3381                return this;
3382        }
3383
3384        /**
3385         * Gets the first repetition for <b>operation</b> (),
3386         * creating it if it does not already exist.
3387         *
3388     * <p>
3389     * <b>Definition:</b>
3390     * Definition of an operation or a named query and with its parameters and their meaning and type
3391     * </p> 
3392         */
3393        public RestOperation getOperationFirstRep() {
3394                if (getOperation().isEmpty()) {
3395                        return addOperation();
3396                }
3397                return getOperation().get(0); 
3398        }
3399  
3400        /**
3401         * Gets the value(s) for <b>compartment</b> ().
3402         * creating it if it does
3403         * not exist. Will not return <code>null</code>.
3404         *
3405     * <p>
3406     * <b>Definition:</b>
3407     * An absolute URI which is a reference to the definition of a compartment hosted by the system
3408     * </p> 
3409         */
3410        public java.util.List<UriDt> getCompartment() {  
3411                if (myCompartment == null) {
3412                        myCompartment = new java.util.ArrayList<UriDt>();
3413                }
3414                return myCompartment;
3415        }
3416
3417        /**
3418         * Sets the value(s) for <b>compartment</b> ()
3419         *
3420     * <p>
3421     * <b>Definition:</b>
3422     * An absolute URI which is a reference to the definition of a compartment hosted by the system
3423     * </p> 
3424         */
3425        public Rest setCompartment(java.util.List<UriDt> theValue) {
3426                myCompartment = theValue;
3427                return this;
3428        }
3429        
3430        
3431
3432        /**
3433         * Adds and returns a new value for <b>compartment</b> ()
3434         *
3435     * <p>
3436     * <b>Definition:</b>
3437     * An absolute URI which is a reference to the definition of a compartment hosted by the system
3438     * </p> 
3439         */
3440        public UriDt addCompartment() {
3441                UriDt newType = new UriDt();
3442                getCompartment().add(newType);
3443                return newType; 
3444        }
3445
3446        /**
3447         * Adds a given new value for <b>compartment</b> ()
3448         *
3449         * <p>
3450         * <b>Definition:</b>
3451         * An absolute URI which is a reference to the definition of a compartment hosted by the system
3452         * </p>
3453         * @param theValue The compartment to add (must not be <code>null</code>)
3454         */
3455        public Rest addCompartment(UriDt theValue) {
3456                if (theValue == null) {
3457                        throw new NullPointerException("theValue must not be null");
3458                }
3459                getCompartment().add(theValue);
3460                return this;
3461        }
3462
3463        /**
3464         * Gets the first repetition for <b>compartment</b> (),
3465         * creating it if it does not already exist.
3466         *
3467     * <p>
3468     * <b>Definition:</b>
3469     * An absolute URI which is a reference to the definition of a compartment hosted by the system
3470     * </p> 
3471         */
3472        public UriDt getCompartmentFirstRep() {
3473                if (getCompartment().isEmpty()) {
3474                        return addCompartment();
3475                }
3476                return getCompartment().get(0); 
3477        }
3478        /**
3479         * Adds a new value for <b>compartment</b> ()
3480         *
3481     * <p>
3482     * <b>Definition:</b>
3483     * An absolute URI which is a reference to the definition of a compartment hosted by the system
3484     * </p> 
3485     *
3486     * @return Returns a reference to this object, to allow for simple chaining.
3487         */
3488        public Rest addCompartment( String theUri) {
3489                if (myCompartment == null) {
3490                        myCompartment = new java.util.ArrayList<UriDt>();
3491                }
3492                myCompartment.add(new UriDt(theUri));
3493                return this; 
3494        }
3495
3496 
3497
3498
3499        }
3500
3501        /**
3502         * Block class for child element: <b>Conformance.rest.security</b> ()
3503         *
3504     * <p>
3505     * <b>Definition:</b>
3506     * Information about security implementation from an interface perspective - what a client needs to know
3507     * </p> 
3508         */
3509        @Block()        
3510        public static class RestSecurity 
3511            extends  BaseIdentifiableElement  
3512            implements IResourceBlock {
3513        
3514        @Child(name="cors", type=BooleanDt.class, order=0, min=0, max=1, summary=false, modifier=false) 
3515        @Description(
3516                shortDefinition="",
3517                formalDefinition="Server adds CORS headers when responding to requests - this enables javascript applications to use the server"
3518        )
3519        private BooleanDt myCors;
3520        
3521        @Child(name="service", type=CodeableConceptDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
3522        @Description(
3523                shortDefinition="",
3524                formalDefinition="Types of security services are supported/required by the system"
3525        )
3526        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/restful-security-service")
3527        private java.util.List<BoundCodeableConceptDt<RestfulSecurityServiceEnum>> myService;
3528        
3529        @Child(name="description", type=StringDt.class, order=2, min=0, max=1, summary=false, modifier=false)   
3530        @Description(
3531                shortDefinition="",
3532                formalDefinition="General description of how security works"
3533        )
3534        private StringDt myDescription;
3535        
3536        @Child(name="certificate", order=3, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
3537        @Description(
3538                shortDefinition="",
3539                formalDefinition="Certificates associated with security profiles"
3540        )
3541        private java.util.List<RestSecurityCertificate> myCertificate;
3542        
3543
3544        @Override
3545        public boolean isEmpty() {
3546                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCors,  myService,  myDescription,  myCertificate);
3547        }
3548        
3549        @Override
3550        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
3551                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCors, myService, myDescription, myCertificate);
3552        }
3553
3554        /**
3555         * Gets the value(s) for <b>cors</b> ().
3556         * creating it if it does
3557         * not exist. Will not return <code>null</code>.
3558         *
3559     * <p>
3560     * <b>Definition:</b>
3561     * Server adds CORS headers when responding to requests - this enables javascript applications to use the server
3562     * </p> 
3563         */
3564        public BooleanDt getCorsElement() {  
3565                if (myCors == null) {
3566                        myCors = new BooleanDt();
3567                }
3568                return myCors;
3569        }
3570
3571        
3572        /**
3573         * Gets the value(s) for <b>cors</b> ().
3574         * creating it if it does
3575         * not exist. This method may return <code>null</code>.
3576         *
3577     * <p>
3578     * <b>Definition:</b>
3579     * Server adds CORS headers when responding to requests - this enables javascript applications to use the server
3580     * </p> 
3581         */
3582        public Boolean getCors() {  
3583                return getCorsElement().getValue();
3584        }
3585
3586        /**
3587         * Sets the value(s) for <b>cors</b> ()
3588         *
3589     * <p>
3590     * <b>Definition:</b>
3591     * Server adds CORS headers when responding to requests - this enables javascript applications to use the server
3592     * </p> 
3593         */
3594        public RestSecurity setCors(BooleanDt theValue) {
3595                myCors = theValue;
3596                return this;
3597        }
3598        
3599        
3600
3601        /**
3602         * Sets the value for <b>cors</b> ()
3603         *
3604     * <p>
3605     * <b>Definition:</b>
3606     * Server adds CORS headers when responding to requests - this enables javascript applications to use the server
3607     * </p> 
3608         */
3609        public RestSecurity setCors( boolean theBoolean) {
3610                myCors = new BooleanDt(theBoolean); 
3611                return this; 
3612        }
3613
3614 
3615        /**
3616         * Gets the value(s) for <b>service</b> ().
3617         * creating it if it does
3618         * not exist. Will not return <code>null</code>.
3619         *
3620     * <p>
3621     * <b>Definition:</b>
3622     * Types of security services are supported/required by the system
3623     * </p> 
3624         */
3625        public java.util.List<BoundCodeableConceptDt<RestfulSecurityServiceEnum>> getService() {  
3626                if (myService == null) {
3627                        myService = new java.util.ArrayList<BoundCodeableConceptDt<RestfulSecurityServiceEnum>>();
3628                }
3629                return myService;
3630        }
3631
3632        /**
3633         * Sets the value(s) for <b>service</b> ()
3634         *
3635     * <p>
3636     * <b>Definition:</b>
3637     * Types of security services are supported/required by the system
3638     * </p> 
3639         */
3640        public RestSecurity setService(java.util.List<BoundCodeableConceptDt<RestfulSecurityServiceEnum>> theValue) {
3641                myService = theValue;
3642                return this;
3643        }
3644        
3645        
3646
3647        /**
3648         * Add a value for <b>service</b> () using an enumerated type. This
3649         * is intended as a convenience method for situations where the FHIR defined ValueSets are mandatory
3650         * or contain the desirable codes. If you wish to use codes other than those which are built-in, 
3651         * you may also use the {@link #addService()} method.
3652         *
3653     * <p>
3654     * <b>Definition:</b>
3655     * Types of security services are supported/required by the system
3656     * </p> 
3657         */
3658        public BoundCodeableConceptDt<RestfulSecurityServiceEnum> addService(RestfulSecurityServiceEnum theValue) {
3659                BoundCodeableConceptDt<RestfulSecurityServiceEnum> retVal = new BoundCodeableConceptDt<RestfulSecurityServiceEnum>(RestfulSecurityServiceEnum.VALUESET_BINDER, theValue);
3660                getService().add(retVal);
3661                return retVal;
3662        }
3663
3664        /**
3665         * Gets the first repetition for <b>service</b> (),
3666         * creating it if it does not already exist.
3667         *
3668     * <p>
3669     * <b>Definition:</b>
3670     * Types of security services are supported/required by the system
3671     * </p> 
3672         */
3673        public BoundCodeableConceptDt<RestfulSecurityServiceEnum> getServiceFirstRep() {
3674                if (getService().size() == 0) {
3675                        addService();
3676                }
3677                return getService().get(0);
3678        }
3679
3680        /**
3681         * Add a value for <b>service</b> ()
3682         *
3683     * <p>
3684     * <b>Definition:</b>
3685     * Types of security services are supported/required by the system
3686     * </p> 
3687         */
3688        public BoundCodeableConceptDt<RestfulSecurityServiceEnum> addService() {
3689                BoundCodeableConceptDt<RestfulSecurityServiceEnum> retVal = new BoundCodeableConceptDt<RestfulSecurityServiceEnum>(RestfulSecurityServiceEnum.VALUESET_BINDER);
3690                getService().add(retVal);
3691                return retVal;
3692        }
3693
3694        /**
3695         * Sets the value(s), and clears any existing value(s) for <b>service</b> ()
3696         *
3697     * <p>
3698     * <b>Definition:</b>
3699     * Types of security services are supported/required by the system
3700     * </p> 
3701         */
3702        public RestSecurity setService(RestfulSecurityServiceEnum theValue) {
3703                getService().clear();
3704                addService(theValue);
3705                return this;
3706        }
3707
3708  
3709        /**
3710         * Gets the value(s) for <b>description</b> ().
3711         * creating it if it does
3712         * not exist. Will not return <code>null</code>.
3713         *
3714     * <p>
3715     * <b>Definition:</b>
3716     * General description of how security works
3717     * </p> 
3718         */
3719        public StringDt getDescriptionElement() {  
3720                if (myDescription == null) {
3721                        myDescription = new StringDt();
3722                }
3723                return myDescription;
3724        }
3725
3726        
3727        /**
3728         * Gets the value(s) for <b>description</b> ().
3729         * creating it if it does
3730         * not exist. This method may return <code>null</code>.
3731         *
3732     * <p>
3733     * <b>Definition:</b>
3734     * General description of how security works
3735     * </p> 
3736         */
3737        public String getDescription() {  
3738                return getDescriptionElement().getValue();
3739        }
3740
3741        /**
3742         * Sets the value(s) for <b>description</b> ()
3743         *
3744     * <p>
3745     * <b>Definition:</b>
3746     * General description of how security works
3747     * </p> 
3748         */
3749        public RestSecurity setDescription(StringDt theValue) {
3750                myDescription = theValue;
3751                return this;
3752        }
3753        
3754        
3755
3756        /**
3757         * Sets the value for <b>description</b> ()
3758         *
3759     * <p>
3760     * <b>Definition:</b>
3761     * General description of how security works
3762     * </p> 
3763         */
3764        public RestSecurity setDescription( String theString) {
3765                myDescription = new StringDt(theString); 
3766                return this; 
3767        }
3768
3769 
3770        /**
3771         * Gets the value(s) for <b>certificate</b> ().
3772         * creating it if it does
3773         * not exist. Will not return <code>null</code>.
3774         *
3775     * <p>
3776     * <b>Definition:</b>
3777     * Certificates associated with security profiles
3778     * </p> 
3779         */
3780        public java.util.List<RestSecurityCertificate> getCertificate() {  
3781                if (myCertificate == null) {
3782                        myCertificate = new java.util.ArrayList<RestSecurityCertificate>();
3783                }
3784                return myCertificate;
3785        }
3786
3787        /**
3788         * Sets the value(s) for <b>certificate</b> ()
3789         *
3790     * <p>
3791     * <b>Definition:</b>
3792     * Certificates associated with security profiles
3793     * </p> 
3794         */
3795        public RestSecurity setCertificate(java.util.List<RestSecurityCertificate> theValue) {
3796                myCertificate = theValue;
3797                return this;
3798        }
3799        
3800        
3801
3802        /**
3803         * Adds and returns a new value for <b>certificate</b> ()
3804         *
3805     * <p>
3806     * <b>Definition:</b>
3807     * Certificates associated with security profiles
3808     * </p> 
3809         */
3810        public RestSecurityCertificate addCertificate() {
3811                RestSecurityCertificate newType = new RestSecurityCertificate();
3812                getCertificate().add(newType);
3813                return newType; 
3814        }
3815
3816        /**
3817         * Adds a given new value for <b>certificate</b> ()
3818         *
3819         * <p>
3820         * <b>Definition:</b>
3821         * Certificates associated with security profiles
3822         * </p>
3823         * @param theValue The certificate to add (must not be <code>null</code>)
3824         */
3825        public RestSecurity addCertificate(RestSecurityCertificate theValue) {
3826                if (theValue == null) {
3827                        throw new NullPointerException("theValue must not be null");
3828                }
3829                getCertificate().add(theValue);
3830                return this;
3831        }
3832
3833        /**
3834         * Gets the first repetition for <b>certificate</b> (),
3835         * creating it if it does not already exist.
3836         *
3837     * <p>
3838     * <b>Definition:</b>
3839     * Certificates associated with security profiles
3840     * </p> 
3841         */
3842        public RestSecurityCertificate getCertificateFirstRep() {
3843                if (getCertificate().isEmpty()) {
3844                        return addCertificate();
3845                }
3846                return getCertificate().get(0); 
3847        }
3848  
3849
3850
3851        }
3852
3853        /**
3854         * Block class for child element: <b>Conformance.rest.security.certificate</b> ()
3855         *
3856     * <p>
3857     * <b>Definition:</b>
3858     * Certificates associated with security profiles
3859     * </p> 
3860         */
3861        @Block()        
3862        public static class RestSecurityCertificate 
3863            extends  BaseIdentifiableElement  
3864            implements IResourceBlock {
3865        
3866        @Child(name="type", type=CodeDt.class, order=0, min=0, max=1, summary=false, modifier=false)    
3867        @Description(
3868                shortDefinition="",
3869                formalDefinition="Mime type for certificate"
3870        )
3871        private CodeDt myType;
3872        
3873        @Child(name="blob", type=Base64BinaryDt.class, order=1, min=0, max=1, summary=false, modifier=false)    
3874        @Description(
3875                shortDefinition="",
3876                formalDefinition="Actual certificate"
3877        )
3878        private Base64BinaryDt myBlob;
3879        
3880
3881        @Override
3882        public boolean isEmpty() {
3883                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myType,  myBlob);
3884        }
3885        
3886        @Override
3887        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
3888                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myType, myBlob);
3889        }
3890
3891        /**
3892         * Gets the value(s) for <b>type</b> ().
3893         * creating it if it does
3894         * not exist. Will not return <code>null</code>.
3895         *
3896     * <p>
3897     * <b>Definition:</b>
3898     * Mime type for certificate
3899     * </p> 
3900         */
3901        public CodeDt getTypeElement() {  
3902                if (myType == null) {
3903                        myType = new CodeDt();
3904                }
3905                return myType;
3906        }
3907
3908        
3909        /**
3910         * Gets the value(s) for <b>type</b> ().
3911         * creating it if it does
3912         * not exist. This method may return <code>null</code>.
3913         *
3914     * <p>
3915     * <b>Definition:</b>
3916     * Mime type for certificate
3917     * </p> 
3918         */
3919        public String getType() {  
3920                return getTypeElement().getValue();
3921        }
3922
3923        /**
3924         * Sets the value(s) for <b>type</b> ()
3925         *
3926     * <p>
3927     * <b>Definition:</b>
3928     * Mime type for certificate
3929     * </p> 
3930         */
3931        public RestSecurityCertificate setType(CodeDt theValue) {
3932                myType = theValue;
3933                return this;
3934        }
3935        
3936        
3937
3938        /**
3939         * Sets the value for <b>type</b> ()
3940         *
3941     * <p>
3942     * <b>Definition:</b>
3943     * Mime type for certificate
3944     * </p> 
3945         */
3946        public RestSecurityCertificate setType( String theCode) {
3947                myType = new CodeDt(theCode); 
3948                return this; 
3949        }
3950
3951 
3952        /**
3953         * Gets the value(s) for <b>blob</b> ().
3954         * creating it if it does
3955         * not exist. Will not return <code>null</code>.
3956         *
3957     * <p>
3958     * <b>Definition:</b>
3959     * Actual certificate
3960     * </p> 
3961         */
3962        public Base64BinaryDt getBlobElement() {  
3963                if (myBlob == null) {
3964                        myBlob = new Base64BinaryDt();
3965                }
3966                return myBlob;
3967        }
3968
3969        
3970        /**
3971         * Gets the value(s) for <b>blob</b> ().
3972         * creating it if it does
3973         * not exist. This method may return <code>null</code>.
3974         *
3975     * <p>
3976     * <b>Definition:</b>
3977     * Actual certificate
3978     * </p> 
3979         */
3980        public byte[] getBlob() {  
3981                return getBlobElement().getValue();
3982        }
3983
3984        /**
3985         * Sets the value(s) for <b>blob</b> ()
3986         *
3987     * <p>
3988     * <b>Definition:</b>
3989     * Actual certificate
3990     * </p> 
3991         */
3992        public RestSecurityCertificate setBlob(Base64BinaryDt theValue) {
3993                myBlob = theValue;
3994                return this;
3995        }
3996        
3997        
3998
3999        /**
4000         * Sets the value for <b>blob</b> ()
4001         *
4002     * <p>
4003     * <b>Definition:</b>
4004     * Actual certificate
4005     * </p> 
4006         */
4007        public RestSecurityCertificate setBlob( byte[] theBytes) {
4008                myBlob = new Base64BinaryDt(theBytes); 
4009                return this; 
4010        }
4011
4012 
4013
4014
4015        }
4016
4017
4018
4019        /**
4020         * Block class for child element: <b>Conformance.rest.resource</b> ()
4021         *
4022     * <p>
4023     * <b>Definition:</b>
4024     * A specification of the restful capabilities of the solution for a specific resource type
4025     * </p> 
4026         */
4027        @Block()        
4028        public static class RestResource 
4029            extends  BaseIdentifiableElement  
4030            implements IResourceBlock {
4031        
4032        @Child(name="type", type=CodeDt.class, order=0, min=1, max=1, summary=true, modifier=false)     
4033        @Description(
4034                shortDefinition="",
4035                formalDefinition="A type of resource exposed via the restful interface"
4036        )
4037        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/resource-types")
4038        private BoundCodeDt<ResourceTypeEnum> myType;
4039        
4040        @Child(name="profile", order=1, min=0, max=1, summary=false, modifier=false, type={
4041                ca.uhn.fhir.model.dstu2.resource.StructureDefinition.class
4042        })
4043        @Description(
4044                shortDefinition="",
4045                formalDefinition="A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses}"
4046        )
4047        private ResourceReferenceDt myProfile;
4048        
4049        @Child(name="interaction", order=2, min=1, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
4050        @Description(
4051                shortDefinition="",
4052                formalDefinition="Identifies a restful operation supported by the solution"
4053        )
4054        private java.util.List<RestResourceInteraction> myInteraction;
4055        
4056        @Child(name="versioning", type=CodeDt.class, order=3, min=0, max=1, summary=false, modifier=false)      
4057        @Description(
4058                shortDefinition="",
4059                formalDefinition="This field is set to no-version to specify that the system does not support (server) or use (client) versioning for this resource type. If this has some other value, the server must at least correctly track and populate the versionId meta-property on resources. If the value is 'versioned-update', then the server supports all the versioning features, including using e-tags for version integrity in the API"
4060        )
4061        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/versioning-policy")
4062        private BoundCodeDt<ResourceVersionPolicyEnum> myVersioning;
4063        
4064        @Child(name="readHistory", type=BooleanDt.class, order=4, min=0, max=1, summary=false, modifier=false)  
4065        @Description(
4066                shortDefinition="",
4067                formalDefinition="A flag for whether the server is able to return past versions as part of the vRead operation"
4068        )
4069        private BooleanDt myReadHistory;
4070        
4071        @Child(name="updateCreate", type=BooleanDt.class, order=5, min=0, max=1, summary=false, modifier=false) 
4072        @Description(
4073                shortDefinition="",
4074                formalDefinition="A flag to indicate that the server allows or needs to allow the client to create new identities on the server (e.g. that is, the client PUTs to a location where there is no existing resource). Allowing this operation means that the server allows the client to create new identities on the server"
4075        )
4076        private BooleanDt myUpdateCreate;
4077        
4078        @Child(name="conditionalCreate", type=BooleanDt.class, order=6, min=0, max=1, summary=false, modifier=false)    
4079        @Description(
4080                shortDefinition="",
4081                formalDefinition="A flag that indicates that the server supports conditional create"
4082        )
4083        private BooleanDt myConditionalCreate;
4084        
4085        @Child(name="conditionalUpdate", type=BooleanDt.class, order=7, min=0, max=1, summary=false, modifier=false)    
4086        @Description(
4087                shortDefinition="",
4088                formalDefinition="A flag that indicates that the server supports conditional update"
4089        )
4090        private BooleanDt myConditionalUpdate;
4091        
4092        @Child(name="conditionalDelete", type=CodeDt.class, order=8, min=0, max=1, summary=false, modifier=false)       
4093        @Description(
4094                shortDefinition="",
4095                formalDefinition="A code that indicates how the server supports conditional delete"
4096        )
4097        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/conditional-delete-status")
4098        private BoundCodeDt<ConditionalDeleteStatusEnum> myConditionalDelete;
4099        
4100        @Child(name="searchInclude", type=StringDt.class, order=9, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
4101        @Description(
4102                shortDefinition="",
4103                formalDefinition="A list of _include values supported by the server"
4104        )
4105        private java.util.List<StringDt> mySearchInclude;
4106        
4107        @Child(name="searchRevInclude", type=StringDt.class, order=10, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
4108        @Description(
4109                shortDefinition="",
4110                formalDefinition="A list of _revinclude (reverse include) values supported by the server"
4111        )
4112        private java.util.List<StringDt> mySearchRevInclude;
4113        
4114        @Child(name="searchParam", order=11, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
4115        @Description(
4116                shortDefinition="",
4117                formalDefinition="Search parameters for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation"
4118        )
4119        private java.util.List<RestResourceSearchParam> mySearchParam;
4120        
4121
4122        @Override
4123        public boolean isEmpty() {
4124                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myType,  myProfile,  myInteraction,  myVersioning,  myReadHistory,  myUpdateCreate,  myConditionalCreate,  myConditionalUpdate,  myConditionalDelete,  mySearchInclude,  mySearchRevInclude,  mySearchParam);
4125        }
4126        
4127        @Override
4128        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
4129                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myType, myProfile, myInteraction, myVersioning, myReadHistory, myUpdateCreate, myConditionalCreate, myConditionalUpdate, myConditionalDelete, mySearchInclude, mySearchRevInclude, mySearchParam);
4130        }
4131
4132        /**
4133         * Gets the value(s) for <b>type</b> ().
4134         * creating it if it does
4135         * not exist. Will not return <code>null</code>.
4136         *
4137     * <p>
4138     * <b>Definition:</b>
4139     * A type of resource exposed via the restful interface
4140     * </p> 
4141         */
4142        public BoundCodeDt<ResourceTypeEnum> getTypeElement() {  
4143                if (myType == null) {
4144                        myType = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER);
4145                }
4146                return myType;
4147        }
4148
4149        
4150        /**
4151         * Gets the value(s) for <b>type</b> ().
4152         * creating it if it does
4153         * not exist. This method may return <code>null</code>.
4154         *
4155     * <p>
4156     * <b>Definition:</b>
4157     * A type of resource exposed via the restful interface
4158     * </p> 
4159         */
4160        public String getType() {  
4161                return getTypeElement().getValue();
4162        }
4163
4164        /**
4165         * Sets the value(s) for <b>type</b> ()
4166         *
4167     * <p>
4168     * <b>Definition:</b>
4169     * A type of resource exposed via the restful interface
4170     * </p> 
4171         */
4172        public RestResource setType(BoundCodeDt<ResourceTypeEnum> theValue) {
4173                myType = theValue;
4174                return this;
4175        }
4176        
4177        
4178
4179        /**
4180         * Sets the value(s) for <b>type</b> ()
4181         *
4182     * <p>
4183     * <b>Definition:</b>
4184     * A type of resource exposed via the restful interface
4185     * </p> 
4186         */
4187        public RestResource setType(ResourceTypeEnum theValue) {
4188                setType(new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER, theValue));
4189                
4190/*
4191                getTypeElement().setValueAsEnum(theValue);
4192*/
4193                return this;
4194        }
4195
4196  
4197        /**
4198         * Gets the value(s) for <b>profile</b> ().
4199         * creating it if it does
4200         * not exist. Will not return <code>null</code>.
4201         *
4202     * <p>
4203     * <b>Definition:</b>
4204     * A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses}
4205     * </p> 
4206         */
4207        public ResourceReferenceDt getProfile() {  
4208                if (myProfile == null) {
4209                        myProfile = new ResourceReferenceDt();
4210                }
4211                return myProfile;
4212        }
4213
4214        /**
4215         * Sets the value(s) for <b>profile</b> ()
4216         *
4217     * <p>
4218     * <b>Definition:</b>
4219     * A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles]{profiling.html#profile-uses}
4220     * </p> 
4221         */
4222        public RestResource setProfile(ResourceReferenceDt theValue) {
4223                myProfile = theValue;
4224                return this;
4225        }
4226        
4227        
4228
4229  
4230        /**
4231         * Gets the value(s) for <b>interaction</b> ().
4232         * creating it if it does
4233         * not exist. Will not return <code>null</code>.
4234         *
4235     * <p>
4236     * <b>Definition:</b>
4237     * Identifies a restful operation supported by the solution
4238     * </p> 
4239         */
4240        public java.util.List<RestResourceInteraction> getInteraction() {  
4241                if (myInteraction == null) {
4242                        myInteraction = new java.util.ArrayList<RestResourceInteraction>();
4243                }
4244                return myInteraction;
4245        }
4246
4247        /**
4248         * Sets the value(s) for <b>interaction</b> ()
4249         *
4250     * <p>
4251     * <b>Definition:</b>
4252     * Identifies a restful operation supported by the solution
4253     * </p> 
4254         */
4255        public RestResource setInteraction(java.util.List<RestResourceInteraction> theValue) {
4256                myInteraction = theValue;
4257                return this;
4258        }
4259        
4260        
4261
4262        /**
4263         * Adds and returns a new value for <b>interaction</b> ()
4264         *
4265     * <p>
4266     * <b>Definition:</b>
4267     * Identifies a restful operation supported by the solution
4268     * </p> 
4269         */
4270        public RestResourceInteraction addInteraction() {
4271                RestResourceInteraction newType = new RestResourceInteraction();
4272                getInteraction().add(newType);
4273                return newType; 
4274        }
4275
4276        /**
4277         * Adds a given new value for <b>interaction</b> ()
4278         *
4279         * <p>
4280         * <b>Definition:</b>
4281         * Identifies a restful operation supported by the solution
4282         * </p>
4283         * @param theValue The interaction to add (must not be <code>null</code>)
4284         */
4285        public RestResource addInteraction(RestResourceInteraction theValue) {
4286                if (theValue == null) {
4287                        throw new NullPointerException("theValue must not be null");
4288                }
4289                getInteraction().add(theValue);
4290                return this;
4291        }
4292
4293        /**
4294         * Gets the first repetition for <b>interaction</b> (),
4295         * creating it if it does not already exist.
4296         *
4297     * <p>
4298     * <b>Definition:</b>
4299     * Identifies a restful operation supported by the solution
4300     * </p> 
4301         */
4302        public RestResourceInteraction getInteractionFirstRep() {
4303                if (getInteraction().isEmpty()) {
4304                        return addInteraction();
4305                }
4306                return getInteraction().get(0); 
4307        }
4308  
4309        /**
4310         * Gets the value(s) for <b>versioning</b> ().
4311         * creating it if it does
4312         * not exist. Will not return <code>null</code>.
4313         *
4314     * <p>
4315     * <b>Definition:</b>
4316     * This field is set to no-version to specify that the system does not support (server) or use (client) versioning for this resource type. If this has some other value, the server must at least correctly track and populate the versionId meta-property on resources. If the value is 'versioned-update', then the server supports all the versioning features, including using e-tags for version integrity in the API
4317     * </p> 
4318         */
4319        public BoundCodeDt<ResourceVersionPolicyEnum> getVersioningElement() {  
4320                if (myVersioning == null) {
4321                        myVersioning = new BoundCodeDt<ResourceVersionPolicyEnum>(ResourceVersionPolicyEnum.VALUESET_BINDER);
4322                }
4323                return myVersioning;
4324        }
4325
4326        
4327        /**
4328         * Gets the value(s) for <b>versioning</b> ().
4329         * creating it if it does
4330         * not exist. This method may return <code>null</code>.
4331         *
4332     * <p>
4333     * <b>Definition:</b>
4334     * This field is set to no-version to specify that the system does not support (server) or use (client) versioning for this resource type. If this has some other value, the server must at least correctly track and populate the versionId meta-property on resources. If the value is 'versioned-update', then the server supports all the versioning features, including using e-tags for version integrity in the API
4335     * </p> 
4336         */
4337        public String getVersioning() {  
4338                return getVersioningElement().getValue();
4339        }
4340
4341        /**
4342         * Sets the value(s) for <b>versioning</b> ()
4343         *
4344     * <p>
4345     * <b>Definition:</b>
4346     * This field is set to no-version to specify that the system does not support (server) or use (client) versioning for this resource type. If this has some other value, the server must at least correctly track and populate the versionId meta-property on resources. If the value is 'versioned-update', then the server supports all the versioning features, including using e-tags for version integrity in the API
4347     * </p> 
4348         */
4349        public RestResource setVersioning(BoundCodeDt<ResourceVersionPolicyEnum> theValue) {
4350                myVersioning = theValue;
4351                return this;
4352        }
4353        
4354        
4355
4356        /**
4357         * Sets the value(s) for <b>versioning</b> ()
4358         *
4359     * <p>
4360     * <b>Definition:</b>
4361     * This field is set to no-version to specify that the system does not support (server) or use (client) versioning for this resource type. If this has some other value, the server must at least correctly track and populate the versionId meta-property on resources. If the value is 'versioned-update', then the server supports all the versioning features, including using e-tags for version integrity in the API
4362     * </p> 
4363         */
4364        public RestResource setVersioning(ResourceVersionPolicyEnum theValue) {
4365                setVersioning(new BoundCodeDt<ResourceVersionPolicyEnum>(ResourceVersionPolicyEnum.VALUESET_BINDER, theValue));
4366                
4367/*
4368                getVersioningElement().setValueAsEnum(theValue);
4369*/
4370                return this;
4371        }
4372
4373  
4374        /**
4375         * Gets the value(s) for <b>readHistory</b> ().
4376         * creating it if it does
4377         * not exist. Will not return <code>null</code>.
4378         *
4379     * <p>
4380     * <b>Definition:</b>
4381     * A flag for whether the server is able to return past versions as part of the vRead operation
4382     * </p> 
4383         */
4384        public BooleanDt getReadHistoryElement() {  
4385                if (myReadHistory == null) {
4386                        myReadHistory = new BooleanDt();
4387                }
4388                return myReadHistory;
4389        }
4390
4391        
4392        /**
4393         * Gets the value(s) for <b>readHistory</b> ().
4394         * creating it if it does
4395         * not exist. This method may return <code>null</code>.
4396         *
4397     * <p>
4398     * <b>Definition:</b>
4399     * A flag for whether the server is able to return past versions as part of the vRead operation
4400     * </p> 
4401         */
4402        public Boolean getReadHistory() {  
4403                return getReadHistoryElement().getValue();
4404        }
4405
4406        /**
4407         * Sets the value(s) for <b>readHistory</b> ()
4408         *
4409     * <p>
4410     * <b>Definition:</b>
4411     * A flag for whether the server is able to return past versions as part of the vRead operation
4412     * </p> 
4413         */
4414        public RestResource setReadHistory(BooleanDt theValue) {
4415                myReadHistory = theValue;
4416                return this;
4417        }
4418        
4419        
4420
4421        /**
4422         * Sets the value for <b>readHistory</b> ()
4423         *
4424     * <p>
4425     * <b>Definition:</b>
4426     * A flag for whether the server is able to return past versions as part of the vRead operation
4427     * </p> 
4428         */
4429        public RestResource setReadHistory( boolean theBoolean) {
4430                myReadHistory = new BooleanDt(theBoolean); 
4431                return this; 
4432        }
4433
4434 
4435        /**
4436         * Gets the value(s) for <b>updateCreate</b> ().
4437         * creating it if it does
4438         * not exist. Will not return <code>null</code>.
4439         *
4440     * <p>
4441     * <b>Definition:</b>
4442     * A flag to indicate that the server allows or needs to allow the client to create new identities on the server (e.g. that is, the client PUTs to a location where there is no existing resource). Allowing this operation means that the server allows the client to create new identities on the server
4443     * </p> 
4444         */
4445        public BooleanDt getUpdateCreateElement() {  
4446                if (myUpdateCreate == null) {
4447                        myUpdateCreate = new BooleanDt();
4448                }
4449                return myUpdateCreate;
4450        }
4451
4452        
4453        /**
4454         * Gets the value(s) for <b>updateCreate</b> ().
4455         * creating it if it does
4456         * not exist. This method may return <code>null</code>.
4457         *
4458     * <p>
4459     * <b>Definition:</b>
4460     * A flag to indicate that the server allows or needs to allow the client to create new identities on the server (e.g. that is, the client PUTs to a location where there is no existing resource). Allowing this operation means that the server allows the client to create new identities on the server
4461     * </p> 
4462         */
4463        public Boolean getUpdateCreate() {  
4464                return getUpdateCreateElement().getValue();
4465        }
4466
4467        /**
4468         * Sets the value(s) for <b>updateCreate</b> ()
4469         *
4470     * <p>
4471     * <b>Definition:</b>
4472     * A flag to indicate that the server allows or needs to allow the client to create new identities on the server (e.g. that is, the client PUTs to a location where there is no existing resource). Allowing this operation means that the server allows the client to create new identities on the server
4473     * </p> 
4474         */
4475        public RestResource setUpdateCreate(BooleanDt theValue) {
4476                myUpdateCreate = theValue;
4477                return this;
4478        }
4479        
4480        
4481
4482        /**
4483         * Sets the value for <b>updateCreate</b> ()
4484         *
4485     * <p>
4486     * <b>Definition:</b>
4487     * A flag to indicate that the server allows or needs to allow the client to create new identities on the server (e.g. that is, the client PUTs to a location where there is no existing resource). Allowing this operation means that the server allows the client to create new identities on the server
4488     * </p> 
4489         */
4490        public RestResource setUpdateCreate( boolean theBoolean) {
4491                myUpdateCreate = new BooleanDt(theBoolean); 
4492                return this; 
4493        }
4494
4495 
4496        /**
4497         * Gets the value(s) for <b>conditionalCreate</b> ().
4498         * creating it if it does
4499         * not exist. Will not return <code>null</code>.
4500         *
4501     * <p>
4502     * <b>Definition:</b>
4503     * A flag that indicates that the server supports conditional create
4504     * </p> 
4505         */
4506        public BooleanDt getConditionalCreateElement() {  
4507                if (myConditionalCreate == null) {
4508                        myConditionalCreate = new BooleanDt();
4509                }
4510                return myConditionalCreate;
4511        }
4512
4513        
4514        /**
4515         * Gets the value(s) for <b>conditionalCreate</b> ().
4516         * creating it if it does
4517         * not exist. This method may return <code>null</code>.
4518         *
4519     * <p>
4520     * <b>Definition:</b>
4521     * A flag that indicates that the server supports conditional create
4522     * </p> 
4523         */
4524        public Boolean getConditionalCreate() {  
4525                return getConditionalCreateElement().getValue();
4526        }
4527
4528        /**
4529         * Sets the value(s) for <b>conditionalCreate</b> ()
4530         *
4531     * <p>
4532     * <b>Definition:</b>
4533     * A flag that indicates that the server supports conditional create
4534     * </p> 
4535         */
4536        public RestResource setConditionalCreate(BooleanDt theValue) {
4537                myConditionalCreate = theValue;
4538                return this;
4539        }
4540        
4541        
4542
4543        /**
4544         * Sets the value for <b>conditionalCreate</b> ()
4545         *
4546     * <p>
4547     * <b>Definition:</b>
4548     * A flag that indicates that the server supports conditional create
4549     * </p> 
4550         */
4551        public RestResource setConditionalCreate( boolean theBoolean) {
4552                myConditionalCreate = new BooleanDt(theBoolean); 
4553                return this; 
4554        }
4555
4556 
4557        /**
4558         * Gets the value(s) for <b>conditionalUpdate</b> ().
4559         * creating it if it does
4560         * not exist. Will not return <code>null</code>.
4561         *
4562     * <p>
4563     * <b>Definition:</b>
4564     * A flag that indicates that the server supports conditional update
4565     * </p> 
4566         */
4567        public BooleanDt getConditionalUpdateElement() {  
4568                if (myConditionalUpdate == null) {
4569                        myConditionalUpdate = new BooleanDt();
4570                }
4571                return myConditionalUpdate;
4572        }
4573
4574        
4575        /**
4576         * Gets the value(s) for <b>conditionalUpdate</b> ().
4577         * creating it if it does
4578         * not exist. This method may return <code>null</code>.
4579         *
4580     * <p>
4581     * <b>Definition:</b>
4582     * A flag that indicates that the server supports conditional update
4583     * </p> 
4584         */
4585        public Boolean getConditionalUpdate() {  
4586                return getConditionalUpdateElement().getValue();
4587        }
4588
4589        /**
4590         * Sets the value(s) for <b>conditionalUpdate</b> ()
4591         *
4592     * <p>
4593     * <b>Definition:</b>
4594     * A flag that indicates that the server supports conditional update
4595     * </p> 
4596         */
4597        public RestResource setConditionalUpdate(BooleanDt theValue) {
4598                myConditionalUpdate = theValue;
4599                return this;
4600        }
4601        
4602        
4603
4604        /**
4605         * Sets the value for <b>conditionalUpdate</b> ()
4606         *
4607     * <p>
4608     * <b>Definition:</b>
4609     * A flag that indicates that the server supports conditional update
4610     * </p> 
4611         */
4612        public RestResource setConditionalUpdate( boolean theBoolean) {
4613                myConditionalUpdate = new BooleanDt(theBoolean); 
4614                return this; 
4615        }
4616
4617 
4618        /**
4619         * Gets the value(s) for <b>conditionalDelete</b> ().
4620         * creating it if it does
4621         * not exist. Will not return <code>null</code>.
4622         *
4623     * <p>
4624     * <b>Definition:</b>
4625     * A code that indicates how the server supports conditional delete
4626     * </p> 
4627         */
4628        public BoundCodeDt<ConditionalDeleteStatusEnum> getConditionalDeleteElement() {  
4629                if (myConditionalDelete == null) {
4630                        myConditionalDelete = new BoundCodeDt<ConditionalDeleteStatusEnum>(ConditionalDeleteStatusEnum.VALUESET_BINDER);
4631                }
4632                return myConditionalDelete;
4633        }
4634
4635        
4636        /**
4637         * Gets the value(s) for <b>conditionalDelete</b> ().
4638         * creating it if it does
4639         * not exist. This method may return <code>null</code>.
4640         *
4641     * <p>
4642     * <b>Definition:</b>
4643     * A code that indicates how the server supports conditional delete
4644     * </p> 
4645         */
4646        public String getConditionalDelete() {  
4647                return getConditionalDeleteElement().getValue();
4648        }
4649
4650        /**
4651         * Sets the value(s) for <b>conditionalDelete</b> ()
4652         *
4653     * <p>
4654     * <b>Definition:</b>
4655     * A code that indicates how the server supports conditional delete
4656     * </p> 
4657         */
4658        public RestResource setConditionalDelete(BoundCodeDt<ConditionalDeleteStatusEnum> theValue) {
4659                myConditionalDelete = theValue;
4660                return this;
4661        }
4662        
4663        
4664
4665        /**
4666         * Sets the value(s) for <b>conditionalDelete</b> ()
4667         *
4668     * <p>
4669     * <b>Definition:</b>
4670     * A code that indicates how the server supports conditional delete
4671     * </p> 
4672         */
4673        public RestResource setConditionalDelete(ConditionalDeleteStatusEnum theValue) {
4674                setConditionalDelete(new BoundCodeDt<ConditionalDeleteStatusEnum>(ConditionalDeleteStatusEnum.VALUESET_BINDER, theValue));
4675                
4676/*
4677                getConditionalDeleteElement().setValueAsEnum(theValue);
4678*/
4679                return this;
4680        }
4681
4682  
4683        /**
4684         * Gets the value(s) for <b>searchInclude</b> ().
4685         * creating it if it does
4686         * not exist. Will not return <code>null</code>.
4687         *
4688     * <p>
4689     * <b>Definition:</b>
4690     * A list of _include values supported by the server
4691     * </p> 
4692         */
4693        public java.util.List<StringDt> getSearchInclude() {  
4694                if (mySearchInclude == null) {
4695                        mySearchInclude = new java.util.ArrayList<StringDt>();
4696                }
4697                return mySearchInclude;
4698        }
4699
4700        /**
4701         * Sets the value(s) for <b>searchInclude</b> ()
4702         *
4703     * <p>
4704     * <b>Definition:</b>
4705     * A list of _include values supported by the server
4706     * </p> 
4707         */
4708        public RestResource setSearchInclude(java.util.List<StringDt> theValue) {
4709                mySearchInclude = theValue;
4710                return this;
4711        }
4712        
4713        
4714
4715        /**
4716         * Adds and returns a new value for <b>searchInclude</b> ()
4717         *
4718     * <p>
4719     * <b>Definition:</b>
4720     * A list of _include values supported by the server
4721     * </p> 
4722         */
4723        public StringDt addSearchInclude() {
4724                StringDt newType = new StringDt();
4725                getSearchInclude().add(newType);
4726                return newType; 
4727        }
4728
4729        /**
4730         * Adds a given new value for <b>searchInclude</b> ()
4731         *
4732         * <p>
4733         * <b>Definition:</b>
4734         * A list of _include values supported by the server
4735         * </p>
4736         * @param theValue The searchInclude to add (must not be <code>null</code>)
4737         */
4738        public RestResource addSearchInclude(StringDt theValue) {
4739                if (theValue == null) {
4740                        throw new NullPointerException("theValue must not be null");
4741                }
4742                getSearchInclude().add(theValue);
4743                return this;
4744        }
4745
4746        /**
4747         * Gets the first repetition for <b>searchInclude</b> (),
4748         * creating it if it does not already exist.
4749         *
4750     * <p>
4751     * <b>Definition:</b>
4752     * A list of _include values supported by the server
4753     * </p> 
4754         */
4755        public StringDt getSearchIncludeFirstRep() {
4756                if (getSearchInclude().isEmpty()) {
4757                        return addSearchInclude();
4758                }
4759                return getSearchInclude().get(0); 
4760        }
4761        /**
4762         * Adds a new value for <b>searchInclude</b> ()
4763         *
4764     * <p>
4765     * <b>Definition:</b>
4766     * A list of _include values supported by the server
4767     * </p> 
4768     *
4769     * @return Returns a reference to this object, to allow for simple chaining.
4770         */
4771        public RestResource addSearchInclude( String theString) {
4772                if (mySearchInclude == null) {
4773                        mySearchInclude = new java.util.ArrayList<StringDt>();
4774                }
4775                mySearchInclude.add(new StringDt(theString));
4776                return this; 
4777        }
4778
4779 
4780        /**
4781         * Gets the value(s) for <b>searchRevInclude</b> ().
4782         * creating it if it does
4783         * not exist. Will not return <code>null</code>.
4784         *
4785     * <p>
4786     * <b>Definition:</b>
4787     * A list of _revinclude (reverse include) values supported by the server
4788     * </p> 
4789         */
4790        public java.util.List<StringDt> getSearchRevInclude() {  
4791                if (mySearchRevInclude == null) {
4792                        mySearchRevInclude = new java.util.ArrayList<StringDt>();
4793                }
4794                return mySearchRevInclude;
4795        }
4796
4797        /**
4798         * Sets the value(s) for <b>searchRevInclude</b> ()
4799         *
4800     * <p>
4801     * <b>Definition:</b>
4802     * A list of _revinclude (reverse include) values supported by the server
4803     * </p> 
4804         */
4805        public RestResource setSearchRevInclude(java.util.List<StringDt> theValue) {
4806                mySearchRevInclude = theValue;
4807                return this;
4808        }
4809        
4810        
4811
4812        /**
4813         * Adds and returns a new value for <b>searchRevInclude</b> ()
4814         *
4815     * <p>
4816     * <b>Definition:</b>
4817     * A list of _revinclude (reverse include) values supported by the server
4818     * </p> 
4819         */
4820        public StringDt addSearchRevInclude() {
4821                StringDt newType = new StringDt();
4822                getSearchRevInclude().add(newType);
4823                return newType; 
4824        }
4825
4826        /**
4827         * Adds a given new value for <b>searchRevInclude</b> ()
4828         *
4829         * <p>
4830         * <b>Definition:</b>
4831         * A list of _revinclude (reverse include) values supported by the server
4832         * </p>
4833         * @param theValue The searchRevInclude to add (must not be <code>null</code>)
4834         */
4835        public RestResource addSearchRevInclude(StringDt theValue) {
4836                if (theValue == null) {
4837                        throw new NullPointerException("theValue must not be null");
4838                }
4839                getSearchRevInclude().add(theValue);
4840                return this;
4841        }
4842
4843        /**
4844         * Gets the first repetition for <b>searchRevInclude</b> (),
4845         * creating it if it does not already exist.
4846         *
4847     * <p>
4848     * <b>Definition:</b>
4849     * A list of _revinclude (reverse include) values supported by the server
4850     * </p> 
4851         */
4852        public StringDt getSearchRevIncludeFirstRep() {
4853                if (getSearchRevInclude().isEmpty()) {
4854                        return addSearchRevInclude();
4855                }
4856                return getSearchRevInclude().get(0); 
4857        }
4858        /**
4859         * Adds a new value for <b>searchRevInclude</b> ()
4860         *
4861     * <p>
4862     * <b>Definition:</b>
4863     * A list of _revinclude (reverse include) values supported by the server
4864     * </p> 
4865     *
4866     * @return Returns a reference to this object, to allow for simple chaining.
4867         */
4868        public RestResource addSearchRevInclude( String theString) {
4869                if (mySearchRevInclude == null) {
4870                        mySearchRevInclude = new java.util.ArrayList<StringDt>();
4871                }
4872                mySearchRevInclude.add(new StringDt(theString));
4873                return this; 
4874        }
4875
4876 
4877        /**
4878         * Gets the value(s) for <b>searchParam</b> ().
4879         * creating it if it does
4880         * not exist. Will not return <code>null</code>.
4881         *
4882     * <p>
4883     * <b>Definition:</b>
4884     * Search parameters for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation
4885     * </p> 
4886         */
4887        public java.util.List<RestResourceSearchParam> getSearchParam() {  
4888                if (mySearchParam == null) {
4889                        mySearchParam = new java.util.ArrayList<RestResourceSearchParam>();
4890                }
4891                return mySearchParam;
4892        }
4893
4894        /**
4895         * Sets the value(s) for <b>searchParam</b> ()
4896         *
4897     * <p>
4898     * <b>Definition:</b>
4899     * Search parameters for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation
4900     * </p> 
4901         */
4902        public RestResource setSearchParam(java.util.List<RestResourceSearchParam> theValue) {
4903                mySearchParam = theValue;
4904                return this;
4905        }
4906        
4907        
4908
4909        /**
4910         * Adds and returns a new value for <b>searchParam</b> ()
4911         *
4912     * <p>
4913     * <b>Definition:</b>
4914     * Search parameters for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation
4915     * </p> 
4916         */
4917        public RestResourceSearchParam addSearchParam() {
4918                RestResourceSearchParam newType = new RestResourceSearchParam();
4919                getSearchParam().add(newType);
4920                return newType; 
4921        }
4922
4923        /**
4924         * Adds a given new value for <b>searchParam</b> ()
4925         *
4926         * <p>
4927         * <b>Definition:</b>
4928         * Search parameters for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation
4929         * </p>
4930         * @param theValue The searchParam to add (must not be <code>null</code>)
4931         */
4932        public RestResource addSearchParam(RestResourceSearchParam theValue) {
4933                if (theValue == null) {
4934                        throw new NullPointerException("theValue must not be null");
4935                }
4936                getSearchParam().add(theValue);
4937                return this;
4938        }
4939
4940        /**
4941         * Gets the first repetition for <b>searchParam</b> (),
4942         * creating it if it does not already exist.
4943         *
4944     * <p>
4945     * <b>Definition:</b>
4946     * Search parameters for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation
4947     * </p> 
4948         */
4949        public RestResourceSearchParam getSearchParamFirstRep() {
4950                if (getSearchParam().isEmpty()) {
4951                        return addSearchParam();
4952                }
4953                return getSearchParam().get(0); 
4954        }
4955  
4956
4957
4958        }
4959
4960        /**
4961         * Block class for child element: <b>Conformance.rest.resource.interaction</b> ()
4962         *
4963     * <p>
4964     * <b>Definition:</b>
4965     * Identifies a restful operation supported by the solution
4966     * </p> 
4967         */
4968        @Block()        
4969        public static class RestResourceInteraction 
4970            extends  BaseIdentifiableElement  
4971            implements IResourceBlock {
4972        
4973        @Child(name="code", type=CodeDt.class, order=0, min=1, max=1, summary=false, modifier=false)    
4974        @Description(
4975                shortDefinition="",
4976                formalDefinition="Coded identifier of the operation, supported by the system resource"
4977        )
4978        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/type-restful-interaction")
4979        private BoundCodeDt<TypeRestfulInteractionEnum> myCode;
4980        
4981        @Child(name="documentation", type=StringDt.class, order=1, min=0, max=1, summary=false, modifier=false) 
4982        @Description(
4983                shortDefinition="",
4984                formalDefinition="Guidance specific to the implementation of this operation, such as 'delete is a logical delete' or 'updates are only allowed with version id' or 'creates permitted from pre-authorized certificates only'"
4985        )
4986        private StringDt myDocumentation;
4987        
4988
4989        @Override
4990        public boolean isEmpty() {
4991                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCode,  myDocumentation);
4992        }
4993        
4994        @Override
4995        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
4996                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCode, myDocumentation);
4997        }
4998
4999        /**
5000         * Gets the value(s) for <b>code</b> ().
5001         * creating it if it does
5002         * not exist. Will not return <code>null</code>.
5003         *
5004     * <p>
5005     * <b>Definition:</b>
5006     * Coded identifier of the operation, supported by the system resource
5007     * </p> 
5008         */
5009        public BoundCodeDt<TypeRestfulInteractionEnum> getCodeElement() {  
5010                if (myCode == null) {
5011                        myCode = new BoundCodeDt<TypeRestfulInteractionEnum>(TypeRestfulInteractionEnum.VALUESET_BINDER);
5012                }
5013                return myCode;
5014        }
5015
5016        
5017        /**
5018         * Gets the value(s) for <b>code</b> ().
5019         * creating it if it does
5020         * not exist. This method may return <code>null</code>.
5021         *
5022     * <p>
5023     * <b>Definition:</b>
5024     * Coded identifier of the operation, supported by the system resource
5025     * </p> 
5026         */
5027        public String getCode() {  
5028                return getCodeElement().getValue();
5029        }
5030
5031        /**
5032         * Sets the value(s) for <b>code</b> ()
5033         *
5034     * <p>
5035     * <b>Definition:</b>
5036     * Coded identifier of the operation, supported by the system resource
5037     * </p> 
5038         */
5039        public RestResourceInteraction setCode(BoundCodeDt<TypeRestfulInteractionEnum> theValue) {
5040                myCode = theValue;
5041                return this;
5042        }
5043        
5044        
5045
5046        /**
5047         * Sets the value(s) for <b>code</b> ()
5048         *
5049     * <p>
5050     * <b>Definition:</b>
5051     * Coded identifier of the operation, supported by the system resource
5052     * </p> 
5053         */
5054        public RestResourceInteraction setCode(TypeRestfulInteractionEnum theValue) {
5055                setCode(new BoundCodeDt<TypeRestfulInteractionEnum>(TypeRestfulInteractionEnum.VALUESET_BINDER, theValue));
5056                
5057/*
5058                getCodeElement().setValueAsEnum(theValue);
5059*/
5060                return this;
5061        }
5062
5063  
5064        /**
5065         * Gets the value(s) for <b>documentation</b> ().
5066         * creating it if it does
5067         * not exist. Will not return <code>null</code>.
5068         *
5069     * <p>
5070     * <b>Definition:</b>
5071     * Guidance specific to the implementation of this operation, such as 'delete is a logical delete' or 'updates are only allowed with version id' or 'creates permitted from pre-authorized certificates only'
5072     * </p> 
5073         */
5074        public StringDt getDocumentationElement() {  
5075                if (myDocumentation == null) {
5076                        myDocumentation = new StringDt();
5077                }
5078                return myDocumentation;
5079        }
5080
5081        
5082        /**
5083         * Gets the value(s) for <b>documentation</b> ().
5084         * creating it if it does
5085         * not exist. This method may return <code>null</code>.
5086         *
5087     * <p>
5088     * <b>Definition:</b>
5089     * Guidance specific to the implementation of this operation, such as 'delete is a logical delete' or 'updates are only allowed with version id' or 'creates permitted from pre-authorized certificates only'
5090     * </p> 
5091         */
5092        public String getDocumentation() {  
5093                return getDocumentationElement().getValue();
5094        }
5095
5096        /**
5097         * Sets the value(s) for <b>documentation</b> ()
5098         *
5099     * <p>
5100     * <b>Definition:</b>
5101     * Guidance specific to the implementation of this operation, such as 'delete is a logical delete' or 'updates are only allowed with version id' or 'creates permitted from pre-authorized certificates only'
5102     * </p> 
5103         */
5104        public RestResourceInteraction setDocumentation(StringDt theValue) {
5105                myDocumentation = theValue;
5106                return this;
5107        }
5108        
5109        
5110
5111        /**
5112         * Sets the value for <b>documentation</b> ()
5113         *
5114     * <p>
5115     * <b>Definition:</b>
5116     * Guidance specific to the implementation of this operation, such as 'delete is a logical delete' or 'updates are only allowed with version id' or 'creates permitted from pre-authorized certificates only'
5117     * </p> 
5118         */
5119        public RestResourceInteraction setDocumentation( String theString) {
5120                myDocumentation = new StringDt(theString); 
5121                return this; 
5122        }
5123
5124 
5125
5126
5127        }
5128
5129
5130        /**
5131         * Block class for child element: <b>Conformance.rest.resource.searchParam</b> ()
5132         *
5133     * <p>
5134     * <b>Definition:</b>
5135     * Search parameters for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementation
5136     * </p> 
5137         */
5138        @Block()        
5139        public static class RestResourceSearchParam 
5140            extends  BaseIdentifiableElement  
5141            implements IResourceBlock {
5142        
5143        @Child(name="name", type=StringDt.class, order=0, min=1, max=1, summary=false, modifier=false)  
5144        @Description(
5145                shortDefinition="",
5146                formalDefinition="The name of the search parameter used in the interface"
5147        )
5148        private StringDt myName;
5149        
5150        @Child(name="definition", type=UriDt.class, order=1, min=0, max=1, summary=false, modifier=false)       
5151        @Description(
5152                shortDefinition="",
5153                formalDefinition="An absolute URI that is a formal reference to where this parameter was first defined, so that a client can be confident of the meaning of the search parameter (a reference to [[[SearchParameter.url]]])"
5154        )
5155        private UriDt myDefinition;
5156        
5157        @Child(name="type", type=CodeDt.class, order=2, min=1, max=1, summary=false, modifier=false)    
5158        @Description(
5159                shortDefinition="",
5160                formalDefinition="The type of value a search parameter refers to, and how the content is interpreted"
5161        )
5162        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/search-param-type")
5163        private BoundCodeDt<SearchParamTypeEnum> myType;
5164        
5165        @Child(name="documentation", type=StringDt.class, order=3, min=0, max=1, summary=false, modifier=false) 
5166        @Description(
5167                shortDefinition="",
5168                formalDefinition="This allows documentation of any distinct behaviors about how the search parameter is used.  For example, text matching algorithms."
5169        )
5170        private StringDt myDocumentation;
5171        
5172        @Child(name="target", type=CodeDt.class, order=4, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)        
5173        @Description(
5174                shortDefinition="",
5175                formalDefinition="Types of resource (if a resource is referenced)"
5176        )
5177        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/resource-types")
5178        private java.util.List<BoundCodeDt<ResourceTypeEnum>> myTarget;
5179        
5180        @Child(name="modifier", type=CodeDt.class, order=5, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
5181        @Description(
5182                shortDefinition="",
5183                formalDefinition="A modifier supported for the search parameter"
5184        )
5185        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/search-modifier-code")
5186        private java.util.List<BoundCodeDt<SearchModifierCodeEnum>> myModifier;
5187        
5188        @Child(name="chain", type=StringDt.class, order=6, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
5189        @Description(
5190                shortDefinition="",
5191                formalDefinition="Contains the names of any search parameters which may be chained to the containing search parameter. Chained parameters may be added to search parameters of type reference, and specify that resources will only be returned if they contain a reference to a resource which matches the chained parameter value. Values for this field should be drawn from Conformance.rest.resource.searchParam.name on the target resource type"
5192        )
5193        private java.util.List<StringDt> myChain;
5194        
5195
5196        @Override
5197        public boolean isEmpty() {
5198                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myDefinition,  myType,  myDocumentation,  myTarget,  myModifier,  myChain);
5199        }
5200        
5201        @Override
5202        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
5203                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myDefinition, myType, myDocumentation, myTarget, myModifier, myChain);
5204        }
5205
5206        /**
5207         * Gets the value(s) for <b>name</b> ().
5208         * creating it if it does
5209         * not exist. Will not return <code>null</code>.
5210         *
5211     * <p>
5212     * <b>Definition:</b>
5213     * The name of the search parameter used in the interface
5214     * </p> 
5215         */
5216        public StringDt getNameElement() {  
5217                if (myName == null) {
5218                        myName = new StringDt();
5219                }
5220                return myName;
5221        }
5222
5223        
5224        /**
5225         * Gets the value(s) for <b>name</b> ().
5226         * creating it if it does
5227         * not exist. This method may return <code>null</code>.
5228         *
5229     * <p>
5230     * <b>Definition:</b>
5231     * The name of the search parameter used in the interface
5232     * </p> 
5233         */
5234        public String getName() {  
5235                return getNameElement().getValue();
5236        }
5237
5238        /**
5239         * Sets the value(s) for <b>name</b> ()
5240         *
5241     * <p>
5242     * <b>Definition:</b>
5243     * The name of the search parameter used in the interface
5244     * </p> 
5245         */
5246        public RestResourceSearchParam setName(StringDt theValue) {
5247                myName = theValue;
5248                return this;
5249        }
5250        
5251        
5252
5253        /**
5254         * Sets the value for <b>name</b> ()
5255         *
5256     * <p>
5257     * <b>Definition:</b>
5258     * The name of the search parameter used in the interface
5259     * </p> 
5260         */
5261        public RestResourceSearchParam setName( String theString) {
5262                myName = new StringDt(theString); 
5263                return this; 
5264        }
5265
5266 
5267        /**
5268         * Gets the value(s) for <b>definition</b> ().
5269         * creating it if it does
5270         * not exist. Will not return <code>null</code>.
5271         *
5272     * <p>
5273     * <b>Definition:</b>
5274     * An absolute URI that is a formal reference to where this parameter was first defined, so that a client can be confident of the meaning of the search parameter (a reference to [[[SearchParameter.url]]])
5275     * </p> 
5276         */
5277        public UriDt getDefinitionElement() {  
5278                if (myDefinition == null) {
5279                        myDefinition = new UriDt();
5280                }
5281                return myDefinition;
5282        }
5283
5284        
5285        /**
5286         * Gets the value(s) for <b>definition</b> ().
5287         * creating it if it does
5288         * not exist. This method may return <code>null</code>.
5289         *
5290     * <p>
5291     * <b>Definition:</b>
5292     * An absolute URI that is a formal reference to where this parameter was first defined, so that a client can be confident of the meaning of the search parameter (a reference to [[[SearchParameter.url]]])
5293     * </p> 
5294         */
5295        public String getDefinition() {  
5296                return getDefinitionElement().getValue();
5297        }
5298
5299        /**
5300         * Sets the value(s) for <b>definition</b> ()
5301         *
5302     * <p>
5303     * <b>Definition:</b>
5304     * An absolute URI that is a formal reference to where this parameter was first defined, so that a client can be confident of the meaning of the search parameter (a reference to [[[SearchParameter.url]]])
5305     * </p> 
5306         */
5307        public RestResourceSearchParam setDefinition(UriDt theValue) {
5308                myDefinition = theValue;
5309                return this;
5310        }
5311        
5312        
5313
5314        /**
5315         * Sets the value for <b>definition</b> ()
5316         *
5317     * <p>
5318     * <b>Definition:</b>
5319     * An absolute URI that is a formal reference to where this parameter was first defined, so that a client can be confident of the meaning of the search parameter (a reference to [[[SearchParameter.url]]])
5320     * </p> 
5321         */
5322        public RestResourceSearchParam setDefinition( String theUri) {
5323                myDefinition = new UriDt(theUri); 
5324                return this; 
5325        }
5326
5327 
5328        /**
5329         * Gets the value(s) for <b>type</b> ().
5330         * creating it if it does
5331         * not exist. Will not return <code>null</code>.
5332         *
5333     * <p>
5334     * <b>Definition:</b>
5335     * The type of value a search parameter refers to, and how the content is interpreted
5336     * </p> 
5337         */
5338        public BoundCodeDt<SearchParamTypeEnum> getTypeElement() {  
5339                if (myType == null) {
5340                        myType = new BoundCodeDt<SearchParamTypeEnum>(SearchParamTypeEnum.VALUESET_BINDER);
5341                }
5342                return myType;
5343        }
5344
5345        
5346        /**
5347         * Gets the value(s) for <b>type</b> ().
5348         * creating it if it does
5349         * not exist. This method may return <code>null</code>.
5350         *
5351     * <p>
5352     * <b>Definition:</b>
5353     * The type of value a search parameter refers to, and how the content is interpreted
5354     * </p> 
5355         */
5356        public String getType() {  
5357                return getTypeElement().getValue();
5358        }
5359
5360        /**
5361         * Sets the value(s) for <b>type</b> ()
5362         *
5363     * <p>
5364     * <b>Definition:</b>
5365     * The type of value a search parameter refers to, and how the content is interpreted
5366     * </p> 
5367         */
5368        public RestResourceSearchParam setType(BoundCodeDt<SearchParamTypeEnum> theValue) {
5369                myType = theValue;
5370                return this;
5371        }
5372        
5373        
5374
5375        /**
5376         * Sets the value(s) for <b>type</b> ()
5377         *
5378     * <p>
5379     * <b>Definition:</b>
5380     * The type of value a search parameter refers to, and how the content is interpreted
5381     * </p> 
5382         */
5383        public RestResourceSearchParam setType(SearchParamTypeEnum theValue) {
5384                setType(new BoundCodeDt<SearchParamTypeEnum>(SearchParamTypeEnum.VALUESET_BINDER, theValue));
5385                
5386/*
5387                getTypeElement().setValueAsEnum(theValue);
5388*/
5389                return this;
5390        }
5391
5392  
5393        /**
5394         * Gets the value(s) for <b>documentation</b> ().
5395         * creating it if it does
5396         * not exist. Will not return <code>null</code>.
5397         *
5398     * <p>
5399     * <b>Definition:</b>
5400     * This allows documentation of any distinct behaviors about how the search parameter is used.  For example, text matching algorithms.
5401     * </p> 
5402         */
5403        public StringDt getDocumentationElement() {  
5404                if (myDocumentation == null) {
5405                        myDocumentation = new StringDt();
5406                }
5407                return myDocumentation;
5408        }
5409
5410        
5411        /**
5412         * Gets the value(s) for <b>documentation</b> ().
5413         * creating it if it does
5414         * not exist. This method may return <code>null</code>.
5415         *
5416     * <p>
5417     * <b>Definition:</b>
5418     * This allows documentation of any distinct behaviors about how the search parameter is used.  For example, text matching algorithms.
5419     * </p> 
5420         */
5421        public String getDocumentation() {  
5422                return getDocumentationElement().getValue();
5423        }
5424
5425        /**
5426         * Sets the value(s) for <b>documentation</b> ()
5427         *
5428     * <p>
5429     * <b>Definition:</b>
5430     * This allows documentation of any distinct behaviors about how the search parameter is used.  For example, text matching algorithms.
5431     * </p> 
5432         */
5433        public RestResourceSearchParam setDocumentation(StringDt theValue) {
5434                myDocumentation = theValue;
5435                return this;
5436        }
5437        
5438        
5439
5440        /**
5441         * Sets the value for <b>documentation</b> ()
5442         *
5443     * <p>
5444     * <b>Definition:</b>
5445     * This allows documentation of any distinct behaviors about how the search parameter is used.  For example, text matching algorithms.
5446     * </p> 
5447         */
5448        public RestResourceSearchParam setDocumentation( String theString) {
5449                myDocumentation = new StringDt(theString); 
5450                return this; 
5451        }
5452
5453 
5454        /**
5455         * Gets the value(s) for <b>target</b> ().
5456         * creating it if it does
5457         * not exist. Will not return <code>null</code>.
5458         *
5459     * <p>
5460     * <b>Definition:</b>
5461     * Types of resource (if a resource is referenced)
5462     * </p> 
5463         */
5464        public java.util.List<BoundCodeDt<ResourceTypeEnum>> getTarget() {  
5465                if (myTarget == null) {
5466                        myTarget = new java.util.ArrayList<BoundCodeDt<ResourceTypeEnum>>();
5467                }
5468                return myTarget;
5469        }
5470
5471        /**
5472         * Sets the value(s) for <b>target</b> ()
5473         *
5474     * <p>
5475     * <b>Definition:</b>
5476     * Types of resource (if a resource is referenced)
5477     * </p> 
5478         */
5479        public RestResourceSearchParam setTarget(java.util.List<BoundCodeDt<ResourceTypeEnum>> theValue) {
5480                myTarget = theValue;
5481                return this;
5482        }
5483        
5484        
5485
5486        /**
5487         * Add a value for <b>target</b> () using an enumerated type. This
5488         * is intended as a convenience method for situations where the FHIR defined ValueSets are mandatory
5489         * or contain the desirable codes. If you wish to use codes other than those which are built-in, 
5490         * you may also use the {@link #addTarget()} method.
5491         *
5492     * <p>
5493     * <b>Definition:</b>
5494     * Types of resource (if a resource is referenced)
5495     * </p> 
5496         */
5497        public BoundCodeDt<ResourceTypeEnum> addTarget(ResourceTypeEnum theValue) {
5498                BoundCodeDt<ResourceTypeEnum> retVal = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER, theValue);
5499                getTarget().add(retVal);
5500                return retVal;
5501        }
5502
5503        /**
5504         * Gets the first repetition for <b>target</b> (),
5505         * creating it if it does not already exist.
5506         *
5507     * <p>
5508     * <b>Definition:</b>
5509     * Types of resource (if a resource is referenced)
5510     * </p> 
5511         */
5512        public BoundCodeDt<ResourceTypeEnum> getTargetFirstRep() {
5513                if (getTarget().size() == 0) {
5514                        addTarget();
5515                }
5516                return getTarget().get(0);
5517        }
5518
5519        /**
5520         * Add a value for <b>target</b> ()
5521         *
5522     * <p>
5523     * <b>Definition:</b>
5524     * Types of resource (if a resource is referenced)
5525     * </p> 
5526         */
5527        public BoundCodeDt<ResourceTypeEnum> addTarget() {
5528                BoundCodeDt<ResourceTypeEnum> retVal = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER);
5529                getTarget().add(retVal);
5530                return retVal;
5531        }
5532
5533        /**
5534         * Sets the value(s), and clears any existing value(s) for <b>target</b> ()
5535         *
5536     * <p>
5537     * <b>Definition:</b>
5538     * Types of resource (if a resource is referenced)
5539     * </p> 
5540         */
5541        public RestResourceSearchParam setTarget(ResourceTypeEnum theValue) {
5542                getTarget().clear();
5543                addTarget(theValue);
5544                return this;
5545        }
5546
5547  
5548        /**
5549         * Gets the value(s) for <b>modifier</b> ().
5550         * creating it if it does
5551         * not exist. Will not return <code>null</code>.
5552         *
5553     * <p>
5554     * <b>Definition:</b>
5555     * A modifier supported for the search parameter
5556     * </p> 
5557         */
5558        public java.util.List<BoundCodeDt<SearchModifierCodeEnum>> getModifier() {  
5559                if (myModifier == null) {
5560                        myModifier = new java.util.ArrayList<BoundCodeDt<SearchModifierCodeEnum>>();
5561                }
5562                return myModifier;
5563        }
5564
5565        /**
5566         * Sets the value(s) for <b>modifier</b> ()
5567         *
5568     * <p>
5569     * <b>Definition:</b>
5570     * A modifier supported for the search parameter
5571     * </p> 
5572         */
5573        public RestResourceSearchParam setModifier(java.util.List<BoundCodeDt<SearchModifierCodeEnum>> theValue) {
5574                myModifier = theValue;
5575                return this;
5576        }
5577        
5578        
5579
5580        /**
5581         * Add a value for <b>modifier</b> () using an enumerated type. This
5582         * is intended as a convenience method for situations where the FHIR defined ValueSets are mandatory
5583         * or contain the desirable codes. If you wish to use codes other than those which are built-in, 
5584         * you may also use the {@link #addModifier()} method.
5585         *
5586     * <p>
5587     * <b>Definition:</b>
5588     * A modifier supported for the search parameter
5589     * </p> 
5590         */
5591        public BoundCodeDt<SearchModifierCodeEnum> addModifier(SearchModifierCodeEnum theValue) {
5592                BoundCodeDt<SearchModifierCodeEnum> retVal = new BoundCodeDt<SearchModifierCodeEnum>(SearchModifierCodeEnum.VALUESET_BINDER, theValue);
5593                getModifier().add(retVal);
5594                return retVal;
5595        }
5596
5597        /**
5598         * Gets the first repetition for <b>modifier</b> (),
5599         * creating it if it does not already exist.
5600         *
5601     * <p>
5602     * <b>Definition:</b>
5603     * A modifier supported for the search parameter
5604     * </p> 
5605         */
5606        public BoundCodeDt<SearchModifierCodeEnum> getModifierFirstRep() {
5607                if (getModifier().size() == 0) {
5608                        addModifier();
5609                }
5610                return getModifier().get(0);
5611        }
5612
5613        /**
5614         * Add a value for <b>modifier</b> ()
5615         *
5616     * <p>
5617     * <b>Definition:</b>
5618     * A modifier supported for the search parameter
5619     * </p> 
5620         */
5621        public BoundCodeDt<SearchModifierCodeEnum> addModifier() {
5622                BoundCodeDt<SearchModifierCodeEnum> retVal = new BoundCodeDt<SearchModifierCodeEnum>(SearchModifierCodeEnum.VALUESET_BINDER);
5623                getModifier().add(retVal);
5624                return retVal;
5625        }
5626
5627        /**
5628         * Sets the value(s), and clears any existing value(s) for <b>modifier</b> ()
5629         *
5630     * <p>
5631     * <b>Definition:</b>
5632     * A modifier supported for the search parameter
5633     * </p> 
5634         */
5635        public RestResourceSearchParam setModifier(SearchModifierCodeEnum theValue) {
5636                getModifier().clear();
5637                addModifier(theValue);
5638                return this;
5639        }
5640
5641  
5642        /**
5643         * Gets the value(s) for <b>chain</b> ().
5644         * creating it if it does
5645         * not exist. Will not return <code>null</code>.
5646         *
5647     * <p>
5648     * <b>Definition:</b>
5649     * Contains the names of any search parameters which may be chained to the containing search parameter. Chained parameters may be added to search parameters of type reference, and specify that resources will only be returned if they contain a reference to a resource which matches the chained parameter value. Values for this field should be drawn from Conformance.rest.resource.searchParam.name on the target resource type
5650     * </p> 
5651         */
5652        public java.util.List<StringDt> getChain() {  
5653                if (myChain == null) {
5654                        myChain = new java.util.ArrayList<StringDt>();
5655                }
5656                return myChain;
5657        }
5658
5659        /**
5660         * Sets the value(s) for <b>chain</b> ()
5661         *
5662     * <p>
5663     * <b>Definition:</b>
5664     * Contains the names of any search parameters which may be chained to the containing search parameter. Chained parameters may be added to search parameters of type reference, and specify that resources will only be returned if they contain a reference to a resource which matches the chained parameter value. Values for this field should be drawn from Conformance.rest.resource.searchParam.name on the target resource type
5665     * </p> 
5666         */
5667        public RestResourceSearchParam setChain(java.util.List<StringDt> theValue) {
5668                myChain = theValue;
5669                return this;
5670        }
5671        
5672        
5673
5674        /**
5675         * Adds and returns a new value for <b>chain</b> ()
5676         *
5677     * <p>
5678     * <b>Definition:</b>
5679     * Contains the names of any search parameters which may be chained to the containing search parameter. Chained parameters may be added to search parameters of type reference, and specify that resources will only be returned if they contain a reference to a resource which matches the chained parameter value. Values for this field should be drawn from Conformance.rest.resource.searchParam.name on the target resource type
5680     * </p> 
5681         */
5682        public StringDt addChain() {
5683                StringDt newType = new StringDt();
5684                getChain().add(newType);
5685                return newType; 
5686        }
5687
5688        /**
5689         * Adds a given new value for <b>chain</b> ()
5690         *
5691         * <p>
5692         * <b>Definition:</b>
5693         * Contains the names of any search parameters which may be chained to the containing search parameter. Chained parameters may be added to search parameters of type reference, and specify that resources will only be returned if they contain a reference to a resource which matches the chained parameter value. Values for this field should be drawn from Conformance.rest.resource.searchParam.name on the target resource type
5694         * </p>
5695         * @param theValue The chain to add (must not be <code>null</code>)
5696         */
5697        public RestResourceSearchParam addChain(StringDt theValue) {
5698                if (theValue == null) {
5699                        throw new NullPointerException("theValue must not be null");
5700                }
5701                getChain().add(theValue);
5702                return this;
5703        }
5704
5705        /**
5706         * Gets the first repetition for <b>chain</b> (),
5707         * creating it if it does not already exist.
5708         *
5709     * <p>
5710     * <b>Definition:</b>
5711     * Contains the names of any search parameters which may be chained to the containing search parameter. Chained parameters may be added to search parameters of type reference, and specify that resources will only be returned if they contain a reference to a resource which matches the chained parameter value. Values for this field should be drawn from Conformance.rest.resource.searchParam.name on the target resource type
5712     * </p> 
5713         */
5714        public StringDt getChainFirstRep() {
5715                if (getChain().isEmpty()) {
5716                        return addChain();
5717                }
5718                return getChain().get(0); 
5719        }
5720        /**
5721         * Adds a new value for <b>chain</b> ()
5722         *
5723     * <p>
5724     * <b>Definition:</b>
5725     * Contains the names of any search parameters which may be chained to the containing search parameter. Chained parameters may be added to search parameters of type reference, and specify that resources will only be returned if they contain a reference to a resource which matches the chained parameter value. Values for this field should be drawn from Conformance.rest.resource.searchParam.name on the target resource type
5726     * </p> 
5727     *
5728     * @return Returns a reference to this object, to allow for simple chaining.
5729         */
5730        public RestResourceSearchParam addChain( String theString) {
5731                if (myChain == null) {
5732                        myChain = new java.util.ArrayList<StringDt>();
5733                }
5734                myChain.add(new StringDt(theString));
5735                return this; 
5736        }
5737
5738 
5739
5740
5741        }
5742
5743
5744
5745        /**
5746         * Block class for child element: <b>Conformance.rest.interaction</b> ()
5747         *
5748     * <p>
5749     * <b>Definition:</b>
5750     * A specification of restful operations supported by the system
5751     * </p> 
5752         */
5753        @Block()        
5754        public static class RestInteraction 
5755            extends  BaseIdentifiableElement  
5756            implements IResourceBlock {
5757        
5758        @Child(name="code", type=CodeDt.class, order=0, min=1, max=1, summary=false, modifier=false)    
5759        @Description(
5760                shortDefinition="",
5761                formalDefinition="A coded identifier of the operation, supported by the system"
5762        )
5763        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/system-restful-interaction")
5764        private BoundCodeDt<SystemRestfulInteractionEnum> myCode;
5765        
5766        @Child(name="documentation", type=StringDt.class, order=1, min=0, max=1, summary=false, modifier=false) 
5767        @Description(
5768                shortDefinition="",
5769                formalDefinition="Guidance specific to the implementation of this operation, such as limitations on the kind of transactions allowed, or information about system wide search is implemented"
5770        )
5771        private StringDt myDocumentation;
5772        
5773
5774        @Override
5775        public boolean isEmpty() {
5776                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCode,  myDocumentation);
5777        }
5778        
5779        @Override
5780        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
5781                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCode, myDocumentation);
5782        }
5783
5784        /**
5785         * Gets the value(s) for <b>code</b> ().
5786         * creating it if it does
5787         * not exist. Will not return <code>null</code>.
5788         *
5789     * <p>
5790     * <b>Definition:</b>
5791     * A coded identifier of the operation, supported by the system
5792     * </p> 
5793         */
5794        public BoundCodeDt<SystemRestfulInteractionEnum> getCodeElement() {  
5795                if (myCode == null) {
5796                        myCode = new BoundCodeDt<SystemRestfulInteractionEnum>(SystemRestfulInteractionEnum.VALUESET_BINDER);
5797                }
5798                return myCode;
5799        }
5800
5801        
5802        /**
5803         * Gets the value(s) for <b>code</b> ().
5804         * creating it if it does
5805         * not exist. This method may return <code>null</code>.
5806         *
5807     * <p>
5808     * <b>Definition:</b>
5809     * A coded identifier of the operation, supported by the system
5810     * </p> 
5811         */
5812        public String getCode() {  
5813                return getCodeElement().getValue();
5814        }
5815
5816        /**
5817         * Sets the value(s) for <b>code</b> ()
5818         *
5819     * <p>
5820     * <b>Definition:</b>
5821     * A coded identifier of the operation, supported by the system
5822     * </p> 
5823         */
5824        public RestInteraction setCode(BoundCodeDt<SystemRestfulInteractionEnum> theValue) {
5825                myCode = theValue;
5826                return this;
5827        }
5828        
5829        
5830
5831        /**
5832         * Sets the value(s) for <b>code</b> ()
5833         *
5834     * <p>
5835     * <b>Definition:</b>
5836     * A coded identifier of the operation, supported by the system
5837     * </p> 
5838         */
5839        public RestInteraction setCode(SystemRestfulInteractionEnum theValue) {
5840                setCode(new BoundCodeDt<SystemRestfulInteractionEnum>(SystemRestfulInteractionEnum.VALUESET_BINDER, theValue));
5841                
5842/*
5843                getCodeElement().setValueAsEnum(theValue);
5844*/
5845                return this;
5846        }
5847
5848  
5849        /**
5850         * Gets the value(s) for <b>documentation</b> ().
5851         * creating it if it does
5852         * not exist. Will not return <code>null</code>.
5853         *
5854     * <p>
5855     * <b>Definition:</b>
5856     * Guidance specific to the implementation of this operation, such as limitations on the kind of transactions allowed, or information about system wide search is implemented
5857     * </p> 
5858         */
5859        public StringDt getDocumentationElement() {  
5860                if (myDocumentation == null) {
5861                        myDocumentation = new StringDt();
5862                }
5863                return myDocumentation;
5864        }
5865
5866        
5867        /**
5868         * Gets the value(s) for <b>documentation</b> ().
5869         * creating it if it does
5870         * not exist. This method may return <code>null</code>.
5871         *
5872     * <p>
5873     * <b>Definition:</b>
5874     * Guidance specific to the implementation of this operation, such as limitations on the kind of transactions allowed, or information about system wide search is implemented
5875     * </p> 
5876         */
5877        public String getDocumentation() {  
5878                return getDocumentationElement().getValue();
5879        }
5880
5881        /**
5882         * Sets the value(s) for <b>documentation</b> ()
5883         *
5884     * <p>
5885     * <b>Definition:</b>
5886     * Guidance specific to the implementation of this operation, such as limitations on the kind of transactions allowed, or information about system wide search is implemented
5887     * </p> 
5888         */
5889        public RestInteraction setDocumentation(StringDt theValue) {
5890                myDocumentation = theValue;
5891                return this;
5892        }
5893        
5894        
5895
5896        /**
5897         * Sets the value for <b>documentation</b> ()
5898         *
5899     * <p>
5900     * <b>Definition:</b>
5901     * Guidance specific to the implementation of this operation, such as limitations on the kind of transactions allowed, or information about system wide search is implemented
5902     * </p> 
5903         */
5904        public RestInteraction setDocumentation( String theString) {
5905                myDocumentation = new StringDt(theString); 
5906                return this; 
5907        }
5908
5909 
5910
5911
5912        }
5913
5914
5915        /**
5916         * Block class for child element: <b>Conformance.rest.operation</b> ()
5917         *
5918     * <p>
5919     * <b>Definition:</b>
5920     * Definition of an operation or a named query and with its parameters and their meaning and type
5921     * </p> 
5922         */
5923        @Block()        
5924        public static class RestOperation 
5925            extends  BaseIdentifiableElement  
5926            implements IResourceBlock {
5927        
5928        @Child(name="name", type=StringDt.class, order=0, min=1, max=1, summary=false, modifier=false)  
5929        @Description(
5930                shortDefinition="",
5931                formalDefinition="The name of a query, which is used in the _query parameter when the query is called"
5932        )
5933        private StringDt myName;
5934        
5935        @Child(name="definition", order=1, min=1, max=1, summary=false, modifier=false, type={
5936                ca.uhn.fhir.model.dstu2.resource.OperationDefinition.class
5937        })
5938        @Description(
5939                shortDefinition="",
5940                formalDefinition="Where the formal definition can be found"
5941        )
5942        private ResourceReferenceDt myDefinition;
5943        
5944
5945        @Override
5946        public boolean isEmpty() {
5947                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myDefinition);
5948        }
5949        
5950        @Override
5951        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
5952                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myDefinition);
5953        }
5954
5955        /**
5956         * Gets the value(s) for <b>name</b> ().
5957         * creating it if it does
5958         * not exist. Will not return <code>null</code>.
5959         *
5960     * <p>
5961     * <b>Definition:</b>
5962     * The name of a query, which is used in the _query parameter when the query is called
5963     * </p> 
5964         */
5965        public StringDt getNameElement() {  
5966                if (myName == null) {
5967                        myName = new StringDt();
5968                }
5969                return myName;
5970        }
5971
5972        
5973        /**
5974         * Gets the value(s) for <b>name</b> ().
5975         * creating it if it does
5976         * not exist. This method may return <code>null</code>.
5977         *
5978     * <p>
5979     * <b>Definition:</b>
5980     * The name of a query, which is used in the _query parameter when the query is called
5981     * </p> 
5982         */
5983        public String getName() {  
5984                return getNameElement().getValue();
5985        }
5986
5987        /**
5988         * Sets the value(s) for <b>name</b> ()
5989         *
5990     * <p>
5991     * <b>Definition:</b>
5992     * The name of a query, which is used in the _query parameter when the query is called
5993     * </p> 
5994         */
5995        public RestOperation setName(StringDt theValue) {
5996                myName = theValue;
5997                return this;
5998        }
5999        
6000        
6001
6002        /**
6003         * Sets the value for <b>name</b> ()
6004         *
6005     * <p>
6006     * <b>Definition:</b>
6007     * The name of a query, which is used in the _query parameter when the query is called
6008     * </p> 
6009         */
6010        public RestOperation setName( String theString) {
6011                myName = new StringDt(theString); 
6012                return this; 
6013        }
6014
6015 
6016        /**
6017         * Gets the value(s) for <b>definition</b> ().
6018         * creating it if it does
6019         * not exist. Will not return <code>null</code>.
6020         *
6021     * <p>
6022     * <b>Definition:</b>
6023     * Where the formal definition can be found
6024     * </p> 
6025         */
6026        public ResourceReferenceDt getDefinition() {  
6027                if (myDefinition == null) {
6028                        myDefinition = new ResourceReferenceDt();
6029                }
6030                return myDefinition;
6031        }
6032
6033        /**
6034         * Sets the value(s) for <b>definition</b> ()
6035         *
6036     * <p>
6037     * <b>Definition:</b>
6038     * Where the formal definition can be found
6039     * </p> 
6040         */
6041        public RestOperation setDefinition(ResourceReferenceDt theValue) {
6042                myDefinition = theValue;
6043                return this;
6044        }
6045        
6046        
6047
6048  
6049
6050
6051        }
6052
6053
6054
6055        /**
6056         * Block class for child element: <b>Conformance.messaging</b> ()
6057         *
6058     * <p>
6059     * <b>Definition:</b>
6060     * A description of the messaging capabilities of the solution
6061     * </p> 
6062         */
6063        @Block()        
6064        public static class Messaging 
6065            extends  BaseIdentifiableElement  
6066            implements IResourceBlock {
6067        
6068        @Child(name="endpoint", order=0, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
6069        @Description(
6070                shortDefinition="",
6071                formalDefinition="An endpoint (network accessible address) to which messages and/or replies are to be sent."
6072        )
6073        private java.util.List<MessagingEndpoint> myEndpoint;
6074        
6075        @Child(name="reliableCache", type=UnsignedIntDt.class, order=1, min=0, max=1, summary=false, modifier=false)    
6076        @Description(
6077                shortDefinition="",
6078                formalDefinition="Length if the receiver's reliable messaging cache in minutes (if a receiver) or how long the cache length on the receiver should be (if a sender)"
6079        )
6080        private UnsignedIntDt myReliableCache;
6081        
6082        @Child(name="documentation", type=StringDt.class, order=2, min=0, max=1, summary=false, modifier=false) 
6083        @Description(
6084                shortDefinition="",
6085                formalDefinition="Documentation about the system's messaging capabilities for this endpoint not otherwise documented by the conformance statement.  For example, process for becoming an authorized messaging exchange partner."
6086        )
6087        private StringDt myDocumentation;
6088        
6089        @Child(name="event", order=3, min=1, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
6090        @Description(
6091                shortDefinition="",
6092                formalDefinition="A description of the solution's support for an event at this end-point."
6093        )
6094        private java.util.List<MessagingEvent> myEvent;
6095        
6096
6097        @Override
6098        public boolean isEmpty() {
6099                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myEndpoint,  myReliableCache,  myDocumentation,  myEvent);
6100        }
6101        
6102        @Override
6103        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
6104                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myEndpoint, myReliableCache, myDocumentation, myEvent);
6105        }
6106
6107        /**
6108         * Gets the value(s) for <b>endpoint</b> ().
6109         * creating it if it does
6110         * not exist. Will not return <code>null</code>.
6111         *
6112     * <p>
6113     * <b>Definition:</b>
6114     * An endpoint (network accessible address) to which messages and/or replies are to be sent.
6115     * </p> 
6116         */
6117        public java.util.List<MessagingEndpoint> getEndpoint() {  
6118                if (myEndpoint == null) {
6119                        myEndpoint = new java.util.ArrayList<MessagingEndpoint>();
6120                }
6121                return myEndpoint;
6122        }
6123
6124        /**
6125         * Sets the value(s) for <b>endpoint</b> ()
6126         *
6127     * <p>
6128     * <b>Definition:</b>
6129     * An endpoint (network accessible address) to which messages and/or replies are to be sent.
6130     * </p> 
6131         */
6132        public Messaging setEndpoint(java.util.List<MessagingEndpoint> theValue) {
6133                myEndpoint = theValue;
6134                return this;
6135        }
6136        
6137        
6138
6139        /**
6140         * Adds and returns a new value for <b>endpoint</b> ()
6141         *
6142     * <p>
6143     * <b>Definition:</b>
6144     * An endpoint (network accessible address) to which messages and/or replies are to be sent.
6145     * </p> 
6146         */
6147        public MessagingEndpoint addEndpoint() {
6148                MessagingEndpoint newType = new MessagingEndpoint();
6149                getEndpoint().add(newType);
6150                return newType; 
6151        }
6152
6153        /**
6154         * Adds a given new value for <b>endpoint</b> ()
6155         *
6156         * <p>
6157         * <b>Definition:</b>
6158         * An endpoint (network accessible address) to which messages and/or replies are to be sent.
6159         * </p>
6160         * @param theValue The endpoint to add (must not be <code>null</code>)
6161         */
6162        public Messaging addEndpoint(MessagingEndpoint theValue) {
6163                if (theValue == null) {
6164                        throw new NullPointerException("theValue must not be null");
6165                }
6166                getEndpoint().add(theValue);
6167                return this;
6168        }
6169
6170        /**
6171         * Gets the first repetition for <b>endpoint</b> (),
6172         * creating it if it does not already exist.
6173         *
6174     * <p>
6175     * <b>Definition:</b>
6176     * An endpoint (network accessible address) to which messages and/or replies are to be sent.
6177     * </p> 
6178         */
6179        public MessagingEndpoint getEndpointFirstRep() {
6180                if (getEndpoint().isEmpty()) {
6181                        return addEndpoint();
6182                }
6183                return getEndpoint().get(0); 
6184        }
6185  
6186        /**
6187         * Gets the value(s) for <b>reliableCache</b> ().
6188         * creating it if it does
6189         * not exist. Will not return <code>null</code>.
6190         *
6191     * <p>
6192     * <b>Definition:</b>
6193     * Length if the receiver's reliable messaging cache in minutes (if a receiver) or how long the cache length on the receiver should be (if a sender)
6194     * </p> 
6195         */
6196        public UnsignedIntDt getReliableCacheElement() {  
6197                if (myReliableCache == null) {
6198                        myReliableCache = new UnsignedIntDt();
6199                }
6200                return myReliableCache;
6201        }
6202
6203        
6204        /**
6205         * Gets the value(s) for <b>reliableCache</b> ().
6206         * creating it if it does
6207         * not exist. This method may return <code>null</code>.
6208         *
6209     * <p>
6210     * <b>Definition:</b>
6211     * Length if the receiver's reliable messaging cache in minutes (if a receiver) or how long the cache length on the receiver should be (if a sender)
6212     * </p> 
6213         */
6214        public Integer getReliableCache() {  
6215                return getReliableCacheElement().getValue();
6216        }
6217
6218        /**
6219         * Sets the value(s) for <b>reliableCache</b> ()
6220         *
6221     * <p>
6222     * <b>Definition:</b>
6223     * Length if the receiver's reliable messaging cache in minutes (if a receiver) or how long the cache length on the receiver should be (if a sender)
6224     * </p> 
6225         */
6226        public Messaging setReliableCache(UnsignedIntDt theValue) {
6227                myReliableCache = theValue;
6228                return this;
6229        }
6230        
6231        
6232
6233        /**
6234         * Sets the value for <b>reliableCache</b> ()
6235         *
6236     * <p>
6237     * <b>Definition:</b>
6238     * Length if the receiver's reliable messaging cache in minutes (if a receiver) or how long the cache length on the receiver should be (if a sender)
6239     * </p> 
6240         */
6241        public Messaging setReliableCache( int theInteger) {
6242                myReliableCache = new UnsignedIntDt(theInteger); 
6243                return this; 
6244        }
6245
6246 
6247        /**
6248         * Gets the value(s) for <b>documentation</b> ().
6249         * creating it if it does
6250         * not exist. Will not return <code>null</code>.
6251         *
6252     * <p>
6253     * <b>Definition:</b>
6254     * Documentation about the system's messaging capabilities for this endpoint not otherwise documented by the conformance statement.  For example, process for becoming an authorized messaging exchange partner.
6255     * </p> 
6256         */
6257        public StringDt getDocumentationElement() {  
6258                if (myDocumentation == null) {
6259                        myDocumentation = new StringDt();
6260                }
6261                return myDocumentation;
6262        }
6263
6264        
6265        /**
6266         * Gets the value(s) for <b>documentation</b> ().
6267         * creating it if it does
6268         * not exist. This method may return <code>null</code>.
6269         *
6270     * <p>
6271     * <b>Definition:</b>
6272     * Documentation about the system's messaging capabilities for this endpoint not otherwise documented by the conformance statement.  For example, process for becoming an authorized messaging exchange partner.
6273     * </p> 
6274         */
6275        public String getDocumentation() {  
6276                return getDocumentationElement().getValue();
6277        }
6278
6279        /**
6280         * Sets the value(s) for <b>documentation</b> ()
6281         *
6282     * <p>
6283     * <b>Definition:</b>
6284     * Documentation about the system's messaging capabilities for this endpoint not otherwise documented by the conformance statement.  For example, process for becoming an authorized messaging exchange partner.
6285     * </p> 
6286         */
6287        public Messaging setDocumentation(StringDt theValue) {
6288                myDocumentation = theValue;
6289                return this;
6290        }
6291        
6292        
6293
6294        /**
6295         * Sets the value for <b>documentation</b> ()
6296         *
6297     * <p>
6298     * <b>Definition:</b>
6299     * Documentation about the system's messaging capabilities for this endpoint not otherwise documented by the conformance statement.  For example, process for becoming an authorized messaging exchange partner.
6300     * </p> 
6301         */
6302        public Messaging setDocumentation( String theString) {
6303                myDocumentation = new StringDt(theString); 
6304                return this; 
6305        }
6306
6307 
6308        /**
6309         * Gets the value(s) for <b>event</b> ().
6310         * creating it if it does
6311         * not exist. Will not return <code>null</code>.
6312         *
6313     * <p>
6314     * <b>Definition:</b>
6315     * A description of the solution's support for an event at this end-point.
6316     * </p> 
6317         */
6318        public java.util.List<MessagingEvent> getEvent() {  
6319                if (myEvent == null) {
6320                        myEvent = new java.util.ArrayList<MessagingEvent>();
6321                }
6322                return myEvent;
6323        }
6324
6325        /**
6326         * Sets the value(s) for <b>event</b> ()
6327         *
6328     * <p>
6329     * <b>Definition:</b>
6330     * A description of the solution's support for an event at this end-point.
6331     * </p> 
6332         */
6333        public Messaging setEvent(java.util.List<MessagingEvent> theValue) {
6334                myEvent = theValue;
6335                return this;
6336        }
6337        
6338        
6339
6340        /**
6341         * Adds and returns a new value for <b>event</b> ()
6342         *
6343     * <p>
6344     * <b>Definition:</b>
6345     * A description of the solution's support for an event at this end-point.
6346     * </p> 
6347         */
6348        public MessagingEvent addEvent() {
6349                MessagingEvent newType = new MessagingEvent();
6350                getEvent().add(newType);
6351                return newType; 
6352        }
6353
6354        /**
6355         * Adds a given new value for <b>event</b> ()
6356         *
6357         * <p>
6358         * <b>Definition:</b>
6359         * A description of the solution's support for an event at this end-point.
6360         * </p>
6361         * @param theValue The event to add (must not be <code>null</code>)
6362         */
6363        public Messaging addEvent(MessagingEvent theValue) {
6364                if (theValue == null) {
6365                        throw new NullPointerException("theValue must not be null");
6366                }
6367                getEvent().add(theValue);
6368                return this;
6369        }
6370
6371        /**
6372         * Gets the first repetition for <b>event</b> (),
6373         * creating it if it does not already exist.
6374         *
6375     * <p>
6376     * <b>Definition:</b>
6377     * A description of the solution's support for an event at this end-point.
6378     * </p> 
6379         */
6380        public MessagingEvent getEventFirstRep() {
6381                if (getEvent().isEmpty()) {
6382                        return addEvent();
6383                }
6384                return getEvent().get(0); 
6385        }
6386  
6387
6388
6389        }
6390
6391        /**
6392         * Block class for child element: <b>Conformance.messaging.endpoint</b> ()
6393         *
6394     * <p>
6395     * <b>Definition:</b>
6396     * An endpoint (network accessible address) to which messages and/or replies are to be sent.
6397     * </p> 
6398         */
6399        @Block()        
6400        public static class MessagingEndpoint 
6401            extends  BaseIdentifiableElement  
6402            implements IResourceBlock {
6403        
6404        @Child(name="protocol", type=CodingDt.class, order=0, min=1, max=1, summary=false, modifier=false)      
6405        @Description(
6406                shortDefinition="",
6407                formalDefinition="A list of the messaging transport protocol(s) identifiers, supported by this endpoint"
6408        )
6409        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/message-transport")
6410        private CodingDt myProtocol;
6411        
6412        @Child(name="address", type=UriDt.class, order=1, min=1, max=1, summary=false, modifier=false)  
6413        @Description(
6414                shortDefinition="",
6415                formalDefinition="The network address of the end-point. For solutions that do not use network addresses for routing, it can be just an identifier"
6416        )
6417        private UriDt myAddress;
6418        
6419
6420        @Override
6421        public boolean isEmpty() {
6422                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myProtocol,  myAddress);
6423        }
6424        
6425        @Override
6426        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
6427                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myProtocol, myAddress);
6428        }
6429
6430        /**
6431         * Gets the value(s) for <b>protocol</b> ().
6432         * creating it if it does
6433         * not exist. Will not return <code>null</code>.
6434         *
6435     * <p>
6436     * <b>Definition:</b>
6437     * A list of the messaging transport protocol(s) identifiers, supported by this endpoint
6438     * </p> 
6439         */
6440        public CodingDt getProtocol() {  
6441                if (myProtocol == null) {
6442                        myProtocol = new CodingDt();
6443                }
6444                return myProtocol;
6445        }
6446
6447        /**
6448         * Sets the value(s) for <b>protocol</b> ()
6449         *
6450     * <p>
6451     * <b>Definition:</b>
6452     * A list of the messaging transport protocol(s) identifiers, supported by this endpoint
6453     * </p> 
6454         */
6455        public MessagingEndpoint setProtocol(CodingDt theValue) {
6456                myProtocol = theValue;
6457                return this;
6458        }
6459        
6460        
6461
6462  
6463        /**
6464         * Gets the value(s) for <b>address</b> ().
6465         * creating it if it does
6466         * not exist. Will not return <code>null</code>.
6467         *
6468     * <p>
6469     * <b>Definition:</b>
6470     * The network address of the end-point. For solutions that do not use network addresses for routing, it can be just an identifier
6471     * </p> 
6472         */
6473        public UriDt getAddressElement() {  
6474                if (myAddress == null) {
6475                        myAddress = new UriDt();
6476                }
6477                return myAddress;
6478        }
6479
6480        
6481        /**
6482         * Gets the value(s) for <b>address</b> ().
6483         * creating it if it does
6484         * not exist. This method may return <code>null</code>.
6485         *
6486     * <p>
6487     * <b>Definition:</b>
6488     * The network address of the end-point. For solutions that do not use network addresses for routing, it can be just an identifier
6489     * </p> 
6490         */
6491        public String getAddress() {  
6492                return getAddressElement().getValue();
6493        }
6494
6495        /**
6496         * Sets the value(s) for <b>address</b> ()
6497         *
6498     * <p>
6499     * <b>Definition:</b>
6500     * The network address of the end-point. For solutions that do not use network addresses for routing, it can be just an identifier
6501     * </p> 
6502         */
6503        public MessagingEndpoint setAddress(UriDt theValue) {
6504                myAddress = theValue;
6505                return this;
6506        }
6507        
6508        
6509
6510        /**
6511         * Sets the value for <b>address</b> ()
6512         *
6513     * <p>
6514     * <b>Definition:</b>
6515     * The network address of the end-point. For solutions that do not use network addresses for routing, it can be just an identifier
6516     * </p> 
6517         */
6518        public MessagingEndpoint setAddress( String theUri) {
6519                myAddress = new UriDt(theUri); 
6520                return this; 
6521        }
6522
6523 
6524
6525
6526        }
6527
6528
6529        /**
6530         * Block class for child element: <b>Conformance.messaging.event</b> ()
6531         *
6532     * <p>
6533     * <b>Definition:</b>
6534     * A description of the solution's support for an event at this end-point.
6535     * </p> 
6536         */
6537        @Block()        
6538        public static class MessagingEvent 
6539            extends  BaseIdentifiableElement  
6540            implements IResourceBlock {
6541        
6542        @Child(name="code", type=CodingDt.class, order=0, min=1, max=1, summary=false, modifier=false)  
6543        @Description(
6544                shortDefinition="",
6545                formalDefinition="A coded identifier of a supported messaging event"
6546        )
6547        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/message-events")
6548        private CodingDt myCode;
6549        
6550        @Child(name="category", type=CodeDt.class, order=1, min=0, max=1, summary=false, modifier=false)        
6551        @Description(
6552                shortDefinition="",
6553                formalDefinition="The impact of the content of the message"
6554        )
6555        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/message-significance-category")
6556        private BoundCodeDt<MessageSignificanceCategoryEnum> myCategory;
6557        
6558        @Child(name="mode", type=CodeDt.class, order=2, min=1, max=1, summary=false, modifier=false)    
6559        @Description(
6560                shortDefinition="",
6561                formalDefinition="The mode of this event declaration - whether application is sender or receiver"
6562        )
6563        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/message-conformance-event-mode")
6564        private BoundCodeDt<ConformanceEventModeEnum> myMode;
6565        
6566        @Child(name="focus", type=CodeDt.class, order=3, min=1, max=1, summary=false, modifier=false)   
6567        @Description(
6568                shortDefinition="",
6569                formalDefinition="A resource associated with the event.  This is the resource that defines the event."
6570        )
6571        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/resource-types")
6572        private BoundCodeDt<ResourceTypeEnum> myFocus;
6573        
6574        @Child(name="request", order=4, min=1, max=1, summary=false, modifier=false, type={
6575                ca.uhn.fhir.model.dstu2.resource.StructureDefinition.class
6576        })
6577        @Description(
6578                shortDefinition="",
6579                formalDefinition="Information about the request for this event"
6580        )
6581        private ResourceReferenceDt myRequest;
6582        
6583        @Child(name="response", order=5, min=1, max=1, summary=false, modifier=false, type={
6584                ca.uhn.fhir.model.dstu2.resource.StructureDefinition.class
6585        })
6586        @Description(
6587                shortDefinition="",
6588                formalDefinition="Information about the response for this event"
6589        )
6590        private ResourceReferenceDt myResponse;
6591        
6592        @Child(name="documentation", type=StringDt.class, order=6, min=0, max=1, summary=false, modifier=false) 
6593        @Description(
6594                shortDefinition="",
6595                formalDefinition="Guidance on how this event is handled, such as internal system trigger points, business rules, etc."
6596        )
6597        private StringDt myDocumentation;
6598        
6599
6600        @Override
6601        public boolean isEmpty() {
6602                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myCode,  myCategory,  myMode,  myFocus,  myRequest,  myResponse,  myDocumentation);
6603        }
6604        
6605        @Override
6606        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
6607                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myCode, myCategory, myMode, myFocus, myRequest, myResponse, myDocumentation);
6608        }
6609
6610        /**
6611         * Gets the value(s) for <b>code</b> ().
6612         * creating it if it does
6613         * not exist. Will not return <code>null</code>.
6614         *
6615     * <p>
6616     * <b>Definition:</b>
6617     * A coded identifier of a supported messaging event
6618     * </p> 
6619         */
6620        public CodingDt getCode() {  
6621                if (myCode == null) {
6622                        myCode = new CodingDt();
6623                }
6624                return myCode;
6625        }
6626
6627        /**
6628         * Sets the value(s) for <b>code</b> ()
6629         *
6630     * <p>
6631     * <b>Definition:</b>
6632     * A coded identifier of a supported messaging event
6633     * </p> 
6634         */
6635        public MessagingEvent setCode(CodingDt theValue) {
6636                myCode = theValue;
6637                return this;
6638        }
6639        
6640        
6641
6642  
6643        /**
6644         * Gets the value(s) for <b>category</b> ().
6645         * creating it if it does
6646         * not exist. Will not return <code>null</code>.
6647         *
6648     * <p>
6649     * <b>Definition:</b>
6650     * The impact of the content of the message
6651     * </p> 
6652         */
6653        public BoundCodeDt<MessageSignificanceCategoryEnum> getCategoryElement() {  
6654                if (myCategory == null) {
6655                        myCategory = new BoundCodeDt<MessageSignificanceCategoryEnum>(MessageSignificanceCategoryEnum.VALUESET_BINDER);
6656                }
6657                return myCategory;
6658        }
6659
6660        
6661        /**
6662         * Gets the value(s) for <b>category</b> ().
6663         * creating it if it does
6664         * not exist. This method may return <code>null</code>.
6665         *
6666     * <p>
6667     * <b>Definition:</b>
6668     * The impact of the content of the message
6669     * </p> 
6670         */
6671        public String getCategory() {  
6672                return getCategoryElement().getValue();
6673        }
6674
6675        /**
6676         * Sets the value(s) for <b>category</b> ()
6677         *
6678     * <p>
6679     * <b>Definition:</b>
6680     * The impact of the content of the message
6681     * </p> 
6682         */
6683        public MessagingEvent setCategory(BoundCodeDt<MessageSignificanceCategoryEnum> theValue) {
6684                myCategory = theValue;
6685                return this;
6686        }
6687        
6688        
6689
6690        /**
6691         * Sets the value(s) for <b>category</b> ()
6692         *
6693     * <p>
6694     * <b>Definition:</b>
6695     * The impact of the content of the message
6696     * </p> 
6697         */
6698        public MessagingEvent setCategory(MessageSignificanceCategoryEnum theValue) {
6699                setCategory(new BoundCodeDt<MessageSignificanceCategoryEnum>(MessageSignificanceCategoryEnum.VALUESET_BINDER, theValue));
6700                
6701/*
6702                getCategoryElement().setValueAsEnum(theValue);
6703*/
6704                return this;
6705        }
6706
6707  
6708        /**
6709         * Gets the value(s) for <b>mode</b> ().
6710         * creating it if it does
6711         * not exist. Will not return <code>null</code>.
6712         *
6713     * <p>
6714     * <b>Definition:</b>
6715     * The mode of this event declaration - whether application is sender or receiver
6716     * </p> 
6717         */
6718        public BoundCodeDt<ConformanceEventModeEnum> getModeElement() {  
6719                if (myMode == null) {
6720                        myMode = new BoundCodeDt<ConformanceEventModeEnum>(ConformanceEventModeEnum.VALUESET_BINDER);
6721                }
6722                return myMode;
6723        }
6724
6725        
6726        /**
6727         * Gets the value(s) for <b>mode</b> ().
6728         * creating it if it does
6729         * not exist. This method may return <code>null</code>.
6730         *
6731     * <p>
6732     * <b>Definition:</b>
6733     * The mode of this event declaration - whether application is sender or receiver
6734     * </p> 
6735         */
6736        public String getMode() {  
6737                return getModeElement().getValue();
6738        }
6739
6740        /**
6741         * Sets the value(s) for <b>mode</b> ()
6742         *
6743     * <p>
6744     * <b>Definition:</b>
6745     * The mode of this event declaration - whether application is sender or receiver
6746     * </p> 
6747         */
6748        public MessagingEvent setMode(BoundCodeDt<ConformanceEventModeEnum> theValue) {
6749                myMode = theValue;
6750                return this;
6751        }
6752        
6753        
6754
6755        /**
6756         * Sets the value(s) for <b>mode</b> ()
6757         *
6758     * <p>
6759     * <b>Definition:</b>
6760     * The mode of this event declaration - whether application is sender or receiver
6761     * </p> 
6762         */
6763        public MessagingEvent setMode(ConformanceEventModeEnum theValue) {
6764                setMode(new BoundCodeDt<ConformanceEventModeEnum>(ConformanceEventModeEnum.VALUESET_BINDER, theValue));
6765                
6766/*
6767                getModeElement().setValueAsEnum(theValue);
6768*/
6769                return this;
6770        }
6771
6772  
6773        /**
6774         * Gets the value(s) for <b>focus</b> ().
6775         * creating it if it does
6776         * not exist. Will not return <code>null</code>.
6777         *
6778     * <p>
6779     * <b>Definition:</b>
6780     * A resource associated with the event.  This is the resource that defines the event.
6781     * </p> 
6782         */
6783        public BoundCodeDt<ResourceTypeEnum> getFocusElement() {  
6784                if (myFocus == null) {
6785                        myFocus = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER);
6786                }
6787                return myFocus;
6788        }
6789
6790        
6791        /**
6792         * Gets the value(s) for <b>focus</b> ().
6793         * creating it if it does
6794         * not exist. This method may return <code>null</code>.
6795         *
6796     * <p>
6797     * <b>Definition:</b>
6798     * A resource associated with the event.  This is the resource that defines the event.
6799     * </p> 
6800         */
6801        public String getFocus() {  
6802                return getFocusElement().getValue();
6803        }
6804
6805        /**
6806         * Sets the value(s) for <b>focus</b> ()
6807         *
6808     * <p>
6809     * <b>Definition:</b>
6810     * A resource associated with the event.  This is the resource that defines the event.
6811     * </p> 
6812         */
6813        public MessagingEvent setFocus(BoundCodeDt<ResourceTypeEnum> theValue) {
6814                myFocus = theValue;
6815                return this;
6816        }
6817        
6818        
6819
6820        /**
6821         * Sets the value(s) for <b>focus</b> ()
6822         *
6823     * <p>
6824     * <b>Definition:</b>
6825     * A resource associated with the event.  This is the resource that defines the event.
6826     * </p> 
6827         */
6828        public MessagingEvent setFocus(ResourceTypeEnum theValue) {
6829                setFocus(new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER, theValue));
6830                
6831/*
6832                getFocusElement().setValueAsEnum(theValue);
6833*/
6834                return this;
6835        }
6836
6837  
6838        /**
6839         * Gets the value(s) for <b>request</b> ().
6840         * creating it if it does
6841         * not exist. Will not return <code>null</code>.
6842         *
6843     * <p>
6844     * <b>Definition:</b>
6845     * Information about the request for this event
6846     * </p> 
6847         */
6848        public ResourceReferenceDt getRequest() {  
6849                if (myRequest == null) {
6850                        myRequest = new ResourceReferenceDt();
6851                }
6852                return myRequest;
6853        }
6854
6855        /**
6856         * Sets the value(s) for <b>request</b> ()
6857         *
6858     * <p>
6859     * <b>Definition:</b>
6860     * Information about the request for this event
6861     * </p> 
6862         */
6863        public MessagingEvent setRequest(ResourceReferenceDt theValue) {
6864                myRequest = theValue;
6865                return this;
6866        }
6867        
6868        
6869
6870  
6871        /**
6872         * Gets the value(s) for <b>response</b> ().
6873         * creating it if it does
6874         * not exist. Will not return <code>null</code>.
6875         *
6876     * <p>
6877     * <b>Definition:</b>
6878     * Information about the response for this event
6879     * </p> 
6880         */
6881        public ResourceReferenceDt getResponse() {  
6882                if (myResponse == null) {
6883                        myResponse = new ResourceReferenceDt();
6884                }
6885                return myResponse;
6886        }
6887
6888        /**
6889         * Sets the value(s) for <b>response</b> ()
6890         *
6891     * <p>
6892     * <b>Definition:</b>
6893     * Information about the response for this event
6894     * </p> 
6895         */
6896        public MessagingEvent setResponse(ResourceReferenceDt theValue) {
6897                myResponse = theValue;
6898                return this;
6899        }
6900        
6901        
6902
6903  
6904        /**
6905         * Gets the value(s) for <b>documentation</b> ().
6906         * creating it if it does
6907         * not exist. Will not return <code>null</code>.
6908         *
6909     * <p>
6910     * <b>Definition:</b>
6911     * Guidance on how this event is handled, such as internal system trigger points, business rules, etc.
6912     * </p> 
6913         */
6914        public StringDt getDocumentationElement() {  
6915                if (myDocumentation == null) {
6916                        myDocumentation = new StringDt();
6917                }
6918                return myDocumentation;
6919        }
6920
6921        
6922        /**
6923         * Gets the value(s) for <b>documentation</b> ().
6924         * creating it if it does
6925         * not exist. This method may return <code>null</code>.
6926         *
6927     * <p>
6928     * <b>Definition:</b>
6929     * Guidance on how this event is handled, such as internal system trigger points, business rules, etc.
6930     * </p> 
6931         */
6932        public String getDocumentation() {  
6933                return getDocumentationElement().getValue();
6934        }
6935
6936        /**
6937         * Sets the value(s) for <b>documentation</b> ()
6938         *
6939     * <p>
6940     * <b>Definition:</b>
6941     * Guidance on how this event is handled, such as internal system trigger points, business rules, etc.
6942     * </p> 
6943         */
6944        public MessagingEvent setDocumentation(StringDt theValue) {
6945                myDocumentation = theValue;
6946                return this;
6947        }
6948        
6949        
6950
6951        /**
6952         * Sets the value for <b>documentation</b> ()
6953         *
6954     * <p>
6955     * <b>Definition:</b>
6956     * Guidance on how this event is handled, such as internal system trigger points, business rules, etc.
6957     * </p> 
6958         */
6959        public MessagingEvent setDocumentation( String theString) {
6960                myDocumentation = new StringDt(theString); 
6961                return this; 
6962        }
6963
6964 
6965
6966
6967        }
6968
6969
6970
6971        /**
6972         * Block class for child element: <b>Conformance.document</b> ()
6973         *
6974     * <p>
6975     * <b>Definition:</b>
6976     * A document definition
6977     * </p> 
6978         */
6979        @Block()        
6980        public static class Document 
6981            extends  BaseIdentifiableElement  
6982            implements IResourceBlock {
6983        
6984        @Child(name="mode", type=CodeDt.class, order=0, min=1, max=1, summary=false, modifier=false)    
6985        @Description(
6986                shortDefinition="",
6987                formalDefinition="Mode of this document declaration - whether application is producer or consumer"
6988        )
6989        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/document-mode")
6990        private BoundCodeDt<DocumentModeEnum> myMode;
6991        
6992        @Child(name="documentation", type=StringDt.class, order=1, min=0, max=1, summary=false, modifier=false) 
6993        @Description(
6994                shortDefinition="",
6995                formalDefinition="A description of how the application supports or uses the specified document profile.  For example, when are documents created, what action is taken with consumed documents, etc."
6996        )
6997        private StringDt myDocumentation;
6998        
6999        @Child(name="profile", order=2, min=1, max=1, summary=false, modifier=false, type={
7000                ca.uhn.fhir.model.dstu2.resource.StructureDefinition.class
7001        })
7002        @Description(
7003                shortDefinition="",
7004                formalDefinition="A constraint on a resource used in the document"
7005        )
7006        private ResourceReferenceDt myProfile;
7007        
7008
7009        @Override
7010        public boolean isEmpty() {
7011                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myMode,  myDocumentation,  myProfile);
7012        }
7013        
7014        @Override
7015        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
7016                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myMode, myDocumentation, myProfile);
7017        }
7018
7019        /**
7020         * Gets the value(s) for <b>mode</b> ().
7021         * creating it if it does
7022         * not exist. Will not return <code>null</code>.
7023         *
7024     * <p>
7025     * <b>Definition:</b>
7026     * Mode of this document declaration - whether application is producer or consumer
7027     * </p> 
7028         */
7029        public BoundCodeDt<DocumentModeEnum> getModeElement() {  
7030                if (myMode == null) {
7031                        myMode = new BoundCodeDt<DocumentModeEnum>(DocumentModeEnum.VALUESET_BINDER);
7032                }
7033                return myMode;
7034        }
7035
7036        
7037        /**
7038         * Gets the value(s) for <b>mode</b> ().
7039         * creating it if it does
7040         * not exist. This method may return <code>null</code>.
7041         *
7042     * <p>
7043     * <b>Definition:</b>
7044     * Mode of this document declaration - whether application is producer or consumer
7045     * </p> 
7046         */
7047        public String getMode() {  
7048                return getModeElement().getValue();
7049        }
7050
7051        /**
7052         * Sets the value(s) for <b>mode</b> ()
7053         *
7054     * <p>
7055     * <b>Definition:</b>
7056     * Mode of this document declaration - whether application is producer or consumer
7057     * </p> 
7058         */
7059        public Document setMode(BoundCodeDt<DocumentModeEnum> theValue) {
7060                myMode = theValue;
7061                return this;
7062        }
7063        
7064        
7065
7066        /**
7067         * Sets the value(s) for <b>mode</b> ()
7068         *
7069     * <p>
7070     * <b>Definition:</b>
7071     * Mode of this document declaration - whether application is producer or consumer
7072     * </p> 
7073         */
7074        public Document setMode(DocumentModeEnum theValue) {
7075                setMode(new BoundCodeDt<DocumentModeEnum>(DocumentModeEnum.VALUESET_BINDER, theValue));
7076                
7077/*
7078                getModeElement().setValueAsEnum(theValue);
7079*/
7080                return this;
7081        }
7082
7083  
7084        /**
7085         * Gets the value(s) for <b>documentation</b> ().
7086         * creating it if it does
7087         * not exist. Will not return <code>null</code>.
7088         *
7089     * <p>
7090     * <b>Definition:</b>
7091     * A description of how the application supports or uses the specified document profile.  For example, when are documents created, what action is taken with consumed documents, etc.
7092     * </p> 
7093         */
7094        public StringDt getDocumentationElement() {  
7095                if (myDocumentation == null) {
7096                        myDocumentation = new StringDt();
7097                }
7098                return myDocumentation;
7099        }
7100
7101        
7102        /**
7103         * Gets the value(s) for <b>documentation</b> ().
7104         * creating it if it does
7105         * not exist. This method may return <code>null</code>.
7106         *
7107     * <p>
7108     * <b>Definition:</b>
7109     * A description of how the application supports or uses the specified document profile.  For example, when are documents created, what action is taken with consumed documents, etc.
7110     * </p> 
7111         */
7112        public String getDocumentation() {  
7113                return getDocumentationElement().getValue();
7114        }
7115
7116        /**
7117         * Sets the value(s) for <b>documentation</b> ()
7118         *
7119     * <p>
7120     * <b>Definition:</b>
7121     * A description of how the application supports or uses the specified document profile.  For example, when are documents created, what action is taken with consumed documents, etc.
7122     * </p> 
7123         */
7124        public Document setDocumentation(StringDt theValue) {
7125                myDocumentation = theValue;
7126                return this;
7127        }
7128        
7129        
7130
7131        /**
7132         * Sets the value for <b>documentation</b> ()
7133         *
7134     * <p>
7135     * <b>Definition:</b>
7136     * A description of how the application supports or uses the specified document profile.  For example, when are documents created, what action is taken with consumed documents, etc.
7137     * </p> 
7138         */
7139        public Document setDocumentation( String theString) {
7140                myDocumentation = new StringDt(theString); 
7141                return this; 
7142        }
7143
7144 
7145        /**
7146         * Gets the value(s) for <b>profile</b> ().
7147         * creating it if it does
7148         * not exist. Will not return <code>null</code>.
7149         *
7150     * <p>
7151     * <b>Definition:</b>
7152     * A constraint on a resource used in the document
7153     * </p> 
7154         */
7155        public ResourceReferenceDt getProfile() {  
7156                if (myProfile == null) {
7157                        myProfile = new ResourceReferenceDt();
7158                }
7159                return myProfile;
7160        }
7161
7162        /**
7163         * Sets the value(s) for <b>profile</b> ()
7164         *
7165     * <p>
7166     * <b>Definition:</b>
7167     * A constraint on a resource used in the document
7168     * </p> 
7169         */
7170        public Document setProfile(ResourceReferenceDt theValue) {
7171                myProfile = theValue;
7172                return this;
7173        }
7174        
7175        
7176
7177  
7178
7179
7180        }
7181
7182
7183
7184
7185    @Override
7186    public String getResourceName() {
7187        return "Conformance";
7188    }
7189    
7190    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
7191        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
7192    }
7193
7194
7195}