001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017package ca.uhn.fhir.model.dstu2.resource;
018
019import java.math.BigDecimal;
020import java.net.URI;
021import java.util.*;
022import ca.uhn.fhir.model.api.*;
023import ca.uhn.fhir.model.api.annotation.*;
024import ca.uhn.fhir.rest.gclient.*;
025
026import ca.uhn.fhir.model.dstu2.valueset.AccountStatusEnum;
027import ca.uhn.fhir.model.dstu2.valueset.ActionListEnum;
028import ca.uhn.fhir.model.dstu2.composite.AddressDt;
029import ca.uhn.fhir.model.dstu2.valueset.AdjudicationCodesEnum;
030import ca.uhn.fhir.model.dstu2.valueset.AdjudicationErrorCodesEnum;
031import ca.uhn.fhir.model.dstu2.valueset.AdjustmentReasonCodesEnum;
032import ca.uhn.fhir.model.dstu2.valueset.AdministrativeGenderEnum;
033import ca.uhn.fhir.model.dstu2.valueset.AdmitSourceEnum;
034import ca.uhn.fhir.model.dstu2.resource.AllergyIntolerance;
035import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCategoryEnum;
036import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCertaintyEnum;
037import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceCriticalityEnum;
038import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceSeverityEnum;
039import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceStatusEnum;
040import ca.uhn.fhir.model.dstu2.valueset.AllergyIntoleranceTypeEnum;
041import ca.uhn.fhir.model.dstu2.valueset.AnimalSpeciesEnum;
042import ca.uhn.fhir.model.dstu2.composite.AnnotationDt;
043import ca.uhn.fhir.model.dstu2.valueset.AnswerFormatEnum;
044import ca.uhn.fhir.model.dstu2.resource.Appointment;
045import ca.uhn.fhir.model.dstu2.valueset.AppointmentStatusEnum;
046import ca.uhn.fhir.model.dstu2.valueset.AssertionDirectionTypeEnum;
047import ca.uhn.fhir.model.dstu2.valueset.AssertionOperatorTypeEnum;
048import ca.uhn.fhir.model.dstu2.valueset.AssertionResponseTypesEnum;
049import ca.uhn.fhir.model.dstu2.composite.AttachmentDt;
050import ca.uhn.fhir.model.dstu2.valueset.AuditEventActionEnum;
051import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectLifecycleEnum;
052import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectRoleEnum;
053import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectTypeEnum;
054import ca.uhn.fhir.model.dstu2.valueset.AuditEventOutcomeEnum;
055import ca.uhn.fhir.model.dstu2.valueset.AuditEventParticipantNetworkTypeEnum;
056import ca.uhn.fhir.model.dstu2.valueset.AuditEventSourceTypeEnum;
057import ca.uhn.fhir.model.dstu2.valueset.BindingStrengthEnum;
058import ca.uhn.fhir.model.dstu2.resource.BodySite;
059import ca.uhn.fhir.model.dstu2.valueset.BundleTypeEnum;
060import ca.uhn.fhir.model.dstu2.resource.CarePlan;
061import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityCategoryEnum;
062import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityStatusEnum;
063import ca.uhn.fhir.model.dstu2.valueset.CarePlanRelationshipEnum;
064import ca.uhn.fhir.model.dstu2.valueset.CarePlanStatusEnum;
065import ca.uhn.fhir.model.dstu2.resource.Claim;
066import ca.uhn.fhir.model.dstu2.resource.ClaimResponse;
067import ca.uhn.fhir.model.dstu2.valueset.ClaimTypeEnum;
068import ca.uhn.fhir.model.dstu2.resource.ClinicalImpression;
069import ca.uhn.fhir.model.dstu2.valueset.ClinicalImpressionStatusEnum;
070import ca.uhn.fhir.model.dstu2.composite.CodeableConceptDt;
071import ca.uhn.fhir.model.dstu2.composite.CodingDt;
072import ca.uhn.fhir.model.dstu2.resource.CommunicationRequest;
073import ca.uhn.fhir.model.dstu2.valueset.CommunicationRequestStatusEnum;
074import ca.uhn.fhir.model.dstu2.valueset.CommunicationStatusEnum;
075import ca.uhn.fhir.model.dstu2.resource.Composition;
076import ca.uhn.fhir.model.dstu2.valueset.CompositionAttestationModeEnum;
077import ca.uhn.fhir.model.dstu2.valueset.CompositionStatusEnum;
078import ca.uhn.fhir.model.dstu2.valueset.ConceptMapEquivalenceEnum;
079import ca.uhn.fhir.model.dstu2.resource.Condition;
080import ca.uhn.fhir.model.dstu2.valueset.ConditionCategoryCodesEnum;
081import ca.uhn.fhir.model.dstu2.valueset.ConditionClinicalStatusCodesEnum;
082import ca.uhn.fhir.model.dstu2.valueset.ConditionVerificationStatusEnum;
083import ca.uhn.fhir.model.dstu2.valueset.ConditionalDeleteStatusEnum;
084import ca.uhn.fhir.model.dstu2.valueset.ConditionsCodesEnum;
085import ca.uhn.fhir.model.dstu2.resource.Conformance;
086import ca.uhn.fhir.model.dstu2.valueset.ConformanceEventModeEnum;
087import ca.uhn.fhir.model.dstu2.valueset.ConformanceResourceStatusEnum;
088import ca.uhn.fhir.model.dstu2.valueset.ConformanceStatementKindEnum;
089import ca.uhn.fhir.model.dstu2.composite.ContactPointDt;
090import ca.uhn.fhir.model.dstu2.valueset.ContentTypeEnum;
091import ca.uhn.fhir.model.dstu2.resource.Contract;
092import ca.uhn.fhir.model.dstu2.valueset.ContractActionCodesEnum;
093import ca.uhn.fhir.model.dstu2.valueset.ContractActorRoleCodesEnum;
094import ca.uhn.fhir.model.dstu2.valueset.ContractSubtypeCodesEnum;
095import ca.uhn.fhir.model.dstu2.valueset.ContractTermTypeCodesEnum;
096import ca.uhn.fhir.model.dstu2.valueset.ContractTypeCodesEnum;
097import ca.uhn.fhir.model.dstu2.resource.Coverage;
098import ca.uhn.fhir.model.dstu2.valueset.DataElementStringencyEnum;
099import ca.uhn.fhir.model.dstu2.valueset.DaysOfWeekEnum;
100import ca.uhn.fhir.model.dstu2.valueset.DetectedIssueSeverityEnum;
101import ca.uhn.fhir.model.dstu2.resource.Device;
102import ca.uhn.fhir.model.dstu2.resource.DeviceComponent;
103import ca.uhn.fhir.model.dstu2.resource.DeviceMetric;
104import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationStateEnum;
105import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationTypeEnum;
106import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCategoryEnum;
107import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricColorEnum;
108import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricOperationalStatusEnum;
109import ca.uhn.fhir.model.dstu2.valueset.DeviceStatusEnum;
110import ca.uhn.fhir.model.dstu2.resource.DeviceUseRequest;
111import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestPriorityEnum;
112import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestStatusEnum;
113import ca.uhn.fhir.model.dstu2.resource.DiagnosticOrder;
114import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderPriorityEnum;
115import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderStatusEnum;
116import ca.uhn.fhir.model.dstu2.resource.DiagnosticReport;
117import ca.uhn.fhir.model.dstu2.valueset.DiagnosticReportStatusEnum;
118import ca.uhn.fhir.model.dstu2.valueset.DigitalMediaTypeEnum;
119import ca.uhn.fhir.model.dstu2.valueset.DocumentModeEnum;
120import ca.uhn.fhir.model.dstu2.resource.DocumentReference;
121import ca.uhn.fhir.model.dstu2.valueset.DocumentReferenceStatusEnum;
122import ca.uhn.fhir.model.dstu2.valueset.DocumentRelationshipTypeEnum;
123import ca.uhn.fhir.model.dstu2.composite.ElementDefinitionDt;
124import ca.uhn.fhir.model.dstu2.resource.EligibilityRequest;
125import ca.uhn.fhir.model.dstu2.resource.Encounter;
126import ca.uhn.fhir.model.dstu2.valueset.EncounterClassEnum;
127import ca.uhn.fhir.model.dstu2.valueset.EncounterLocationStatusEnum;
128import ca.uhn.fhir.model.dstu2.valueset.EncounterStateEnum;
129import ca.uhn.fhir.model.dstu2.valueset.EncounterTypeEnum;
130import ca.uhn.fhir.model.dstu2.resource.EnrollmentRequest;
131import ca.uhn.fhir.model.dstu2.valueset.EnteralFormulaTypeCodesEnum;
132import ca.uhn.fhir.model.dstu2.resource.EpisodeOfCare;
133import ca.uhn.fhir.model.dstu2.valueset.EpisodeOfCareStatusEnum;
134import ca.uhn.fhir.model.dstu2.valueset.ExceptionCodesEnum;
135import ca.uhn.fhir.model.dstu2.valueset.ExtensionContextEnum;
136import ca.uhn.fhir.model.dstu2.valueset.FamilyHistoryStatusEnum;
137import ca.uhn.fhir.model.dstu2.resource.FamilyMemberHistory;
138import ca.uhn.fhir.model.dstu2.valueset.FilterOperatorEnum;
139import ca.uhn.fhir.model.dstu2.valueset.FlagCategoryCodesEnum;
140import ca.uhn.fhir.model.dstu2.valueset.FlagStatusEnum;
141import ca.uhn.fhir.model.dstu2.valueset.FluidConsistencyTypeCodesEnum;
142import ca.uhn.fhir.model.dstu2.resource.Goal;
143import ca.uhn.fhir.model.dstu2.valueset.GoalCategoryEnum;
144import ca.uhn.fhir.model.dstu2.valueset.GoalPriorityEnum;
145import ca.uhn.fhir.model.dstu2.valueset.GoalStartEventEnum;
146import ca.uhn.fhir.model.dstu2.valueset.GoalStatusEnum;
147import ca.uhn.fhir.model.dstu2.valueset.GoalStatusReasonEnum;
148import ca.uhn.fhir.model.dstu2.resource.Group;
149import ca.uhn.fhir.model.dstu2.valueset.GroupTypeEnum;
150import ca.uhn.fhir.model.dstu2.valueset.GuideDependencyTypeEnum;
151import ca.uhn.fhir.model.dstu2.valueset.GuidePageKindEnum;
152import ca.uhn.fhir.model.dstu2.valueset.GuideResourcePurposeEnum;
153import ca.uhn.fhir.model.dstu2.valueset.HTTPVerbEnum;
154import ca.uhn.fhir.model.dstu2.resource.HealthcareService;
155import ca.uhn.fhir.model.dstu2.composite.HumanNameDt;
156import ca.uhn.fhir.model.dstu2.composite.IdentifierDt;
157import ca.uhn.fhir.model.dstu2.valueset.IdentifierTypeCodesEnum;
158import ca.uhn.fhir.model.dstu2.valueset.IdentityAssuranceLevelEnum;
159import ca.uhn.fhir.model.dstu2.resource.ImagingObjectSelection;
160import ca.uhn.fhir.model.dstu2.resource.ImagingStudy;
161import ca.uhn.fhir.model.dstu2.resource.Immunization;
162import ca.uhn.fhir.model.dstu2.valueset.ImmunizationReasonCodesEnum;
163import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRecommendationDateCriterionCodesEnum;
164import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRecommendationStatusCodesEnum;
165import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRouteCodesEnum;
166import ca.uhn.fhir.model.dstu2.valueset.InstanceAvailabilityEnum;
167import ca.uhn.fhir.model.dstu2.valueset.InterventionCodesEnum;
168import ca.uhn.fhir.model.dstu2.valueset.IssueSeverityEnum;
169import ca.uhn.fhir.model.dstu2.valueset.IssueTypeEnum;
170import ca.uhn.fhir.model.dstu2.valueset.KOStitleEnum;
171import ca.uhn.fhir.model.dstu2.valueset.LateralityEnum;
172import ca.uhn.fhir.model.dstu2.valueset.LinkTypeEnum;
173import ca.uhn.fhir.model.dstu2.valueset.ListModeEnum;
174import ca.uhn.fhir.model.dstu2.valueset.ListOrderCodesEnum;
175import ca.uhn.fhir.model.dstu2.valueset.ListStatusEnum;
176import ca.uhn.fhir.model.dstu2.resource.Location;
177import ca.uhn.fhir.model.dstu2.valueset.LocationModeEnum;
178import ca.uhn.fhir.model.dstu2.valueset.LocationStatusEnum;
179import ca.uhn.fhir.model.dstu2.valueset.LocationTypeEnum;
180import ca.uhn.fhir.model.dstu2.valueset.MaritalStatusCodesEnum;
181import ca.uhn.fhir.model.dstu2.valueset.MeasmntPrincipleEnum;
182import ca.uhn.fhir.model.dstu2.resource.Media;
183import ca.uhn.fhir.model.dstu2.resource.Medication;
184import ca.uhn.fhir.model.dstu2.valueset.MedicationAdministrationStatusEnum;
185import ca.uhn.fhir.model.dstu2.valueset.MedicationDispenseStatusEnum;
186import ca.uhn.fhir.model.dstu2.resource.MedicationOrder;
187import ca.uhn.fhir.model.dstu2.valueset.MedicationOrderStatusEnum;
188import ca.uhn.fhir.model.dstu2.resource.MedicationStatement;
189import ca.uhn.fhir.model.dstu2.valueset.MedicationStatementStatusEnum;
190import ca.uhn.fhir.model.dstu2.valueset.MessageEventEnum;
191import ca.uhn.fhir.model.dstu2.valueset.MessageSignificanceCategoryEnum;
192import ca.uhn.fhir.model.dstu2.valueset.MessageTransportEnum;
193import ca.uhn.fhir.model.dstu2.resource.NamingSystem;
194import ca.uhn.fhir.model.dstu2.valueset.NamingSystemIdentifierTypeEnum;
195import ca.uhn.fhir.model.dstu2.valueset.NamingSystemTypeEnum;
196import ca.uhn.fhir.model.dstu2.valueset.NoteTypeEnum;
197import ca.uhn.fhir.model.dstu2.valueset.NutrientModifierCodesEnum;
198import ca.uhn.fhir.model.dstu2.resource.NutritionOrder;
199import ca.uhn.fhir.model.dstu2.valueset.NutritionOrderStatusEnum;
200import ca.uhn.fhir.model.dstu2.resource.Observation;
201import ca.uhn.fhir.model.dstu2.valueset.ObservationCategoryCodesEnum;
202import ca.uhn.fhir.model.dstu2.valueset.ObservationRelationshipTypeEnum;
203import ca.uhn.fhir.model.dstu2.valueset.ObservationStatusEnum;
204import ca.uhn.fhir.model.dstu2.resource.OperationDefinition;
205import ca.uhn.fhir.model.dstu2.valueset.OperationKindEnum;
206import ca.uhn.fhir.model.dstu2.resource.OperationOutcome;
207import ca.uhn.fhir.model.dstu2.valueset.OperationParameterUseEnum;
208import ca.uhn.fhir.model.dstu2.resource.Order;
209import ca.uhn.fhir.model.dstu2.valueset.OrderStatusEnum;
210import ca.uhn.fhir.model.dstu2.resource.Organization;
211import ca.uhn.fhir.model.dstu2.valueset.OrganizationTypeEnum;
212import ca.uhn.fhir.model.dstu2.valueset.ParticipantRequiredEnum;
213import ca.uhn.fhir.model.dstu2.valueset.ParticipantStatusEnum;
214import ca.uhn.fhir.model.dstu2.valueset.ParticipantTypeEnum;
215import ca.uhn.fhir.model.dstu2.valueset.ParticipationStatusEnum;
216import ca.uhn.fhir.model.dstu2.resource.Patient;
217import ca.uhn.fhir.model.dstu2.valueset.PayeeTypeCodesEnum;
218import ca.uhn.fhir.model.dstu2.valueset.PaymentStatusCodesEnum;
219import ca.uhn.fhir.model.dstu2.valueset.PaymentTypeCodesEnum;
220import ca.uhn.fhir.model.dstu2.composite.PeriodDt;
221import ca.uhn.fhir.model.dstu2.resource.Person;
222import ca.uhn.fhir.model.dstu2.resource.Practitioner;
223import ca.uhn.fhir.model.dstu2.valueset.PractitionerRoleEnum;
224import ca.uhn.fhir.model.dstu2.valueset.PractitionerSpecialtyEnum;
225import ca.uhn.fhir.model.dstu2.valueset.PriorityCodesEnum;
226import ca.uhn.fhir.model.dstu2.resource.Procedure;
227import ca.uhn.fhir.model.dstu2.resource.ProcedureRequest;
228import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestPriorityEnum;
229import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestStatusEnum;
230import ca.uhn.fhir.model.dstu2.valueset.ProcedureStatusEnum;
231import ca.uhn.fhir.model.dstu2.resource.ProcessRequest;
232import ca.uhn.fhir.model.dstu2.valueset.ProvenanceEntityRoleEnum;
233import ca.uhn.fhir.model.dstu2.composite.QuantityDt;
234import ca.uhn.fhir.model.dstu2.resource.Questionnaire;
235import ca.uhn.fhir.model.dstu2.resource.QuestionnaireResponse;
236import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireResponseStatusEnum;
237import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireStatusEnum;
238import ca.uhn.fhir.model.dstu2.composite.RangeDt;
239import ca.uhn.fhir.model.dstu2.composite.RatioDt;
240import ca.uhn.fhir.model.dstu2.valueset.ReferralMethodEnum;
241import ca.uhn.fhir.model.dstu2.resource.ReferralRequest;
242import ca.uhn.fhir.model.dstu2.valueset.ReferralStatusEnum;
243import ca.uhn.fhir.model.dstu2.resource.RelatedPerson;
244import ca.uhn.fhir.model.dstu2.valueset.RemittanceOutcomeEnum;
245import ca.uhn.fhir.model.dstu2.valueset.ResourceTypeEnum;
246import ca.uhn.fhir.model.dstu2.valueset.ResourceVersionPolicyEnum;
247import ca.uhn.fhir.model.dstu2.valueset.ResponseTypeEnum;
248import ca.uhn.fhir.model.dstu2.valueset.RestfulConformanceModeEnum;
249import ca.uhn.fhir.model.dstu2.valueset.RestfulSecurityServiceEnum;
250import ca.uhn.fhir.model.dstu2.resource.RiskAssessment;
251import ca.uhn.fhir.model.dstu2.valueset.RulesetCodesEnum;
252import ca.uhn.fhir.model.dstu2.composite.SampledDataDt;
253import ca.uhn.fhir.model.dstu2.resource.Schedule;
254import ca.uhn.fhir.model.dstu2.valueset.SearchEntryModeEnum;
255import ca.uhn.fhir.model.dstu2.valueset.SearchModifierCodeEnum;
256import ca.uhn.fhir.model.dstu2.valueset.SearchParamTypeEnum;
257import ca.uhn.fhir.model.dstu2.valueset.ServiceProvisionConditionsEnum;
258import ca.uhn.fhir.model.dstu2.composite.SignatureDt;
259import ca.uhn.fhir.model.dstu2.resource.Slot;
260import ca.uhn.fhir.model.dstu2.valueset.SlotStatusEnum;
261import ca.uhn.fhir.model.dstu2.resource.Specimen;
262import ca.uhn.fhir.model.dstu2.valueset.SpecimenCollectionMethodEnum;
263import ca.uhn.fhir.model.dstu2.valueset.SpecimenStatusEnum;
264import ca.uhn.fhir.model.dstu2.resource.StructureDefinition;
265import ca.uhn.fhir.model.dstu2.valueset.StructureDefinitionKindEnum;
266import ca.uhn.fhir.model.dstu2.valueset.SubscriptionChannelTypeEnum;
267import ca.uhn.fhir.model.dstu2.valueset.SubscriptionStatusEnum;
268import ca.uhn.fhir.model.dstu2.valueset.SubscriptionTagEnum;
269import ca.uhn.fhir.model.dstu2.resource.Substance;
270import ca.uhn.fhir.model.dstu2.valueset.SubstanceCategoryCodesEnum;
271import ca.uhn.fhir.model.dstu2.valueset.SupplementTypeCodesEnum;
272import ca.uhn.fhir.model.dstu2.valueset.SupplyDeliveryStatusEnum;
273import ca.uhn.fhir.model.dstu2.resource.SupplyRequest;
274import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestReasonEnum;
275import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestStatusEnum;
276import ca.uhn.fhir.model.dstu2.valueset.SurfaceCodesEnum;
277import ca.uhn.fhir.model.dstu2.valueset.SystemRestfulInteractionEnum;
278import ca.uhn.fhir.model.api.TemporalPrecisionEnum;
279import ca.uhn.fhir.model.dstu2.valueset.TextureModifiedFoodTypeCodesEnum;
280import ca.uhn.fhir.model.dstu2.valueset.TextureModifierCodesEnum;
281import ca.uhn.fhir.model.dstu2.composite.TimingDt;
282import ca.uhn.fhir.model.dstu2.valueset.TransactionModeEnum;
283import ca.uhn.fhir.model.dstu2.valueset.TypeRestfulInteractionEnum;
284import ca.uhn.fhir.model.dstu2.valueset.UDICodesEnum;
285import ca.uhn.fhir.model.dstu2.valueset.UnknownContentCodeEnum;
286import ca.uhn.fhir.model.dstu2.valueset.UseEnum;
287import ca.uhn.fhir.model.dstu2.resource.ValueSet;
288import ca.uhn.fhir.model.dstu2.valueset.VisionBaseEnum;
289import ca.uhn.fhir.model.dstu2.valueset.VisionEyesEnum;
290import ca.uhn.fhir.model.dstu2.resource.VisionPrescription;
291import ca.uhn.fhir.model.dstu2.valueset.XPathUsageTypeEnum;
292import ca.uhn.fhir.model.api.IResource;
293import ca.uhn.fhir.model.dstu2.composite.AgeDt;
294import ca.uhn.fhir.model.dstu2.composite.BoundCodeableConceptDt;
295import ca.uhn.fhir.model.dstu2.composite.DurationDt;
296import ca.uhn.fhir.model.dstu2.composite.MoneyDt;
297import ca.uhn.fhir.model.dstu2.composite.NarrativeDt;
298import ca.uhn.fhir.model.dstu2.composite.ResourceReferenceDt;
299import ca.uhn.fhir.model.dstu2.composite.SimpleQuantityDt;
300import ca.uhn.fhir.model.primitive.Base64BinaryDt;
301import ca.uhn.fhir.model.primitive.BooleanDt;
302import ca.uhn.fhir.model.primitive.BoundCodeDt;
303import ca.uhn.fhir.model.primitive.CodeDt;
304import ca.uhn.fhir.model.primitive.DateDt;
305import ca.uhn.fhir.model.primitive.DateTimeDt;
306import ca.uhn.fhir.model.primitive.DecimalDt;
307import ca.uhn.fhir.model.primitive.IdDt;
308import ca.uhn.fhir.model.primitive.InstantDt;
309import ca.uhn.fhir.model.primitive.IntegerDt;
310import ca.uhn.fhir.model.primitive.OidDt;
311import ca.uhn.fhir.model.primitive.PositiveIntDt;
312import ca.uhn.fhir.model.primitive.StringDt;
313import ca.uhn.fhir.model.primitive.TimeDt;
314import ca.uhn.fhir.model.primitive.UnsignedIntDt;
315import ca.uhn.fhir.model.primitive.UriDt;
316
317
318/**
319 * HAPI/FHIR <b>OperationDefinition</b> Resource
320 * (conformance.behavior)
321 *
322 * <p>
323 * <b>Definition:</b>
324 * A formal computable definition of an operation (on the RESTful interface) or a named query (using the search interaction).
325 * </p> 
326 *
327 * <p>
328 * <b>Requirements:</b>
329 * 
330 * </p> 
331 *
332 * <p>
333 * <b>Profile Definition:</b>
334 * <a href="http://hl7.org/fhir/profiles/OperationDefinition">http://hl7.org/fhir/profiles/OperationDefinition</a> 
335 * </p>
336 *
337 */
338@ResourceDef(name="OperationDefinition", profile="http://hl7.org/fhir/profiles/OperationDefinition", id="operationdefinition")
339public class OperationDefinition extends ca.uhn.fhir.model.dstu2.resource.BaseResource
340    implements  IResource     {
341
342        /**
343         * Search parameter constant for <b>url</b>
344         * <p>
345         * Description: <b></b><br>
346         * Type: <b>uri</b><br>
347         * Path: <b>OperationDefinition.url</b><br>
348         * </p>
349         */
350        @SearchParamDefinition(name="url", path="OperationDefinition.url", description="", type="uri"  )
351        public static final String SP_URL = "url";
352
353        /**
354         * <b>Fluent Client</b> search parameter constant for <b>url</b>
355         * <p>
356         * Description: <b></b><br>
357         * Type: <b>uri</b><br>
358         * Path: <b>OperationDefinition.url</b><br>
359         * </p>
360         */
361        public static final UriClientParam URL = new UriClientParam(SP_URL);
362
363        /**
364         * Search parameter constant for <b>version</b>
365         * <p>
366         * Description: <b></b><br>
367         * Type: <b>token</b><br>
368         * Path: <b>OperationDefinition.version</b><br>
369         * </p>
370         */
371        @SearchParamDefinition(name="version", path="OperationDefinition.version", description="", type="token"  )
372        public static final String SP_VERSION = "version";
373
374        /**
375         * <b>Fluent Client</b> search parameter constant for <b>version</b>
376         * <p>
377         * Description: <b></b><br>
378         * Type: <b>token</b><br>
379         * Path: <b>OperationDefinition.version</b><br>
380         * </p>
381         */
382        public static final TokenClientParam VERSION = new TokenClientParam(SP_VERSION);
383
384        /**
385         * Search parameter constant for <b>name</b>
386         * <p>
387         * Description: <b></b><br>
388         * Type: <b>string</b><br>
389         * Path: <b>OperationDefinition.name</b><br>
390         * </p>
391         */
392        @SearchParamDefinition(name="name", path="OperationDefinition.name", description="", type="string"  )
393        public static final String SP_NAME = "name";
394
395        /**
396         * <b>Fluent Client</b> search parameter constant for <b>name</b>
397         * <p>
398         * Description: <b></b><br>
399         * Type: <b>string</b><br>
400         * Path: <b>OperationDefinition.name</b><br>
401         * </p>
402         */
403        public static final StringClientParam NAME = new StringClientParam(SP_NAME);
404
405        /**
406         * Search parameter constant for <b>publisher</b>
407         * <p>
408         * Description: <b></b><br>
409         * Type: <b>string</b><br>
410         * Path: <b>OperationDefinition.publisher</b><br>
411         * </p>
412         */
413        @SearchParamDefinition(name="publisher", path="OperationDefinition.publisher", description="", type="string"  )
414        public static final String SP_PUBLISHER = "publisher";
415
416        /**
417         * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
418         * <p>
419         * Description: <b></b><br>
420         * Type: <b>string</b><br>
421         * Path: <b>OperationDefinition.publisher</b><br>
422         * </p>
423         */
424        public static final StringClientParam PUBLISHER = new StringClientParam(SP_PUBLISHER);
425
426        /**
427         * Search parameter constant for <b>code</b>
428         * <p>
429         * Description: <b></b><br>
430         * Type: <b>token</b><br>
431         * Path: <b>OperationDefinition.code</b><br>
432         * </p>
433         */
434        @SearchParamDefinition(name="code", path="OperationDefinition.code", description="", type="token"  )
435        public static final String SP_CODE = "code";
436
437        /**
438         * <b>Fluent Client</b> search parameter constant for <b>code</b>
439         * <p>
440         * Description: <b></b><br>
441         * Type: <b>token</b><br>
442         * Path: <b>OperationDefinition.code</b><br>
443         * </p>
444         */
445        public static final TokenClientParam CODE = new TokenClientParam(SP_CODE);
446
447        /**
448         * Search parameter constant for <b>status</b>
449         * <p>
450         * Description: <b></b><br>
451         * Type: <b>token</b><br>
452         * Path: <b>OperationDefinition.status</b><br>
453         * </p>
454         */
455        @SearchParamDefinition(name="status", path="OperationDefinition.status", description="", type="token"  )
456        public static final String SP_STATUS = "status";
457
458        /**
459         * <b>Fluent Client</b> search parameter constant for <b>status</b>
460         * <p>
461         * Description: <b></b><br>
462         * Type: <b>token</b><br>
463         * Path: <b>OperationDefinition.status</b><br>
464         * </p>
465         */
466        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
467
468        /**
469         * Search parameter constant for <b>date</b>
470         * <p>
471         * Description: <b></b><br>
472         * Type: <b>date</b><br>
473         * Path: <b>OperationDefinition.date</b><br>
474         * </p>
475         */
476        @SearchParamDefinition(name="date", path="OperationDefinition.date", description="", type="date"  )
477        public static final String SP_DATE = "date";
478
479        /**
480         * <b>Fluent Client</b> search parameter constant for <b>date</b>
481         * <p>
482         * Description: <b></b><br>
483         * Type: <b>date</b><br>
484         * Path: <b>OperationDefinition.date</b><br>
485         * </p>
486         */
487        public static final DateClientParam DATE = new DateClientParam(SP_DATE);
488
489        /**
490         * Search parameter constant for <b>kind</b>
491         * <p>
492         * Description: <b></b><br>
493         * Type: <b>token</b><br>
494         * Path: <b>OperationDefinition.kind</b><br>
495         * </p>
496         */
497        @SearchParamDefinition(name="kind", path="OperationDefinition.kind", description="", type="token"  )
498        public static final String SP_KIND = "kind";
499
500        /**
501         * <b>Fluent Client</b> search parameter constant for <b>kind</b>
502         * <p>
503         * Description: <b></b><br>
504         * Type: <b>token</b><br>
505         * Path: <b>OperationDefinition.kind</b><br>
506         * </p>
507         */
508        public static final TokenClientParam KIND = new TokenClientParam(SP_KIND);
509
510        /**
511         * Search parameter constant for <b>base</b>
512         * <p>
513         * Description: <b></b><br>
514         * Type: <b>reference</b><br>
515         * Path: <b>OperationDefinition.base</b><br>
516         * </p>
517         */
518        @SearchParamDefinition(name="base", path="OperationDefinition.base", description="", type="reference"  )
519        public static final String SP_BASE = "base";
520
521        /**
522         * <b>Fluent Client</b> search parameter constant for <b>base</b>
523         * <p>
524         * Description: <b></b><br>
525         * Type: <b>reference</b><br>
526         * Path: <b>OperationDefinition.base</b><br>
527         * </p>
528         */
529        public static final ReferenceClientParam BASE = new ReferenceClientParam(SP_BASE);
530
531        /**
532         * Search parameter constant for <b>system</b>
533         * <p>
534         * Description: <b></b><br>
535         * Type: <b>token</b><br>
536         * Path: <b>OperationDefinition.system</b><br>
537         * </p>
538         */
539        @SearchParamDefinition(name="system", path="OperationDefinition.system", description="", type="token"  )
540        public static final String SP_SYSTEM = "system";
541
542        /**
543         * <b>Fluent Client</b> search parameter constant for <b>system</b>
544         * <p>
545         * Description: <b></b><br>
546         * Type: <b>token</b><br>
547         * Path: <b>OperationDefinition.system</b><br>
548         * </p>
549         */
550        public static final TokenClientParam SYSTEM = new TokenClientParam(SP_SYSTEM);
551
552        /**
553         * Search parameter constant for <b>type</b>
554         * <p>
555         * Description: <b></b><br>
556         * Type: <b>token</b><br>
557         * Path: <b>OperationDefinition.type</b><br>
558         * </p>
559         */
560        @SearchParamDefinition(name="type", path="OperationDefinition.type", description="", type="token"  )
561        public static final String SP_TYPE = "type";
562
563        /**
564         * <b>Fluent Client</b> search parameter constant for <b>type</b>
565         * <p>
566         * Description: <b></b><br>
567         * Type: <b>token</b><br>
568         * Path: <b>OperationDefinition.type</b><br>
569         * </p>
570         */
571        public static final TokenClientParam TYPE = new TokenClientParam(SP_TYPE);
572
573        /**
574         * Search parameter constant for <b>instance</b>
575         * <p>
576         * Description: <b></b><br>
577         * Type: <b>token</b><br>
578         * Path: <b>OperationDefinition.instance</b><br>
579         * </p>
580         */
581        @SearchParamDefinition(name="instance", path="OperationDefinition.instance", description="", type="token"  )
582        public static final String SP_INSTANCE = "instance";
583
584        /**
585         * <b>Fluent Client</b> search parameter constant for <b>instance</b>
586         * <p>
587         * Description: <b></b><br>
588         * Type: <b>token</b><br>
589         * Path: <b>OperationDefinition.instance</b><br>
590         * </p>
591         */
592        public static final TokenClientParam INSTANCE = new TokenClientParam(SP_INSTANCE);
593
594        /**
595         * Search parameter constant for <b>profile</b>
596         * <p>
597         * Description: <b></b><br>
598         * Type: <b>reference</b><br>
599         * Path: <b>OperationDefinition.parameter.profile</b><br>
600         * </p>
601         */
602        @SearchParamDefinition(name="profile", path="OperationDefinition.parameter.profile", description="", type="reference"  )
603        public static final String SP_PROFILE = "profile";
604
605        /**
606         * <b>Fluent Client</b> search parameter constant for <b>profile</b>
607         * <p>
608         * Description: <b></b><br>
609         * Type: <b>reference</b><br>
610         * Path: <b>OperationDefinition.parameter.profile</b><br>
611         * </p>
612         */
613        public static final ReferenceClientParam PROFILE = new ReferenceClientParam(SP_PROFILE);
614
615
616        /**
617         * Constant for fluent queries to be used to add include statements. Specifies
618         * the path value of "<b>OperationDefinition:base</b>".
619         */
620        public static final Include INCLUDE_BASE = new Include("OperationDefinition:base");
621
622        /**
623         * Constant for fluent queries to be used to add include statements. Specifies
624         * the path value of "<b>OperationDefinition:profile</b>".
625         */
626        public static final Include INCLUDE_PROFILE = new Include("OperationDefinition:profile");
627
628
629        @Child(name="url", type=UriDt.class, order=0, min=0, max=1, summary=false, modifier=false)      
630        @Description(
631                shortDefinition="id",
632                formalDefinition="An absolute URL that is used to identify this operation definition 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 operation definition is (or will be) published"
633        )
634        private UriDt myUrl;
635        
636        @Child(name="version", type=StringDt.class, order=1, min=0, max=1, summary=false, modifier=false)       
637        @Description(
638                shortDefinition="id.version",
639                formalDefinition="The identifier that is used to identify this version of the profile 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"
640        )
641        private StringDt myVersion;
642        
643        @Child(name="name", type=StringDt.class, order=2, min=1, max=1, summary=false, modifier=false)  
644        @Description(
645                shortDefinition="",
646                formalDefinition="A free text natural language name identifying the operation"
647        )
648        private StringDt myName;
649        
650        @Child(name="status", type=CodeDt.class, order=3, min=1, max=1, summary=false, modifier=false)  
651        @Description(
652                shortDefinition="status",
653                formalDefinition="The status of the profile"
654        )
655        private BoundCodeDt<ConformanceResourceStatusEnum> myStatus;
656        
657        @Child(name="kind", type=CodeDt.class, order=4, min=1, max=1, summary=false, modifier=false)    
658        @Description(
659                shortDefinition="class",
660                formalDefinition="Whether this is an operation or a named query"
661        )
662        private BoundCodeDt<OperationKindEnum> myKind;
663        
664        @Child(name="experimental", type=BooleanDt.class, order=5, min=0, max=1, summary=false, modifier=false) 
665        @Description(
666                shortDefinition="",
667                formalDefinition="This profile was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage"
668        )
669        private BooleanDt myExperimental;
670        
671        @Child(name="publisher", type=StringDt.class, order=6, min=0, max=1, summary=true, modifier=false)      
672        @Description(
673                shortDefinition="who.witness",
674                formalDefinition="The name of the individual or organization that published the operation definition"
675        )
676        private StringDt myPublisher;
677        
678        @Child(name="contact", order=7, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
679        @Description(
680                shortDefinition="",
681                formalDefinition="Contacts to assist a user in finding and communicating with the publisher"
682        )
683        private java.util.List<Contact> myContact;
684        
685        @Child(name="date", type=DateTimeDt.class, order=8, min=0, max=1, summary=false, modifier=false)        
686        @Description(
687                shortDefinition="when.recorded",
688                formalDefinition="The date this version of the operation definition 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 Operation Definition changes"
689        )
690        private DateTimeDt myDate;
691        
692        @Child(name="description", type=StringDt.class, order=9, min=0, max=1, summary=false, modifier=false)   
693        @Description(
694                shortDefinition="",
695                formalDefinition="A free text natural language description of the profile and its use"
696        )
697        private StringDt myDescription;
698        
699        @Child(name="requirements", type=StringDt.class, order=10, min=0, max=1, summary=false, modifier=false) 
700        @Description(
701                shortDefinition="",
702                formalDefinition="Explains why this operation definition is needed and why it's been constrained as it has"
703        )
704        private StringDt myRequirements;
705        
706        @Child(name="idempotent", type=BooleanDt.class, order=11, min=0, max=1, summary=false, modifier=false)  
707        @Description(
708                shortDefinition="",
709                formalDefinition="Operations that are idempotent (see [HTTP specification definition of idempotent](http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html)) may be invoked by performing an HTTP GET operation instead of a POST"
710        )
711        private BooleanDt myIdempotent;
712        
713        @Child(name="code", type=CodeDt.class, order=12, min=1, max=1, summary=false, modifier=false)   
714        @Description(
715                shortDefinition="",
716                formalDefinition="The name used to invoke the operation"
717        )
718        private CodeDt myCode;
719        
720        @Child(name="notes", type=StringDt.class, order=13, min=0, max=1, summary=false, modifier=false)        
721        @Description(
722                shortDefinition="",
723                formalDefinition="Additional information about how to use this operation or named query"
724        )
725        private StringDt myNotes;
726        
727        @Child(name="base", order=14, min=0, max=1, summary=false, modifier=false, type={
728                ca.uhn.fhir.model.dstu2.resource.OperationDefinition.class      })
729        @Description(
730                shortDefinition="",
731                formalDefinition="Indicates that this operation definition is a constraining profile on the base"
732        )
733        private ResourceReferenceDt myBase;
734        
735        @Child(name="system", type=BooleanDt.class, order=15, min=1, max=1, summary=false, modifier=false)      
736        @Description(
737                shortDefinition="",
738                formalDefinition="Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context)"
739        )
740        private BooleanDt mySystem;
741        
742        @Child(name="type", type=CodeDt.class, order=16, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
743        @Description(
744                shortDefinition="",
745                formalDefinition="Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a resource type for the context)"
746        )
747        private java.util.List<BoundCodeDt<ResourceTypeEnum>> myType;
748        
749        @Child(name="instance", type=BooleanDt.class, order=17, min=1, max=1, summary=false, modifier=false)    
750        @Description(
751                shortDefinition="",
752                formalDefinition="Indicates whether this operation can be invoked on a particular instance of one of the given types"
753        )
754        private BooleanDt myInstance;
755        
756        @Child(name="parameter", order=18, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
757        @Description(
758                shortDefinition="",
759                formalDefinition="The parameters for the operation/query"
760        )
761        private java.util.List<Parameter> myParameter;
762        
763
764        @Override
765        public boolean isEmpty() {
766                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myUrl,  myVersion,  myName,  myStatus,  myKind,  myExperimental,  myPublisher,  myContact,  myDate,  myDescription,  myRequirements,  myIdempotent,  myCode,  myNotes,  myBase,  mySystem,  myType,  myInstance,  myParameter);
767        }
768        
769        @Override
770        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
771                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myUrl, myVersion, myName, myStatus, myKind, myExperimental, myPublisher, myContact, myDate, myDescription, myRequirements, myIdempotent, myCode, myNotes, myBase, mySystem, myType, myInstance, myParameter);
772        }
773
774        /**
775         * Gets the value(s) for <b>url</b> (id).
776         * creating it if it does
777         * not exist. Will not return <code>null</code>.
778         *
779     * <p>
780     * <b>Definition:</b>
781     * An absolute URL that is used to identify this operation definition 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 operation definition is (or will be) published
782     * </p> 
783         */
784        public UriDt getUrlElement() {  
785                if (myUrl == null) {
786                        myUrl = new UriDt();
787                }
788                return myUrl;
789        }
790
791        
792        /**
793         * Gets the value(s) for <b>url</b> (id).
794         * creating it if it does
795         * not exist. Will not return <code>null</code>.
796         *
797     * <p>
798     * <b>Definition:</b>
799     * An absolute URL that is used to identify this operation definition 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 operation definition is (or will be) published
800     * </p> 
801         */
802        public String getUrl() {  
803                return getUrlElement().getValue();
804        }
805
806        /**
807         * Sets the value(s) for <b>url</b> (id)
808         *
809     * <p>
810     * <b>Definition:</b>
811     * An absolute URL that is used to identify this operation definition 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 operation definition is (or will be) published
812     * </p> 
813         */
814        public OperationDefinition setUrl(UriDt theValue) {
815                myUrl = theValue;
816                return this;
817        }
818        
819        
820
821        /**
822         * Sets the value for <b>url</b> (id)
823         *
824     * <p>
825     * <b>Definition:</b>
826     * An absolute URL that is used to identify this operation definition 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 operation definition is (or will be) published
827     * </p> 
828         */
829        public OperationDefinition setUrl( String theUri) {
830                myUrl = new UriDt(theUri); 
831                return this; 
832        }
833
834 
835        /**
836         * Gets the value(s) for <b>version</b> (id.version).
837         * creating it if it does
838         * not exist. Will not return <code>null</code>.
839         *
840     * <p>
841     * <b>Definition:</b>
842     * The identifier that is used to identify this version of the profile 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
843     * </p> 
844         */
845        public StringDt getVersionElement() {  
846                if (myVersion == null) {
847                        myVersion = new StringDt();
848                }
849                return myVersion;
850        }
851
852        
853        /**
854         * Gets the value(s) for <b>version</b> (id.version).
855         * creating it if it does
856         * not exist. Will not return <code>null</code>.
857         *
858     * <p>
859     * <b>Definition:</b>
860     * The identifier that is used to identify this version of the profile 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
861     * </p> 
862         */
863        public String getVersion() {  
864                return getVersionElement().getValue();
865        }
866
867        /**
868         * Sets the value(s) for <b>version</b> (id.version)
869         *
870     * <p>
871     * <b>Definition:</b>
872     * The identifier that is used to identify this version of the profile 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
873     * </p> 
874         */
875        public OperationDefinition setVersion(StringDt theValue) {
876                myVersion = theValue;
877                return this;
878        }
879        
880        
881
882        /**
883         * Sets the value for <b>version</b> (id.version)
884         *
885     * <p>
886     * <b>Definition:</b>
887     * The identifier that is used to identify this version of the profile 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
888     * </p> 
889         */
890        public OperationDefinition setVersion( String theString) {
891                myVersion = new StringDt(theString); 
892                return this; 
893        }
894
895 
896        /**
897         * Gets the value(s) for <b>name</b> ().
898         * creating it if it does
899         * not exist. Will not return <code>null</code>.
900         *
901     * <p>
902     * <b>Definition:</b>
903     * A free text natural language name identifying the operation
904     * </p> 
905         */
906        public StringDt getNameElement() {  
907                if (myName == null) {
908                        myName = new StringDt();
909                }
910                return myName;
911        }
912
913        
914        /**
915         * Gets the value(s) for <b>name</b> ().
916         * creating it if it does
917         * not exist. Will not return <code>null</code>.
918         *
919     * <p>
920     * <b>Definition:</b>
921     * A free text natural language name identifying the operation
922     * </p> 
923         */
924        public String getName() {  
925                return getNameElement().getValue();
926        }
927
928        /**
929         * Sets the value(s) for <b>name</b> ()
930         *
931     * <p>
932     * <b>Definition:</b>
933     * A free text natural language name identifying the operation
934     * </p> 
935         */
936        public OperationDefinition setName(StringDt theValue) {
937                myName = theValue;
938                return this;
939        }
940        
941        
942
943        /**
944         * Sets the value for <b>name</b> ()
945         *
946     * <p>
947     * <b>Definition:</b>
948     * A free text natural language name identifying the operation
949     * </p> 
950         */
951        public OperationDefinition setName( String theString) {
952                myName = new StringDt(theString); 
953                return this; 
954        }
955
956 
957        /**
958         * Gets the value(s) for <b>status</b> (status).
959         * creating it if it does
960         * not exist. Will not return <code>null</code>.
961         *
962     * <p>
963     * <b>Definition:</b>
964     * The status of the profile
965     * </p> 
966         */
967        public BoundCodeDt<ConformanceResourceStatusEnum> getStatusElement() {  
968                if (myStatus == null) {
969                        myStatus = new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER);
970                }
971                return myStatus;
972        }
973
974        
975        /**
976         * Gets the value(s) for <b>status</b> (status).
977         * creating it if it does
978         * not exist. Will not return <code>null</code>.
979         *
980     * <p>
981     * <b>Definition:</b>
982     * The status of the profile
983     * </p> 
984         */
985        public String getStatus() {  
986                return getStatusElement().getValue();
987        }
988
989        /**
990         * Sets the value(s) for <b>status</b> (status)
991         *
992     * <p>
993     * <b>Definition:</b>
994     * The status of the profile
995     * </p> 
996         */
997        public OperationDefinition setStatus(BoundCodeDt<ConformanceResourceStatusEnum> theValue) {
998                myStatus = theValue;
999                return this;
1000        }
1001        
1002        
1003
1004        /**
1005         * Sets the value(s) for <b>status</b> (status)
1006         *
1007     * <p>
1008     * <b>Definition:</b>
1009     * The status of the profile
1010     * </p> 
1011         */
1012        public OperationDefinition setStatus(ConformanceResourceStatusEnum theValue) {
1013                setStatus(new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER, theValue));
1014                
1015/*
1016                getStatusElement().setValueAsEnum(theValue);
1017*/
1018                return this;
1019        }
1020
1021  
1022        /**
1023         * Gets the value(s) for <b>kind</b> (class).
1024         * creating it if it does
1025         * not exist. Will not return <code>null</code>.
1026         *
1027     * <p>
1028     * <b>Definition:</b>
1029     * Whether this is an operation or a named query
1030     * </p> 
1031         */
1032        public BoundCodeDt<OperationKindEnum> getKindElement() {  
1033                if (myKind == null) {
1034                        myKind = new BoundCodeDt<OperationKindEnum>(OperationKindEnum.VALUESET_BINDER);
1035                }
1036                return myKind;
1037        }
1038
1039        
1040        /**
1041         * Gets the value(s) for <b>kind</b> (class).
1042         * creating it if it does
1043         * not exist. Will not return <code>null</code>.
1044         *
1045     * <p>
1046     * <b>Definition:</b>
1047     * Whether this is an operation or a named query
1048     * </p> 
1049         */
1050        public String getKind() {  
1051                return getKindElement().getValue();
1052        }
1053
1054        /**
1055         * Sets the value(s) for <b>kind</b> (class)
1056         *
1057     * <p>
1058     * <b>Definition:</b>
1059     * Whether this is an operation or a named query
1060     * </p> 
1061         */
1062        public OperationDefinition setKind(BoundCodeDt<OperationKindEnum> theValue) {
1063                myKind = theValue;
1064                return this;
1065        }
1066        
1067        
1068
1069        /**
1070         * Sets the value(s) for <b>kind</b> (class)
1071         *
1072     * <p>
1073     * <b>Definition:</b>
1074     * Whether this is an operation or a named query
1075     * </p> 
1076         */
1077        public OperationDefinition setKind(OperationKindEnum theValue) {
1078                setKind(new BoundCodeDt<OperationKindEnum>(OperationKindEnum.VALUESET_BINDER, theValue));
1079                
1080/*
1081                getKindElement().setValueAsEnum(theValue);
1082*/
1083                return this;
1084        }
1085
1086  
1087        /**
1088         * Gets the value(s) for <b>experimental</b> ().
1089         * creating it if it does
1090         * not exist. Will not return <code>null</code>.
1091         *
1092     * <p>
1093     * <b>Definition:</b>
1094     * This profile was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1095     * </p> 
1096         */
1097        public BooleanDt getExperimentalElement() {  
1098                if (myExperimental == null) {
1099                        myExperimental = new BooleanDt();
1100                }
1101                return myExperimental;
1102        }
1103
1104        
1105        /**
1106         * Gets the value(s) for <b>experimental</b> ().
1107         * creating it if it does
1108         * not exist. Will not return <code>null</code>.
1109         *
1110     * <p>
1111     * <b>Definition:</b>
1112     * This profile was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1113     * </p> 
1114         */
1115        public Boolean getExperimental() {  
1116                return getExperimentalElement().getValue();
1117        }
1118
1119        /**
1120         * Sets the value(s) for <b>experimental</b> ()
1121         *
1122     * <p>
1123     * <b>Definition:</b>
1124     * This profile was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1125     * </p> 
1126         */
1127        public OperationDefinition setExperimental(BooleanDt theValue) {
1128                myExperimental = theValue;
1129                return this;
1130        }
1131        
1132        
1133
1134        /**
1135         * Sets the value for <b>experimental</b> ()
1136         *
1137     * <p>
1138     * <b>Definition:</b>
1139     * This profile was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1140     * </p> 
1141         */
1142        public OperationDefinition setExperimental( boolean theBoolean) {
1143                myExperimental = new BooleanDt(theBoolean); 
1144                return this; 
1145        }
1146
1147 
1148        /**
1149         * Gets the value(s) for <b>publisher</b> (who.witness).
1150         * creating it if it does
1151         * not exist. Will not return <code>null</code>.
1152         *
1153     * <p>
1154     * <b>Definition:</b>
1155     * The name of the individual or organization that published the operation definition
1156     * </p> 
1157         */
1158        public StringDt getPublisherElement() {  
1159                if (myPublisher == null) {
1160                        myPublisher = new StringDt();
1161                }
1162                return myPublisher;
1163        }
1164
1165        
1166        /**
1167         * Gets the value(s) for <b>publisher</b> (who.witness).
1168         * creating it if it does
1169         * not exist. Will not return <code>null</code>.
1170         *
1171     * <p>
1172     * <b>Definition:</b>
1173     * The name of the individual or organization that published the operation definition
1174     * </p> 
1175         */
1176        public String getPublisher() {  
1177                return getPublisherElement().getValue();
1178        }
1179
1180        /**
1181         * Sets the value(s) for <b>publisher</b> (who.witness)
1182         *
1183     * <p>
1184     * <b>Definition:</b>
1185     * The name of the individual or organization that published the operation definition
1186     * </p> 
1187         */
1188        public OperationDefinition setPublisher(StringDt theValue) {
1189                myPublisher = theValue;
1190                return this;
1191        }
1192        
1193        
1194
1195        /**
1196         * Sets the value for <b>publisher</b> (who.witness)
1197         *
1198     * <p>
1199     * <b>Definition:</b>
1200     * The name of the individual or organization that published the operation definition
1201     * </p> 
1202         */
1203        public OperationDefinition setPublisher( String theString) {
1204                myPublisher = new StringDt(theString); 
1205                return this; 
1206        }
1207
1208 
1209        /**
1210         * Gets the value(s) for <b>contact</b> ().
1211         * creating it if it does
1212         * not exist. Will not return <code>null</code>.
1213         *
1214     * <p>
1215     * <b>Definition:</b>
1216     * Contacts to assist a user in finding and communicating with the publisher
1217     * </p> 
1218         */
1219        public java.util.List<Contact> getContact() {  
1220                if (myContact == null) {
1221                        myContact = new java.util.ArrayList<Contact>();
1222                }
1223                return myContact;
1224        }
1225
1226        /**
1227         * Sets the value(s) for <b>contact</b> ()
1228         *
1229     * <p>
1230     * <b>Definition:</b>
1231     * Contacts to assist a user in finding and communicating with the publisher
1232     * </p> 
1233         */
1234        public OperationDefinition setContact(java.util.List<Contact> theValue) {
1235                myContact = theValue;
1236                return this;
1237        }
1238        
1239        
1240
1241        /**
1242         * Adds and returns a new value for <b>contact</b> ()
1243         *
1244     * <p>
1245     * <b>Definition:</b>
1246     * Contacts to assist a user in finding and communicating with the publisher
1247     * </p> 
1248         */
1249        public Contact addContact() {
1250                Contact newType = new Contact();
1251                getContact().add(newType);
1252                return newType; 
1253        }
1254
1255        /**
1256         * Adds a given new value for <b>contact</b> ()
1257         *
1258         * <p>
1259         * <b>Definition:</b>
1260         * Contacts to assist a user in finding and communicating with the publisher
1261         * </p>
1262         * @param theValue The contact to add (must not be <code>null</code>)
1263         */
1264        public OperationDefinition addContact(Contact theValue) {
1265                if (theValue == null) {
1266                        throw new NullPointerException("theValue must not be null");
1267                }
1268                getContact().add(theValue);
1269                return this;
1270        }
1271
1272        /**
1273         * Gets the first repetition for <b>contact</b> (),
1274         * creating it if it does not already exist.
1275         *
1276     * <p>
1277     * <b>Definition:</b>
1278     * Contacts to assist a user in finding and communicating with the publisher
1279     * </p> 
1280         */
1281        public Contact getContactFirstRep() {
1282                if (getContact().isEmpty()) {
1283                        return addContact();
1284                }
1285                return getContact().get(0); 
1286        }
1287  
1288        /**
1289         * Gets the value(s) for <b>date</b> (when.recorded).
1290         * creating it if it does
1291         * not exist. Will not return <code>null</code>.
1292         *
1293     * <p>
1294     * <b>Definition:</b>
1295     * The date this version of the operation definition 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 Operation Definition changes
1296     * </p> 
1297         */
1298        public DateTimeDt getDateElement() {  
1299                if (myDate == null) {
1300                        myDate = new DateTimeDt();
1301                }
1302                return myDate;
1303        }
1304
1305        
1306        /**
1307         * Gets the value(s) for <b>date</b> (when.recorded).
1308         * creating it if it does
1309         * not exist. Will not return <code>null</code>.
1310         *
1311     * <p>
1312     * <b>Definition:</b>
1313     * The date this version of the operation definition 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 Operation Definition changes
1314     * </p> 
1315         */
1316        public Date getDate() {  
1317                return getDateElement().getValue();
1318        }
1319
1320        /**
1321         * Sets the value(s) for <b>date</b> (when.recorded)
1322         *
1323     * <p>
1324     * <b>Definition:</b>
1325     * The date this version of the operation definition 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 Operation Definition changes
1326     * </p> 
1327         */
1328        public OperationDefinition setDate(DateTimeDt theValue) {
1329                myDate = theValue;
1330                return this;
1331        }
1332        
1333        
1334
1335        /**
1336         * Sets the value for <b>date</b> (when.recorded)
1337         *
1338     * <p>
1339     * <b>Definition:</b>
1340     * The date this version of the operation definition 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 Operation Definition changes
1341     * </p> 
1342         */
1343        public OperationDefinition setDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
1344                myDate = new DateTimeDt(theDate, thePrecision); 
1345                return this; 
1346        }
1347
1348        /**
1349         * Sets the value for <b>date</b> (when.recorded)
1350         *
1351     * <p>
1352     * <b>Definition:</b>
1353     * The date this version of the operation definition 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 Operation Definition changes
1354     * </p> 
1355         */
1356        public OperationDefinition setDateWithSecondsPrecision( Date theDate) {
1357                myDate = new DateTimeDt(theDate); 
1358                return this; 
1359        }
1360
1361 
1362        /**
1363         * Gets the value(s) for <b>description</b> ().
1364         * creating it if it does
1365         * not exist. Will not return <code>null</code>.
1366         *
1367     * <p>
1368     * <b>Definition:</b>
1369     * A free text natural language description of the profile and its use
1370     * </p> 
1371         */
1372        public StringDt getDescriptionElement() {  
1373                if (myDescription == null) {
1374                        myDescription = new StringDt();
1375                }
1376                return myDescription;
1377        }
1378
1379        
1380        /**
1381         * Gets the value(s) for <b>description</b> ().
1382         * creating it if it does
1383         * not exist. Will not return <code>null</code>.
1384         *
1385     * <p>
1386     * <b>Definition:</b>
1387     * A free text natural language description of the profile and its use
1388     * </p> 
1389         */
1390        public String getDescription() {  
1391                return getDescriptionElement().getValue();
1392        }
1393
1394        /**
1395         * Sets the value(s) for <b>description</b> ()
1396         *
1397     * <p>
1398     * <b>Definition:</b>
1399     * A free text natural language description of the profile and its use
1400     * </p> 
1401         */
1402        public OperationDefinition setDescription(StringDt theValue) {
1403                myDescription = theValue;
1404                return this;
1405        }
1406        
1407        
1408
1409        /**
1410         * Sets the value for <b>description</b> ()
1411         *
1412     * <p>
1413     * <b>Definition:</b>
1414     * A free text natural language description of the profile and its use
1415     * </p> 
1416         */
1417        public OperationDefinition setDescription( String theString) {
1418                myDescription = new StringDt(theString); 
1419                return this; 
1420        }
1421
1422 
1423        /**
1424         * Gets the value(s) for <b>requirements</b> ().
1425         * creating it if it does
1426         * not exist. Will not return <code>null</code>.
1427         *
1428     * <p>
1429     * <b>Definition:</b>
1430     * Explains why this operation definition is needed and why it's been constrained as it has
1431     * </p> 
1432         */
1433        public StringDt getRequirementsElement() {  
1434                if (myRequirements == null) {
1435                        myRequirements = new StringDt();
1436                }
1437                return myRequirements;
1438        }
1439
1440        
1441        /**
1442         * Gets the value(s) for <b>requirements</b> ().
1443         * creating it if it does
1444         * not exist. Will not return <code>null</code>.
1445         *
1446     * <p>
1447     * <b>Definition:</b>
1448     * Explains why this operation definition is needed and why it's been constrained as it has
1449     * </p> 
1450         */
1451        public String getRequirements() {  
1452                return getRequirementsElement().getValue();
1453        }
1454
1455        /**
1456         * Sets the value(s) for <b>requirements</b> ()
1457         *
1458     * <p>
1459     * <b>Definition:</b>
1460     * Explains why this operation definition is needed and why it's been constrained as it has
1461     * </p> 
1462         */
1463        public OperationDefinition setRequirements(StringDt theValue) {
1464                myRequirements = theValue;
1465                return this;
1466        }
1467        
1468        
1469
1470        /**
1471         * Sets the value for <b>requirements</b> ()
1472         *
1473     * <p>
1474     * <b>Definition:</b>
1475     * Explains why this operation definition is needed and why it's been constrained as it has
1476     * </p> 
1477         */
1478        public OperationDefinition setRequirements( String theString) {
1479                myRequirements = new StringDt(theString); 
1480                return this; 
1481        }
1482
1483 
1484        /**
1485         * Gets the value(s) for <b>idempotent</b> ().
1486         * creating it if it does
1487         * not exist. Will not return <code>null</code>.
1488         *
1489     * <p>
1490     * <b>Definition:</b>
1491     * Operations that are idempotent (see [HTTP specification definition of idempotent](http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html)) may be invoked by performing an HTTP GET operation instead of a POST
1492     * </p> 
1493         */
1494        public BooleanDt getIdempotentElement() {  
1495                if (myIdempotent == null) {
1496                        myIdempotent = new BooleanDt();
1497                }
1498                return myIdempotent;
1499        }
1500
1501        
1502        /**
1503         * Gets the value(s) for <b>idempotent</b> ().
1504         * creating it if it does
1505         * not exist. Will not return <code>null</code>.
1506         *
1507     * <p>
1508     * <b>Definition:</b>
1509     * Operations that are idempotent (see [HTTP specification definition of idempotent](http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html)) may be invoked by performing an HTTP GET operation instead of a POST
1510     * </p> 
1511         */
1512        public Boolean getIdempotent() {  
1513                return getIdempotentElement().getValue();
1514        }
1515
1516        /**
1517         * Sets the value(s) for <b>idempotent</b> ()
1518         *
1519     * <p>
1520     * <b>Definition:</b>
1521     * Operations that are idempotent (see [HTTP specification definition of idempotent](http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html)) may be invoked by performing an HTTP GET operation instead of a POST
1522     * </p> 
1523         */
1524        public OperationDefinition setIdempotent(BooleanDt theValue) {
1525                myIdempotent = theValue;
1526                return this;
1527        }
1528        
1529        
1530
1531        /**
1532         * Sets the value for <b>idempotent</b> ()
1533         *
1534     * <p>
1535     * <b>Definition:</b>
1536     * Operations that are idempotent (see [HTTP specification definition of idempotent](http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html)) may be invoked by performing an HTTP GET operation instead of a POST
1537     * </p> 
1538         */
1539        public OperationDefinition setIdempotent( boolean theBoolean) {
1540                myIdempotent = new BooleanDt(theBoolean); 
1541                return this; 
1542        }
1543
1544 
1545        /**
1546         * Gets the value(s) for <b>code</b> ().
1547         * creating it if it does
1548         * not exist. Will not return <code>null</code>.
1549         *
1550     * <p>
1551     * <b>Definition:</b>
1552     * The name used to invoke the operation
1553     * </p> 
1554         */
1555        public CodeDt getCodeElement() {  
1556                if (myCode == null) {
1557                        myCode = new CodeDt();
1558                }
1559                return myCode;
1560        }
1561
1562        
1563        /**
1564         * Gets the value(s) for <b>code</b> ().
1565         * creating it if it does
1566         * not exist. Will not return <code>null</code>.
1567         *
1568     * <p>
1569     * <b>Definition:</b>
1570     * The name used to invoke the operation
1571     * </p> 
1572         */
1573        public String getCode() {  
1574                return getCodeElement().getValue();
1575        }
1576
1577        /**
1578         * Sets the value(s) for <b>code</b> ()
1579         *
1580     * <p>
1581     * <b>Definition:</b>
1582     * The name used to invoke the operation
1583     * </p> 
1584         */
1585        public OperationDefinition setCode(CodeDt theValue) {
1586                myCode = theValue;
1587                return this;
1588        }
1589        
1590        
1591
1592        /**
1593         * Sets the value for <b>code</b> ()
1594         *
1595     * <p>
1596     * <b>Definition:</b>
1597     * The name used to invoke the operation
1598     * </p> 
1599         */
1600        public OperationDefinition setCode( String theCode) {
1601                myCode = new CodeDt(theCode); 
1602                return this; 
1603        }
1604
1605 
1606        /**
1607         * Gets the value(s) for <b>notes</b> ().
1608         * creating it if it does
1609         * not exist. Will not return <code>null</code>.
1610         *
1611     * <p>
1612     * <b>Definition:</b>
1613     * Additional information about how to use this operation or named query
1614     * </p> 
1615         */
1616        public StringDt getNotesElement() {  
1617                if (myNotes == null) {
1618                        myNotes = new StringDt();
1619                }
1620                return myNotes;
1621        }
1622
1623        
1624        /**
1625         * Gets the value(s) for <b>notes</b> ().
1626         * creating it if it does
1627         * not exist. Will not return <code>null</code>.
1628         *
1629     * <p>
1630     * <b>Definition:</b>
1631     * Additional information about how to use this operation or named query
1632     * </p> 
1633         */
1634        public String getNotes() {  
1635                return getNotesElement().getValue();
1636        }
1637
1638        /**
1639         * Sets the value(s) for <b>notes</b> ()
1640         *
1641     * <p>
1642     * <b>Definition:</b>
1643     * Additional information about how to use this operation or named query
1644     * </p> 
1645         */
1646        public OperationDefinition setNotes(StringDt theValue) {
1647                myNotes = theValue;
1648                return this;
1649        }
1650        
1651        
1652
1653        /**
1654         * Sets the value for <b>notes</b> ()
1655         *
1656     * <p>
1657     * <b>Definition:</b>
1658     * Additional information about how to use this operation or named query
1659     * </p> 
1660         */
1661        public OperationDefinition setNotes( String theString) {
1662                myNotes = new StringDt(theString); 
1663                return this; 
1664        }
1665
1666 
1667        /**
1668         * Gets the value(s) for <b>base</b> ().
1669         * creating it if it does
1670         * not exist. Will not return <code>null</code>.
1671         *
1672     * <p>
1673     * <b>Definition:</b>
1674     * Indicates that this operation definition is a constraining profile on the base
1675     * </p> 
1676         */
1677        public ResourceReferenceDt getBase() {  
1678                if (myBase == null) {
1679                        myBase = new ResourceReferenceDt();
1680                }
1681                return myBase;
1682        }
1683
1684        /**
1685         * Sets the value(s) for <b>base</b> ()
1686         *
1687     * <p>
1688     * <b>Definition:</b>
1689     * Indicates that this operation definition is a constraining profile on the base
1690     * </p> 
1691         */
1692        public OperationDefinition setBase(ResourceReferenceDt theValue) {
1693                myBase = theValue;
1694                return this;
1695        }
1696        
1697        
1698
1699  
1700        /**
1701         * Gets the value(s) for <b>system</b> ().
1702         * creating it if it does
1703         * not exist. Will not return <code>null</code>.
1704         *
1705     * <p>
1706     * <b>Definition:</b>
1707     * Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context)
1708     * </p> 
1709         */
1710        public BooleanDt getSystemElement() {  
1711                if (mySystem == null) {
1712                        mySystem = new BooleanDt();
1713                }
1714                return mySystem;
1715        }
1716
1717        
1718        /**
1719         * Gets the value(s) for <b>system</b> ().
1720         * creating it if it does
1721         * not exist. Will not return <code>null</code>.
1722         *
1723     * <p>
1724     * <b>Definition:</b>
1725     * Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context)
1726     * </p> 
1727         */
1728        public Boolean getSystem() {  
1729                return getSystemElement().getValue();
1730        }
1731
1732        /**
1733         * Sets the value(s) for <b>system</b> ()
1734         *
1735     * <p>
1736     * <b>Definition:</b>
1737     * Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context)
1738     * </p> 
1739         */
1740        public OperationDefinition setSystem(BooleanDt theValue) {
1741                mySystem = theValue;
1742                return this;
1743        }
1744        
1745        
1746
1747        /**
1748         * Sets the value for <b>system</b> ()
1749         *
1750     * <p>
1751     * <b>Definition:</b>
1752     * Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context)
1753     * </p> 
1754         */
1755        public OperationDefinition setSystem( boolean theBoolean) {
1756                mySystem = new BooleanDt(theBoolean); 
1757                return this; 
1758        }
1759
1760 
1761        /**
1762         * Gets the value(s) for <b>type</b> ().
1763         * creating it if it does
1764         * not exist. Will not return <code>null</code>.
1765         *
1766     * <p>
1767     * <b>Definition:</b>
1768     * Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a resource type for the context)
1769     * </p> 
1770         */
1771        public java.util.List<BoundCodeDt<ResourceTypeEnum>> getType() {  
1772                if (myType == null) {
1773                        myType = new java.util.ArrayList<BoundCodeDt<ResourceTypeEnum>>();
1774                }
1775                return myType;
1776        }
1777
1778        /**
1779         * Sets the value(s) for <b>type</b> ()
1780         *
1781     * <p>
1782     * <b>Definition:</b>
1783     * Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a resource type for the context)
1784     * </p> 
1785         */
1786        public OperationDefinition setType(java.util.List<BoundCodeDt<ResourceTypeEnum>> theValue) {
1787                myType = theValue;
1788                return this;
1789        }
1790        
1791        
1792
1793        /**
1794         * Add a value for <b>type</b> () using an enumerated type. This
1795         * is intended as a convenience method for situations where the FHIR defined ValueSets are mandatory
1796         * or contain the desirable codes. If you wish to use codes other than those which are built-in, 
1797         * you may also use the {@link #addType()} method.
1798         *
1799     * <p>
1800     * <b>Definition:</b>
1801     * Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a resource type for the context)
1802     * </p> 
1803         */
1804        public BoundCodeDt<ResourceTypeEnum> addType(ResourceTypeEnum theValue) {
1805                BoundCodeDt<ResourceTypeEnum> retVal = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER, theValue);
1806                getType().add(retVal);
1807                return retVal;
1808        }
1809
1810        /**
1811         * Gets the first repetition for <b>type</b> (),
1812         * creating it if it does not already exist.
1813         *
1814     * <p>
1815     * <b>Definition:</b>
1816     * Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a resource type for the context)
1817     * </p> 
1818         */
1819        public BoundCodeDt<ResourceTypeEnum> getTypeFirstRep() {
1820                if (getType().size() == 0) {
1821                        addType();
1822                }
1823                return getType().get(0);
1824        }
1825
1826        /**
1827         * Add a value for <b>type</b> ()
1828         *
1829     * <p>
1830     * <b>Definition:</b>
1831     * Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a resource type for the context)
1832     * </p> 
1833         */
1834        public BoundCodeDt<ResourceTypeEnum> addType() {
1835                BoundCodeDt<ResourceTypeEnum> retVal = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER);
1836                getType().add(retVal);
1837                return retVal;
1838        }
1839
1840        /**
1841         * Sets the value(s), and clears any existing value(s) for <b>type</b> ()
1842         *
1843     * <p>
1844     * <b>Definition:</b>
1845     * Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a resource type for the context)
1846     * </p> 
1847         */
1848        public OperationDefinition setType(ResourceTypeEnum theValue) {
1849                getType().clear();
1850                addType(theValue);
1851                return this;
1852        }
1853
1854  
1855        /**
1856         * Gets the value(s) for <b>instance</b> ().
1857         * creating it if it does
1858         * not exist. Will not return <code>null</code>.
1859         *
1860     * <p>
1861     * <b>Definition:</b>
1862     * Indicates whether this operation can be invoked on a particular instance of one of the given types
1863     * </p> 
1864         */
1865        public BooleanDt getInstanceElement() {  
1866                if (myInstance == null) {
1867                        myInstance = new BooleanDt();
1868                }
1869                return myInstance;
1870        }
1871
1872        
1873        /**
1874         * Gets the value(s) for <b>instance</b> ().
1875         * creating it if it does
1876         * not exist. Will not return <code>null</code>.
1877         *
1878     * <p>
1879     * <b>Definition:</b>
1880     * Indicates whether this operation can be invoked on a particular instance of one of the given types
1881     * </p> 
1882         */
1883        public Boolean getInstance() {  
1884                return getInstanceElement().getValue();
1885        }
1886
1887        /**
1888         * Sets the value(s) for <b>instance</b> ()
1889         *
1890     * <p>
1891     * <b>Definition:</b>
1892     * Indicates whether this operation can be invoked on a particular instance of one of the given types
1893     * </p> 
1894         */
1895        public OperationDefinition setInstance(BooleanDt theValue) {
1896                myInstance = theValue;
1897                return this;
1898        }
1899        
1900        
1901
1902        /**
1903         * Sets the value for <b>instance</b> ()
1904         *
1905     * <p>
1906     * <b>Definition:</b>
1907     * Indicates whether this operation can be invoked on a particular instance of one of the given types
1908     * </p> 
1909         */
1910        public OperationDefinition setInstance( boolean theBoolean) {
1911                myInstance = new BooleanDt(theBoolean); 
1912                return this; 
1913        }
1914
1915 
1916        /**
1917         * Gets the value(s) for <b>parameter</b> ().
1918         * creating it if it does
1919         * not exist. Will not return <code>null</code>.
1920         *
1921     * <p>
1922     * <b>Definition:</b>
1923     * The parameters for the operation/query
1924     * </p> 
1925         */
1926        public java.util.List<Parameter> getParameter() {  
1927                if (myParameter == null) {
1928                        myParameter = new java.util.ArrayList<Parameter>();
1929                }
1930                return myParameter;
1931        }
1932
1933        /**
1934         * Sets the value(s) for <b>parameter</b> ()
1935         *
1936     * <p>
1937     * <b>Definition:</b>
1938     * The parameters for the operation/query
1939     * </p> 
1940         */
1941        public OperationDefinition setParameter(java.util.List<Parameter> theValue) {
1942                myParameter = theValue;
1943                return this;
1944        }
1945        
1946        
1947
1948        /**
1949         * Adds and returns a new value for <b>parameter</b> ()
1950         *
1951     * <p>
1952     * <b>Definition:</b>
1953     * The parameters for the operation/query
1954     * </p> 
1955         */
1956        public Parameter addParameter() {
1957                Parameter newType = new Parameter();
1958                getParameter().add(newType);
1959                return newType; 
1960        }
1961
1962        /**
1963         * Adds a given new value for <b>parameter</b> ()
1964         *
1965         * <p>
1966         * <b>Definition:</b>
1967         * The parameters for the operation/query
1968         * </p>
1969         * @param theValue The parameter to add (must not be <code>null</code>)
1970         */
1971        public OperationDefinition addParameter(Parameter theValue) {
1972                if (theValue == null) {
1973                        throw new NullPointerException("theValue must not be null");
1974                }
1975                getParameter().add(theValue);
1976                return this;
1977        }
1978
1979        /**
1980         * Gets the first repetition for <b>parameter</b> (),
1981         * creating it if it does not already exist.
1982         *
1983     * <p>
1984     * <b>Definition:</b>
1985     * The parameters for the operation/query
1986     * </p> 
1987         */
1988        public Parameter getParameterFirstRep() {
1989                if (getParameter().isEmpty()) {
1990                        return addParameter();
1991                }
1992                return getParameter().get(0); 
1993        }
1994  
1995        /**
1996         * Block class for child element: <b>OperationDefinition.contact</b> ()
1997         *
1998     * <p>
1999     * <b>Definition:</b>
2000     * Contacts to assist a user in finding and communicating with the publisher
2001     * </p> 
2002         */
2003        @Block()        
2004        public static class Contact 
2005            extends  BaseIdentifiableElement        implements IResourceBlock {
2006        
2007        @Child(name="name", type=StringDt.class, order=0, min=0, max=1, summary=true, modifier=false)   
2008        @Description(
2009                shortDefinition="",
2010                formalDefinition="The name of an individual to contact regarding the operation definition"
2011        )
2012        private StringDt myName;
2013        
2014        @Child(name="telecom", type=ContactPointDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
2015        @Description(
2016                shortDefinition="",
2017                formalDefinition="Contact details for individual (if a name was provided) or the publisher"
2018        )
2019        private java.util.List<ContactPointDt> myTelecom;
2020        
2021
2022        @Override
2023        public boolean isEmpty() {
2024                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myTelecom);
2025        }
2026        
2027        @Override
2028        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2029                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myTelecom);
2030        }
2031
2032        /**
2033         * Gets the value(s) for <b>name</b> ().
2034         * creating it if it does
2035         * not exist. Will not return <code>null</code>.
2036         *
2037     * <p>
2038     * <b>Definition:</b>
2039     * The name of an individual to contact regarding the operation definition
2040     * </p> 
2041         */
2042        public StringDt getNameElement() {  
2043                if (myName == null) {
2044                        myName = new StringDt();
2045                }
2046                return myName;
2047        }
2048
2049        
2050        /**
2051         * Gets the value(s) for <b>name</b> ().
2052         * creating it if it does
2053         * not exist. Will not return <code>null</code>.
2054         *
2055     * <p>
2056     * <b>Definition:</b>
2057     * The name of an individual to contact regarding the operation definition
2058     * </p> 
2059         */
2060        public String getName() {  
2061                return getNameElement().getValue();
2062        }
2063
2064        /**
2065         * Sets the value(s) for <b>name</b> ()
2066         *
2067     * <p>
2068     * <b>Definition:</b>
2069     * The name of an individual to contact regarding the operation definition
2070     * </p> 
2071         */
2072        public Contact setName(StringDt theValue) {
2073                myName = theValue;
2074                return this;
2075        }
2076        
2077        
2078
2079        /**
2080         * Sets the value for <b>name</b> ()
2081         *
2082     * <p>
2083     * <b>Definition:</b>
2084     * The name of an individual to contact regarding the operation definition
2085     * </p> 
2086         */
2087        public Contact setName( String theString) {
2088                myName = new StringDt(theString); 
2089                return this; 
2090        }
2091
2092 
2093        /**
2094         * Gets the value(s) for <b>telecom</b> ().
2095         * creating it if it does
2096         * not exist. Will not return <code>null</code>.
2097         *
2098     * <p>
2099     * <b>Definition:</b>
2100     * Contact details for individual (if a name was provided) or the publisher
2101     * </p> 
2102         */
2103        public java.util.List<ContactPointDt> getTelecom() {  
2104                if (myTelecom == null) {
2105                        myTelecom = new java.util.ArrayList<ContactPointDt>();
2106                }
2107                return myTelecom;
2108        }
2109
2110        /**
2111         * Sets the value(s) for <b>telecom</b> ()
2112         *
2113     * <p>
2114     * <b>Definition:</b>
2115     * Contact details for individual (if a name was provided) or the publisher
2116     * </p> 
2117         */
2118        public Contact setTelecom(java.util.List<ContactPointDt> theValue) {
2119                myTelecom = theValue;
2120                return this;
2121        }
2122        
2123        
2124
2125        /**
2126         * Adds and returns a new value for <b>telecom</b> ()
2127         *
2128     * <p>
2129     * <b>Definition:</b>
2130     * Contact details for individual (if a name was provided) or the publisher
2131     * </p> 
2132         */
2133        public ContactPointDt addTelecom() {
2134                ContactPointDt newType = new ContactPointDt();
2135                getTelecom().add(newType);
2136                return newType; 
2137        }
2138
2139        /**
2140         * Adds a given new value for <b>telecom</b> ()
2141         *
2142         * <p>
2143         * <b>Definition:</b>
2144         * Contact details for individual (if a name was provided) or the publisher
2145         * </p>
2146         * @param theValue The telecom to add (must not be <code>null</code>)
2147         */
2148        public Contact addTelecom(ContactPointDt theValue) {
2149                if (theValue == null) {
2150                        throw new NullPointerException("theValue must not be null");
2151                }
2152                getTelecom().add(theValue);
2153                return this;
2154        }
2155
2156        /**
2157         * Gets the first repetition for <b>telecom</b> (),
2158         * creating it if it does not already exist.
2159         *
2160     * <p>
2161     * <b>Definition:</b>
2162     * Contact details for individual (if a name was provided) or the publisher
2163     * </p> 
2164         */
2165        public ContactPointDt getTelecomFirstRep() {
2166                if (getTelecom().isEmpty()) {
2167                        return addTelecom();
2168                }
2169                return getTelecom().get(0); 
2170        }
2171  
2172
2173
2174        }
2175
2176
2177        /**
2178         * Block class for child element: <b>OperationDefinition.parameter</b> ()
2179         *
2180     * <p>
2181     * <b>Definition:</b>
2182     * The parameters for the operation/query
2183     * </p> 
2184         */
2185        @Block()        
2186        public static class Parameter 
2187            extends  BaseIdentifiableElement        implements IResourceBlock {
2188        
2189        @Child(name="name", type=CodeDt.class, order=0, min=1, max=1, summary=false, modifier=false)    
2190        @Description(
2191                shortDefinition="",
2192                formalDefinition="The name of used to identify the parameter"
2193        )
2194        private CodeDt myName;
2195        
2196        @Child(name="use", type=CodeDt.class, order=1, min=1, max=1, summary=false, modifier=false)     
2197        @Description(
2198                shortDefinition="",
2199                formalDefinition="Whether this is an input or an output parameter"
2200        )
2201        private BoundCodeDt<OperationParameterUseEnum> myUse;
2202        
2203        @Child(name="min", type=IntegerDt.class, order=2, min=1, max=1, summary=false, modifier=false)  
2204        @Description(
2205                shortDefinition="",
2206                formalDefinition="The minimum number of times this parameter SHALL appear in the request or response"
2207        )
2208        private IntegerDt myMin;
2209        
2210        @Child(name="max", type=StringDt.class, order=3, min=1, max=1, summary=false, modifier=false)   
2211        @Description(
2212                shortDefinition="",
2213                formalDefinition="The maximum number of times this element is permitted to appear in the request or response"
2214        )
2215        private StringDt myMax;
2216        
2217        @Child(name="documentation", type=StringDt.class, order=4, min=0, max=1, summary=false, modifier=false) 
2218        @Description(
2219                shortDefinition="",
2220                formalDefinition="Describes the meaning or use of this parameter"
2221        )
2222        private StringDt myDocumentation;
2223        
2224        @Child(name="type", type=CodeDt.class, order=5, min=0, max=1, summary=false, modifier=false)    
2225        @Description(
2226                shortDefinition="",
2227                formalDefinition="The type for this parameter"
2228        )
2229        private CodeDt myType;
2230        
2231        @Child(name="profile", order=6, min=0, max=1, summary=false, modifier=false, type={
2232                ca.uhn.fhir.model.dstu2.resource.StructureDefinition.class      })
2233        @Description(
2234                shortDefinition="",
2235                formalDefinition="A profile the specifies the rules that this parameter must conform to"
2236        )
2237        private ResourceReferenceDt myProfile;
2238        
2239        @Child(name="binding", order=7, min=0, max=1, summary=false, modifier=false)    
2240        @Description(
2241                shortDefinition="",
2242                formalDefinition="Binds to a value set if this parameter is coded (code, Coding, CodeableConcept)"
2243        )
2244        private ParameterBinding myBinding;
2245        
2246        @Child(name="part", type=Parameter.class, order=8, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
2247        @Description(
2248                shortDefinition="",
2249                formalDefinition="The parts of a Tuple Parameter"
2250        )
2251        private java.util.List<Parameter> myPart;
2252        
2253
2254        @Override
2255        public boolean isEmpty() {
2256                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myUse,  myMin,  myMax,  myDocumentation,  myType,  myProfile,  myBinding,  myPart);
2257        }
2258        
2259        @Override
2260        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2261                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myUse, myMin, myMax, myDocumentation, myType, myProfile, myBinding, myPart);
2262        }
2263
2264        /**
2265         * Gets the value(s) for <b>name</b> ().
2266         * creating it if it does
2267         * not exist. Will not return <code>null</code>.
2268         *
2269     * <p>
2270     * <b>Definition:</b>
2271     * The name of used to identify the parameter
2272     * </p> 
2273         */
2274        public CodeDt getNameElement() {  
2275                if (myName == null) {
2276                        myName = new CodeDt();
2277                }
2278                return myName;
2279        }
2280
2281        
2282        /**
2283         * Gets the value(s) for <b>name</b> ().
2284         * creating it if it does
2285         * not exist. Will not return <code>null</code>.
2286         *
2287     * <p>
2288     * <b>Definition:</b>
2289     * The name of used to identify the parameter
2290     * </p> 
2291         */
2292        public String getName() {  
2293                return getNameElement().getValue();
2294        }
2295
2296        /**
2297         * Sets the value(s) for <b>name</b> ()
2298         *
2299     * <p>
2300     * <b>Definition:</b>
2301     * The name of used to identify the parameter
2302     * </p> 
2303         */
2304        public Parameter setName(CodeDt theValue) {
2305                myName = theValue;
2306                return this;
2307        }
2308        
2309        
2310
2311        /**
2312         * Sets the value for <b>name</b> ()
2313         *
2314     * <p>
2315     * <b>Definition:</b>
2316     * The name of used to identify the parameter
2317     * </p> 
2318         */
2319        public Parameter setName( String theCode) {
2320                myName = new CodeDt(theCode); 
2321                return this; 
2322        }
2323
2324 
2325        /**
2326         * Gets the value(s) for <b>use</b> ().
2327         * creating it if it does
2328         * not exist. Will not return <code>null</code>.
2329         *
2330     * <p>
2331     * <b>Definition:</b>
2332     * Whether this is an input or an output parameter
2333     * </p> 
2334         */
2335        public BoundCodeDt<OperationParameterUseEnum> getUseElement() {  
2336                if (myUse == null) {
2337                        myUse = new BoundCodeDt<OperationParameterUseEnum>(OperationParameterUseEnum.VALUESET_BINDER);
2338                }
2339                return myUse;
2340        }
2341
2342        
2343        /**
2344         * Gets the value(s) for <b>use</b> ().
2345         * creating it if it does
2346         * not exist. Will not return <code>null</code>.
2347         *
2348     * <p>
2349     * <b>Definition:</b>
2350     * Whether this is an input or an output parameter
2351     * </p> 
2352         */
2353        public String getUse() {  
2354                return getUseElement().getValue();
2355        }
2356
2357        /**
2358         * Sets the value(s) for <b>use</b> ()
2359         *
2360     * <p>
2361     * <b>Definition:</b>
2362     * Whether this is an input or an output parameter
2363     * </p> 
2364         */
2365        public Parameter setUse(BoundCodeDt<OperationParameterUseEnum> theValue) {
2366                myUse = theValue;
2367                return this;
2368        }
2369        
2370        
2371
2372        /**
2373         * Sets the value(s) for <b>use</b> ()
2374         *
2375     * <p>
2376     * <b>Definition:</b>
2377     * Whether this is an input or an output parameter
2378     * </p> 
2379         */
2380        public Parameter setUse(OperationParameterUseEnum theValue) {
2381                setUse(new BoundCodeDt<OperationParameterUseEnum>(OperationParameterUseEnum.VALUESET_BINDER, theValue));
2382                
2383/*
2384                getUseElement().setValueAsEnum(theValue);
2385*/
2386                return this;
2387        }
2388
2389  
2390        /**
2391         * Gets the value(s) for <b>min</b> ().
2392         * creating it if it does
2393         * not exist. Will not return <code>null</code>.
2394         *
2395     * <p>
2396     * <b>Definition:</b>
2397     * The minimum number of times this parameter SHALL appear in the request or response
2398     * </p> 
2399         */
2400        public IntegerDt getMinElement() {  
2401                if (myMin == null) {
2402                        myMin = new IntegerDt();
2403                }
2404                return myMin;
2405        }
2406
2407        
2408        /**
2409         * Gets the value(s) for <b>min</b> ().
2410         * creating it if it does
2411         * not exist. Will not return <code>null</code>.
2412         *
2413     * <p>
2414     * <b>Definition:</b>
2415     * The minimum number of times this parameter SHALL appear in the request or response
2416     * </p> 
2417         */
2418        public Integer getMin() {  
2419                return getMinElement().getValue();
2420        }
2421
2422        /**
2423         * Sets the value(s) for <b>min</b> ()
2424         *
2425     * <p>
2426     * <b>Definition:</b>
2427     * The minimum number of times this parameter SHALL appear in the request or response
2428     * </p> 
2429         */
2430        public Parameter setMin(IntegerDt theValue) {
2431                myMin = theValue;
2432                return this;
2433        }
2434        
2435        
2436
2437        /**
2438         * Sets the value for <b>min</b> ()
2439         *
2440     * <p>
2441     * <b>Definition:</b>
2442     * The minimum number of times this parameter SHALL appear in the request or response
2443     * </p> 
2444         */
2445        public Parameter setMin( int theInteger) {
2446                myMin = new IntegerDt(theInteger); 
2447                return this; 
2448        }
2449
2450 
2451        /**
2452         * Gets the value(s) for <b>max</b> ().
2453         * creating it if it does
2454         * not exist. Will not return <code>null</code>.
2455         *
2456     * <p>
2457     * <b>Definition:</b>
2458     * The maximum number of times this element is permitted to appear in the request or response
2459     * </p> 
2460         */
2461        public StringDt getMaxElement() {  
2462                if (myMax == null) {
2463                        myMax = new StringDt();
2464                }
2465                return myMax;
2466        }
2467
2468        
2469        /**
2470         * Gets the value(s) for <b>max</b> ().
2471         * creating it if it does
2472         * not exist. Will not return <code>null</code>.
2473         *
2474     * <p>
2475     * <b>Definition:</b>
2476     * The maximum number of times this element is permitted to appear in the request or response
2477     * </p> 
2478         */
2479        public String getMax() {  
2480                return getMaxElement().getValue();
2481        }
2482
2483        /**
2484         * Sets the value(s) for <b>max</b> ()
2485         *
2486     * <p>
2487     * <b>Definition:</b>
2488     * The maximum number of times this element is permitted to appear in the request or response
2489     * </p> 
2490         */
2491        public Parameter setMax(StringDt theValue) {
2492                myMax = theValue;
2493                return this;
2494        }
2495        
2496        
2497
2498        /**
2499         * Sets the value for <b>max</b> ()
2500         *
2501     * <p>
2502     * <b>Definition:</b>
2503     * The maximum number of times this element is permitted to appear in the request or response
2504     * </p> 
2505         */
2506        public Parameter setMax( String theString) {
2507                myMax = new StringDt(theString); 
2508                return this; 
2509        }
2510
2511 
2512        /**
2513         * Gets the value(s) for <b>documentation</b> ().
2514         * creating it if it does
2515         * not exist. Will not return <code>null</code>.
2516         *
2517     * <p>
2518     * <b>Definition:</b>
2519     * Describes the meaning or use of this parameter
2520     * </p> 
2521         */
2522        public StringDt getDocumentationElement() {  
2523                if (myDocumentation == null) {
2524                        myDocumentation = new StringDt();
2525                }
2526                return myDocumentation;
2527        }
2528
2529        
2530        /**
2531         * Gets the value(s) for <b>documentation</b> ().
2532         * creating it if it does
2533         * not exist. Will not return <code>null</code>.
2534         *
2535     * <p>
2536     * <b>Definition:</b>
2537     * Describes the meaning or use of this parameter
2538     * </p> 
2539         */
2540        public String getDocumentation() {  
2541                return getDocumentationElement().getValue();
2542        }
2543
2544        /**
2545         * Sets the value(s) for <b>documentation</b> ()
2546         *
2547     * <p>
2548     * <b>Definition:</b>
2549     * Describes the meaning or use of this parameter
2550     * </p> 
2551         */
2552        public Parameter setDocumentation(StringDt theValue) {
2553                myDocumentation = theValue;
2554                return this;
2555        }
2556        
2557        
2558
2559        /**
2560         * Sets the value for <b>documentation</b> ()
2561         *
2562     * <p>
2563     * <b>Definition:</b>
2564     * Describes the meaning or use of this parameter
2565     * </p> 
2566         */
2567        public Parameter setDocumentation( String theString) {
2568                myDocumentation = new StringDt(theString); 
2569                return this; 
2570        }
2571
2572 
2573        /**
2574         * Gets the value(s) for <b>type</b> ().
2575         * creating it if it does
2576         * not exist. Will not return <code>null</code>.
2577         *
2578     * <p>
2579     * <b>Definition:</b>
2580     * The type for this parameter
2581     * </p> 
2582         */
2583        public CodeDt getTypeElement() {  
2584                if (myType == null) {
2585                        myType = new CodeDt();
2586                }
2587                return myType;
2588        }
2589
2590        
2591        /**
2592         * Gets the value(s) for <b>type</b> ().
2593         * creating it if it does
2594         * not exist. Will not return <code>null</code>.
2595         *
2596     * <p>
2597     * <b>Definition:</b>
2598     * The type for this parameter
2599     * </p> 
2600         */
2601        public String getType() {  
2602                return getTypeElement().getValue();
2603        }
2604
2605        /**
2606         * Sets the value(s) for <b>type</b> ()
2607         *
2608     * <p>
2609     * <b>Definition:</b>
2610     * The type for this parameter
2611     * </p> 
2612         */
2613        public Parameter setType(CodeDt theValue) {
2614                myType = theValue;
2615                return this;
2616        }
2617        
2618        
2619
2620        /**
2621         * Sets the value for <b>type</b> ()
2622         *
2623     * <p>
2624     * <b>Definition:</b>
2625     * The type for this parameter
2626     * </p> 
2627         */
2628        public Parameter setType( String theCode) {
2629                myType = new CodeDt(theCode); 
2630                return this; 
2631        }
2632
2633 
2634        /**
2635         * Gets the value(s) for <b>profile</b> ().
2636         * creating it if it does
2637         * not exist. Will not return <code>null</code>.
2638         *
2639     * <p>
2640     * <b>Definition:</b>
2641     * A profile the specifies the rules that this parameter must conform to
2642     * </p> 
2643         */
2644        public ResourceReferenceDt getProfile() {  
2645                if (myProfile == null) {
2646                        myProfile = new ResourceReferenceDt();
2647                }
2648                return myProfile;
2649        }
2650
2651        /**
2652         * Sets the value(s) for <b>profile</b> ()
2653         *
2654     * <p>
2655     * <b>Definition:</b>
2656     * A profile the specifies the rules that this parameter must conform to
2657     * </p> 
2658         */
2659        public Parameter setProfile(ResourceReferenceDt theValue) {
2660                myProfile = theValue;
2661                return this;
2662        }
2663        
2664        
2665
2666  
2667        /**
2668         * Gets the value(s) for <b>binding</b> ().
2669         * creating it if it does
2670         * not exist. Will not return <code>null</code>.
2671         *
2672     * <p>
2673     * <b>Definition:</b>
2674     * Binds to a value set if this parameter is coded (code, Coding, CodeableConcept)
2675     * </p> 
2676         */
2677        public ParameterBinding getBinding() {  
2678                if (myBinding == null) {
2679                        myBinding = new ParameterBinding();
2680                }
2681                return myBinding;
2682        }
2683
2684        /**
2685         * Sets the value(s) for <b>binding</b> ()
2686         *
2687     * <p>
2688     * <b>Definition:</b>
2689     * Binds to a value set if this parameter is coded (code, Coding, CodeableConcept)
2690     * </p> 
2691         */
2692        public Parameter setBinding(ParameterBinding theValue) {
2693                myBinding = theValue;
2694                return this;
2695        }
2696        
2697        
2698
2699  
2700        /**
2701         * Gets the value(s) for <b>part</b> ().
2702         * creating it if it does
2703         * not exist. Will not return <code>null</code>.
2704         *
2705     * <p>
2706     * <b>Definition:</b>
2707     * The parts of a Tuple Parameter
2708     * </p> 
2709         */
2710        public java.util.List<Parameter> getPart() {  
2711                if (myPart == null) {
2712                        myPart = new java.util.ArrayList<Parameter>();
2713                }
2714                return myPart;
2715        }
2716
2717        /**
2718         * Sets the value(s) for <b>part</b> ()
2719         *
2720     * <p>
2721     * <b>Definition:</b>
2722     * The parts of a Tuple Parameter
2723     * </p> 
2724         */
2725        public Parameter setPart(java.util.List<Parameter> theValue) {
2726                myPart = theValue;
2727                return this;
2728        }
2729        
2730        
2731
2732        /**
2733         * Adds and returns a new value for <b>part</b> ()
2734         *
2735     * <p>
2736     * <b>Definition:</b>
2737     * The parts of a Tuple Parameter
2738     * </p> 
2739         */
2740        public Parameter addPart() {
2741                Parameter newType = new Parameter();
2742                getPart().add(newType);
2743                return newType; 
2744        }
2745
2746        /**
2747         * Adds a given new value for <b>part</b> ()
2748         *
2749         * <p>
2750         * <b>Definition:</b>
2751         * The parts of a Tuple Parameter
2752         * </p>
2753         * @param theValue The part to add (must not be <code>null</code>)
2754         */
2755        public Parameter addPart(Parameter theValue) {
2756                if (theValue == null) {
2757                        throw new NullPointerException("theValue must not be null");
2758                }
2759                getPart().add(theValue);
2760                return this;
2761        }
2762
2763        /**
2764         * Gets the first repetition for <b>part</b> (),
2765         * creating it if it does not already exist.
2766         *
2767     * <p>
2768     * <b>Definition:</b>
2769     * The parts of a Tuple Parameter
2770     * </p> 
2771         */
2772        public Parameter getPartFirstRep() {
2773                if (getPart().isEmpty()) {
2774                        return addPart();
2775                }
2776                return getPart().get(0); 
2777        }
2778  
2779
2780
2781        }
2782
2783        /**
2784         * Block class for child element: <b>OperationDefinition.parameter.binding</b> ()
2785         *
2786     * <p>
2787     * <b>Definition:</b>
2788     * Binds to a value set if this parameter is coded (code, Coding, CodeableConcept)
2789     * </p> 
2790         */
2791        @Block()        
2792        public static class ParameterBinding 
2793            extends  BaseIdentifiableElement        implements IResourceBlock {
2794        
2795        @Child(name="strength", type=CodeDt.class, order=0, min=1, max=1, summary=false, modifier=false)        
2796        @Description(
2797                shortDefinition="",
2798                formalDefinition="Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances"
2799        )
2800        private BoundCodeDt<BindingStrengthEnum> myStrength;
2801        
2802        @Child(name="valueSet", order=1, min=1, max=1, summary=false, modifier=false, type={
2803                UriDt.class,            ValueSet.class  })
2804        @Description(
2805                shortDefinition="",
2806                formalDefinition="Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used"
2807        )
2808        private IDatatype myValueSet;
2809        
2810
2811        @Override
2812        public boolean isEmpty() {
2813                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myStrength,  myValueSet);
2814        }
2815        
2816        @Override
2817        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2818                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myStrength, myValueSet);
2819        }
2820
2821        /**
2822         * Gets the value(s) for <b>strength</b> ().
2823         * creating it if it does
2824         * not exist. Will not return <code>null</code>.
2825         *
2826     * <p>
2827     * <b>Definition:</b>
2828     * Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances
2829     * </p> 
2830         */
2831        public BoundCodeDt<BindingStrengthEnum> getStrengthElement() {  
2832                if (myStrength == null) {
2833                        myStrength = new BoundCodeDt<BindingStrengthEnum>(BindingStrengthEnum.VALUESET_BINDER);
2834                }
2835                return myStrength;
2836        }
2837
2838        
2839        /**
2840         * Gets the value(s) for <b>strength</b> ().
2841         * creating it if it does
2842         * not exist. Will not return <code>null</code>.
2843         *
2844     * <p>
2845     * <b>Definition:</b>
2846     * Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances
2847     * </p> 
2848         */
2849        public String getStrength() {  
2850                return getStrengthElement().getValue();
2851        }
2852
2853        /**
2854         * Sets the value(s) for <b>strength</b> ()
2855         *
2856     * <p>
2857     * <b>Definition:</b>
2858     * Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances
2859     * </p> 
2860         */
2861        public ParameterBinding setStrength(BoundCodeDt<BindingStrengthEnum> theValue) {
2862                myStrength = theValue;
2863                return this;
2864        }
2865        
2866        
2867
2868        /**
2869         * Sets the value(s) for <b>strength</b> ()
2870         *
2871     * <p>
2872     * <b>Definition:</b>
2873     * Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances
2874     * </p> 
2875         */
2876        public ParameterBinding setStrength(BindingStrengthEnum theValue) {
2877                setStrength(new BoundCodeDt<BindingStrengthEnum>(BindingStrengthEnum.VALUESET_BINDER, theValue));
2878                
2879/*
2880                getStrengthElement().setValueAsEnum(theValue);
2881*/
2882                return this;
2883        }
2884
2885  
2886        /**
2887         * Gets the value(s) for <b>valueSet[x]</b> ().
2888         * creating it if it does
2889         * not exist. Will not return <code>null</code>.
2890         *
2891     * <p>
2892     * <b>Definition:</b>
2893     * Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used
2894     * </p> 
2895         */
2896        public IDatatype getValueSet() {  
2897                return myValueSet;
2898        }
2899
2900        /**
2901         * Sets the value(s) for <b>valueSet[x]</b> ()
2902         *
2903     * <p>
2904     * <b>Definition:</b>
2905     * Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used
2906     * </p> 
2907         */
2908        public ParameterBinding setValueSet(IDatatype theValue) {
2909                myValueSet = theValue;
2910                return this;
2911        }
2912        
2913        
2914
2915  
2916
2917
2918        }
2919
2920
2921
2922
2923
2924    @Override
2925    public String getResourceName() {
2926        return "OperationDefinition";
2927    }
2928    
2929    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
2930        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
2931    }
2932
2933
2934}