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