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