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         * Search parameter constant for <b>url</b>
306         * <p>
307         * Description: <b></b><br>
308         * Type: <b>uri</b><br>
309         * Path: <b>OperationDefinition.url</b><br>
310         * </p>
311         */
312        @SearchParamDefinition(name="url", path="OperationDefinition.url", description="", type="uri"  )
313        public static final String SP_URL = "url";
314
315        /**
316         * <b>Fluent Client</b> search parameter constant for <b>url</b>
317         * <p>
318         * Description: <b></b><br>
319         * Type: <b>uri</b><br>
320         * Path: <b>OperationDefinition.url</b><br>
321         * </p>
322         */
323        public static final UriClientParam URL = new UriClientParam(SP_URL);
324
325        /**
326         * Search parameter constant for <b>version</b>
327         * <p>
328         * Description: <b></b><br>
329         * Type: <b>token</b><br>
330         * Path: <b>OperationDefinition.version</b><br>
331         * </p>
332         */
333        @SearchParamDefinition(name="version", path="OperationDefinition.version", description="", type="token"  )
334        public static final String SP_VERSION = "version";
335
336        /**
337         * <b>Fluent Client</b> search parameter constant for <b>version</b>
338         * <p>
339         * Description: <b></b><br>
340         * Type: <b>token</b><br>
341         * Path: <b>OperationDefinition.version</b><br>
342         * </p>
343         */
344        public static final TokenClientParam VERSION = new TokenClientParam(SP_VERSION);
345
346        /**
347         * Search parameter constant for <b>name</b>
348         * <p>
349         * Description: <b></b><br>
350         * Type: <b>string</b><br>
351         * Path: <b>OperationDefinition.name</b><br>
352         * </p>
353         */
354        @SearchParamDefinition(name="name", path="OperationDefinition.name", description="", type="string"  )
355        public static final String SP_NAME = "name";
356
357        /**
358         * <b>Fluent Client</b> search parameter constant for <b>name</b>
359         * <p>
360         * Description: <b></b><br>
361         * Type: <b>string</b><br>
362         * Path: <b>OperationDefinition.name</b><br>
363         * </p>
364         */
365        public static final StringClientParam NAME = new StringClientParam(SP_NAME);
366
367        /**
368         * Search parameter constant for <b>publisher</b>
369         * <p>
370         * Description: <b></b><br>
371         * Type: <b>string</b><br>
372         * Path: <b>OperationDefinition.publisher</b><br>
373         * </p>
374         */
375        @SearchParamDefinition(name="publisher", path="OperationDefinition.publisher", description="", type="string"  )
376        public static final String SP_PUBLISHER = "publisher";
377
378        /**
379         * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
380         * <p>
381         * Description: <b></b><br>
382         * Type: <b>string</b><br>
383         * Path: <b>OperationDefinition.publisher</b><br>
384         * </p>
385         */
386        public static final StringClientParam PUBLISHER = new StringClientParam(SP_PUBLISHER);
387
388        /**
389         * Search parameter constant for <b>code</b>
390         * <p>
391         * Description: <b></b><br>
392         * Type: <b>token</b><br>
393         * Path: <b>OperationDefinition.code</b><br>
394         * </p>
395         */
396        @SearchParamDefinition(name="code", path="OperationDefinition.code", description="", type="token"  )
397        public static final String SP_CODE = "code";
398
399        /**
400         * <b>Fluent Client</b> search parameter constant for <b>code</b>
401         * <p>
402         * Description: <b></b><br>
403         * Type: <b>token</b><br>
404         * Path: <b>OperationDefinition.code</b><br>
405         * </p>
406         */
407        public static final TokenClientParam CODE = new TokenClientParam(SP_CODE);
408
409        /**
410         * Search parameter constant for <b>status</b>
411         * <p>
412         * Description: <b></b><br>
413         * Type: <b>token</b><br>
414         * Path: <b>OperationDefinition.status</b><br>
415         * </p>
416         */
417        @SearchParamDefinition(name="status", path="OperationDefinition.status", description="", type="token"  )
418        public static final String SP_STATUS = "status";
419
420        /**
421         * <b>Fluent Client</b> search parameter constant for <b>status</b>
422         * <p>
423         * Description: <b></b><br>
424         * Type: <b>token</b><br>
425         * Path: <b>OperationDefinition.status</b><br>
426         * </p>
427         */
428        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
429
430        /**
431         * Search parameter constant for <b>date</b>
432         * <p>
433         * Description: <b></b><br>
434         * Type: <b>date</b><br>
435         * Path: <b>OperationDefinition.date</b><br>
436         * </p>
437         */
438        @SearchParamDefinition(name="date", path="OperationDefinition.date", description="", type="date"  )
439        public static final String SP_DATE = "date";
440
441        /**
442         * <b>Fluent Client</b> search parameter constant for <b>date</b>
443         * <p>
444         * Description: <b></b><br>
445         * Type: <b>date</b><br>
446         * Path: <b>OperationDefinition.date</b><br>
447         * </p>
448         */
449        public static final DateClientParam DATE = new DateClientParam(SP_DATE);
450
451        /**
452         * Search parameter constant for <b>kind</b>
453         * <p>
454         * Description: <b></b><br>
455         * Type: <b>token</b><br>
456         * Path: <b>OperationDefinition.kind</b><br>
457         * </p>
458         */
459        @SearchParamDefinition(name="kind", path="OperationDefinition.kind", description="", type="token"  )
460        public static final String SP_KIND = "kind";
461
462        /**
463         * <b>Fluent Client</b> search parameter constant for <b>kind</b>
464         * <p>
465         * Description: <b></b><br>
466         * Type: <b>token</b><br>
467         * Path: <b>OperationDefinition.kind</b><br>
468         * </p>
469         */
470        public static final TokenClientParam KIND = new TokenClientParam(SP_KIND);
471
472        /**
473         * Search parameter constant for <b>base</b>
474         * <p>
475         * Description: <b></b><br>
476         * Type: <b>reference</b><br>
477         * Path: <b>OperationDefinition.base</b><br>
478         * </p>
479         */
480        @SearchParamDefinition(name="base", path="OperationDefinition.base", description="", type="reference"  )
481        public static final String SP_BASE = "base";
482
483        /**
484         * <b>Fluent Client</b> search parameter constant for <b>base</b>
485         * <p>
486         * Description: <b></b><br>
487         * Type: <b>reference</b><br>
488         * Path: <b>OperationDefinition.base</b><br>
489         * </p>
490         */
491        public static final ReferenceClientParam BASE = new ReferenceClientParam(SP_BASE);
492
493        /**
494         * Search parameter constant for <b>system</b>
495         * <p>
496         * Description: <b></b><br>
497         * Type: <b>token</b><br>
498         * Path: <b>OperationDefinition.system</b><br>
499         * </p>
500         */
501        @SearchParamDefinition(name="system", path="OperationDefinition.system", description="", type="token"  )
502        public static final String SP_SYSTEM = "system";
503
504        /**
505         * <b>Fluent Client</b> search parameter constant for <b>system</b>
506         * <p>
507         * Description: <b></b><br>
508         * Type: <b>token</b><br>
509         * Path: <b>OperationDefinition.system</b><br>
510         * </p>
511         */
512        public static final TokenClientParam SYSTEM = new TokenClientParam(SP_SYSTEM);
513
514        /**
515         * Search parameter constant for <b>type</b>
516         * <p>
517         * Description: <b></b><br>
518         * Type: <b>token</b><br>
519         * Path: <b>OperationDefinition.type</b><br>
520         * </p>
521         */
522        @SearchParamDefinition(name="type", path="OperationDefinition.type", description="", type="token"  )
523        public static final String SP_TYPE = "type";
524
525        /**
526         * <b>Fluent Client</b> 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        public static final TokenClientParam TYPE = new TokenClientParam(SP_TYPE);
534
535        /**
536         * Search parameter constant for <b>instance</b>
537         * <p>
538         * Description: <b></b><br>
539         * Type: <b>token</b><br>
540         * Path: <b>OperationDefinition.instance</b><br>
541         * </p>
542         */
543        @SearchParamDefinition(name="instance", path="OperationDefinition.instance", description="", type="token"  )
544        public static final String SP_INSTANCE = "instance";
545
546        /**
547         * <b>Fluent Client</b> search parameter constant for <b>instance</b>
548         * <p>
549         * Description: <b></b><br>
550         * Type: <b>token</b><br>
551         * Path: <b>OperationDefinition.instance</b><br>
552         * </p>
553         */
554        public static final TokenClientParam INSTANCE = new TokenClientParam(SP_INSTANCE);
555
556        /**
557         * Search parameter constant for <b>profile</b>
558         * <p>
559         * Description: <b></b><br>
560         * Type: <b>reference</b><br>
561         * Path: <b>OperationDefinition.parameter.profile</b><br>
562         * </p>
563         */
564        @SearchParamDefinition(name="profile", path="OperationDefinition.parameter.profile", description="", type="reference"  )
565        public static final String SP_PROFILE = "profile";
566
567        /**
568         * <b>Fluent Client</b> search parameter constant for <b>profile</b>
569         * <p>
570         * Description: <b></b><br>
571         * Type: <b>reference</b><br>
572         * Path: <b>OperationDefinition.parameter.profile</b><br>
573         * </p>
574         */
575        public static final ReferenceClientParam PROFILE = new ReferenceClientParam(SP_PROFILE);
576
577
578        /**
579         * Constant for fluent queries to be used to add include statements. Specifies
580         * the path value of "<b>OperationDefinition:base</b>".
581         */
582        public static final Include INCLUDE_BASE = new Include("OperationDefinition:base");
583
584        /**
585         * Constant for fluent queries to be used to add include statements. Specifies
586         * the path value of "<b>OperationDefinition:profile</b>".
587         */
588        public static final Include INCLUDE_PROFILE = new Include("OperationDefinition:profile");
589
590
591        @Child(name="url", type=UriDt.class, order=0, min=0, max=1, summary=false, modifier=false)      
592        @Description(
593                shortDefinition="id",
594                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"
595        )
596        private UriDt myUrl;
597        
598        @Child(name="version", type=StringDt.class, order=1, min=0, max=1, summary=false, modifier=false)       
599        @Description(
600                shortDefinition="id.version",
601                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"
602        )
603        private StringDt myVersion;
604        
605        @Child(name="name", type=StringDt.class, order=2, min=1, max=1, summary=false, modifier=false)  
606        @Description(
607                shortDefinition="",
608                formalDefinition="A free text natural language name identifying the operation"
609        )
610        private StringDt myName;
611        
612        @Child(name="status", type=CodeDt.class, order=3, min=1, max=1, summary=false, modifier=false)  
613        @Description(
614                shortDefinition="status",
615                formalDefinition="The status of the profile"
616        )
617        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/conformance-resource-status")
618        private BoundCodeDt<ConformanceResourceStatusEnum> myStatus;
619        
620        @Child(name="kind", type=CodeDt.class, order=4, min=1, max=1, summary=false, modifier=false)    
621        @Description(
622                shortDefinition="class",
623                formalDefinition="Whether this is an operation or a named query"
624        )
625        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/operation-kind")
626        private BoundCodeDt<OperationKindEnum> myKind;
627        
628        @Child(name="experimental", type=BooleanDt.class, order=5, min=0, max=1, summary=false, modifier=false) 
629        @Description(
630                shortDefinition="",
631                formalDefinition="This profile was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage"
632        )
633        private BooleanDt myExperimental;
634        
635        @Child(name="publisher", type=StringDt.class, order=6, min=0, max=1, summary=true, modifier=false)      
636        @Description(
637                shortDefinition="who.witness",
638                formalDefinition="The name of the individual or organization that published the operation definition"
639        )
640        private StringDt myPublisher;
641        
642        @Child(name="contact", order=7, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
643        @Description(
644                shortDefinition="",
645                formalDefinition="Contacts to assist a user in finding and communicating with the publisher"
646        )
647        private java.util.List<Contact> myContact;
648        
649        @Child(name="date", type=DateTimeDt.class, order=8, min=0, max=1, summary=false, modifier=false)        
650        @Description(
651                shortDefinition="when.recorded",
652                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"
653        )
654        private DateTimeDt myDate;
655        
656        @Child(name="description", type=StringDt.class, order=9, min=0, max=1, summary=false, modifier=false)   
657        @Description(
658                shortDefinition="",
659                formalDefinition="A free text natural language description of the profile and its use"
660        )
661        private StringDt myDescription;
662        
663        @Child(name="requirements", type=StringDt.class, order=10, min=0, max=1, summary=false, modifier=false) 
664        @Description(
665                shortDefinition="",
666                formalDefinition="Explains why this operation definition is needed and why it's been constrained as it has"
667        )
668        private StringDt myRequirements;
669        
670        @Child(name="idempotent", type=BooleanDt.class, order=11, min=0, max=1, summary=false, modifier=false)  
671        @Description(
672                shortDefinition="",
673                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"
674        )
675        private BooleanDt myIdempotent;
676        
677        @Child(name="code", type=CodeDt.class, order=12, min=1, max=1, summary=false, modifier=false)   
678        @Description(
679                shortDefinition="",
680                formalDefinition="The name used to invoke the operation"
681        )
682        private CodeDt myCode;
683        
684        @Child(name="notes", type=StringDt.class, order=13, min=0, max=1, summary=false, modifier=false)        
685        @Description(
686                shortDefinition="",
687                formalDefinition="Additional information about how to use this operation or named query"
688        )
689        private StringDt myNotes;
690        
691        @Child(name="base", order=14, min=0, max=1, summary=false, modifier=false, type={
692                ca.uhn.fhir.model.dstu2.resource.OperationDefinition.class      })
693        @Description(
694                shortDefinition="",
695                formalDefinition="Indicates that this operation definition is a constraining profile on the base"
696        )
697        private ResourceReferenceDt myBase;
698        
699        @Child(name="system", type=BooleanDt.class, order=15, min=1, max=1, summary=false, modifier=false)      
700        @Description(
701                shortDefinition="",
702                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)"
703        )
704        private BooleanDt mySystem;
705        
706        @Child(name="type", type=CodeDt.class, order=16, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
707        @Description(
708                shortDefinition="",
709                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)"
710        )
711        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/resource-types")
712        private java.util.List<BoundCodeDt<ResourceTypeEnum>> myType;
713        
714        @Child(name="instance", type=BooleanDt.class, order=17, min=1, max=1, summary=false, modifier=false)    
715        @Description(
716                shortDefinition="",
717                formalDefinition="Indicates whether this operation can be invoked on a particular instance of one of the given types"
718        )
719        private BooleanDt myInstance;
720        
721        @Child(name="parameter", order=18, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
722        @Description(
723                shortDefinition="",
724                formalDefinition="The parameters for the operation/query"
725        )
726        private java.util.List<Parameter> myParameter;
727        
728
729        @Override
730        public boolean isEmpty() {
731                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);
732        }
733        
734        @Override
735        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
736                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);
737        }
738
739        /**
740         * Gets the value(s) for <b>url</b> (id).
741         * creating it if it does
742         * not exist. Will not return <code>null</code>.
743         *
744     * <p>
745     * <b>Definition:</b>
746     * 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
747     * </p> 
748         */
749        public UriDt getUrlElement() {  
750                if (myUrl == null) {
751                        myUrl = new UriDt();
752                }
753                return myUrl;
754        }
755
756        
757        /**
758         * Gets the value(s) for <b>url</b> (id).
759         * creating it if it does
760         * not exist. This method may return <code>null</code>.
761         *
762     * <p>
763     * <b>Definition:</b>
764     * 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
765     * </p> 
766         */
767        public String getUrl() {  
768                return getUrlElement().getValue();
769        }
770
771        /**
772         * Sets the value(s) for <b>url</b> (id)
773         *
774     * <p>
775     * <b>Definition:</b>
776     * 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
777     * </p> 
778         */
779        public OperationDefinition setUrl(UriDt theValue) {
780                myUrl = theValue;
781                return this;
782        }
783        
784        
785
786        /**
787         * Sets the value 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( String theUri) {
795                myUrl = new UriDt(theUri); 
796                return this; 
797        }
798
799 
800        /**
801         * Gets the value(s) for <b>version</b> (id.version).
802         * creating it if it does
803         * not exist. Will not return <code>null</code>.
804         *
805     * <p>
806     * <b>Definition:</b>
807     * 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
808     * </p> 
809         */
810        public StringDt getVersionElement() {  
811                if (myVersion == null) {
812                        myVersion = new StringDt();
813                }
814                return myVersion;
815        }
816
817        
818        /**
819         * Gets the value(s) for <b>version</b> (id.version).
820         * creating it if it does
821         * not exist. This method may return <code>null</code>.
822         *
823     * <p>
824     * <b>Definition:</b>
825     * 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
826     * </p> 
827         */
828        public String getVersion() {  
829                return getVersionElement().getValue();
830        }
831
832        /**
833         * Sets the value(s) for <b>version</b> (id.version)
834         *
835     * <p>
836     * <b>Definition:</b>
837     * 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
838     * </p> 
839         */
840        public OperationDefinition setVersion(StringDt theValue) {
841                myVersion = theValue;
842                return this;
843        }
844        
845        
846
847        /**
848         * Sets the value 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( String theString) {
856                myVersion = new StringDt(theString); 
857                return this; 
858        }
859
860 
861        /**
862         * Gets the value(s) for <b>name</b> ().
863         * creating it if it does
864         * not exist. Will not return <code>null</code>.
865         *
866     * <p>
867     * <b>Definition:</b>
868     * A free text natural language name identifying the operation
869     * </p> 
870         */
871        public StringDt getNameElement() {  
872                if (myName == null) {
873                        myName = new StringDt();
874                }
875                return myName;
876        }
877
878        
879        /**
880         * Gets the value(s) for <b>name</b> ().
881         * creating it if it does
882         * not exist. This method may return <code>null</code>.
883         *
884     * <p>
885     * <b>Definition:</b>
886     * A free text natural language name identifying the operation
887     * </p> 
888         */
889        public String getName() {  
890                return getNameElement().getValue();
891        }
892
893        /**
894         * Sets the value(s) for <b>name</b> ()
895         *
896     * <p>
897     * <b>Definition:</b>
898     * A free text natural language name identifying the operation
899     * </p> 
900         */
901        public OperationDefinition setName(StringDt theValue) {
902                myName = theValue;
903                return this;
904        }
905        
906        
907
908        /**
909         * Sets the value 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( String theString) {
917                myName = new StringDt(theString); 
918                return this; 
919        }
920
921 
922        /**
923         * Gets the value(s) for <b>status</b> (status).
924         * creating it if it does
925         * not exist. Will not return <code>null</code>.
926         *
927     * <p>
928     * <b>Definition:</b>
929     * The status of the profile
930     * </p> 
931         */
932        public BoundCodeDt<ConformanceResourceStatusEnum> getStatusElement() {  
933                if (myStatus == null) {
934                        myStatus = new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER);
935                }
936                return myStatus;
937        }
938
939        
940        /**
941         * Gets the value(s) for <b>status</b> (status).
942         * creating it if it does
943         * not exist. This method may return <code>null</code>.
944         *
945     * <p>
946     * <b>Definition:</b>
947     * The status of the profile
948     * </p> 
949         */
950        public String getStatus() {  
951                return getStatusElement().getValue();
952        }
953
954        /**
955         * Sets the value(s) for <b>status</b> (status)
956         *
957     * <p>
958     * <b>Definition:</b>
959     * The status of the profile
960     * </p> 
961         */
962        public OperationDefinition setStatus(BoundCodeDt<ConformanceResourceStatusEnum> theValue) {
963                myStatus = theValue;
964                return this;
965        }
966        
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(ConformanceResourceStatusEnum theValue) {
978                setStatus(new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER, theValue));
979                
980/*
981                getStatusElement().setValueAsEnum(theValue);
982*/
983                return this;
984        }
985
986  
987        /**
988         * Gets the value(s) for <b>kind</b> (class).
989         * creating it if it does
990         * not exist. Will not return <code>null</code>.
991         *
992     * <p>
993     * <b>Definition:</b>
994     * Whether this is an operation or a named query
995     * </p> 
996         */
997        public BoundCodeDt<OperationKindEnum> getKindElement() {  
998                if (myKind == null) {
999                        myKind = new BoundCodeDt<OperationKindEnum>(OperationKindEnum.VALUESET_BINDER);
1000                }
1001                return myKind;
1002        }
1003
1004        
1005        /**
1006         * Gets the value(s) for <b>kind</b> (class).
1007         * creating it if it does
1008         * not exist. This method may return <code>null</code>.
1009         *
1010     * <p>
1011     * <b>Definition:</b>
1012     * Whether this is an operation or a named query
1013     * </p> 
1014         */
1015        public String getKind() {  
1016                return getKindElement().getValue();
1017        }
1018
1019        /**
1020         * Sets the value(s) for <b>kind</b> (class)
1021         *
1022     * <p>
1023     * <b>Definition:</b>
1024     * Whether this is an operation or a named query
1025     * </p> 
1026         */
1027        public OperationDefinition setKind(BoundCodeDt<OperationKindEnum> theValue) {
1028                myKind = theValue;
1029                return this;
1030        }
1031        
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(OperationKindEnum theValue) {
1043                setKind(new BoundCodeDt<OperationKindEnum>(OperationKindEnum.VALUESET_BINDER, theValue));
1044                
1045/*
1046                getKindElement().setValueAsEnum(theValue);
1047*/
1048                return this;
1049        }
1050
1051  
1052        /**
1053         * Gets the value(s) for <b>experimental</b> ().
1054         * creating it if it does
1055         * not exist. Will not return <code>null</code>.
1056         *
1057     * <p>
1058     * <b>Definition:</b>
1059     * This profile was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1060     * </p> 
1061         */
1062        public BooleanDt getExperimentalElement() {  
1063                if (myExperimental == null) {
1064                        myExperimental = new BooleanDt();
1065                }
1066                return myExperimental;
1067        }
1068
1069        
1070        /**
1071         * Gets the value(s) for <b>experimental</b> ().
1072         * creating it if it does
1073         * not exist. This method may return <code>null</code>.
1074         *
1075     * <p>
1076     * <b>Definition:</b>
1077     * This profile was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1078     * </p> 
1079         */
1080        public Boolean getExperimental() {  
1081                return getExperimentalElement().getValue();
1082        }
1083
1084        /**
1085         * Sets the value(s) for <b>experimental</b> ()
1086         *
1087     * <p>
1088     * <b>Definition:</b>
1089     * This profile was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
1090     * </p> 
1091         */
1092        public OperationDefinition setExperimental(BooleanDt theValue) {
1093                myExperimental = theValue;
1094                return this;
1095        }
1096        
1097        
1098
1099        /**
1100         * Sets the value 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( boolean theBoolean) {
1108                myExperimental = new BooleanDt(theBoolean); 
1109                return this; 
1110        }
1111
1112 
1113        /**
1114         * Gets the value(s) for <b>publisher</b> (who.witness).
1115         * creating it if it does
1116         * not exist. Will not return <code>null</code>.
1117         *
1118     * <p>
1119     * <b>Definition:</b>
1120     * The name of the individual or organization that published the operation definition
1121     * </p> 
1122         */
1123        public StringDt getPublisherElement() {  
1124                if (myPublisher == null) {
1125                        myPublisher = new StringDt();
1126                }
1127                return myPublisher;
1128        }
1129
1130        
1131        /**
1132         * Gets the value(s) for <b>publisher</b> (who.witness).
1133         * creating it if it does
1134         * not exist. This method may return <code>null</code>.
1135         *
1136     * <p>
1137     * <b>Definition:</b>
1138     * The name of the individual or organization that published the operation definition
1139     * </p> 
1140         */
1141        public String getPublisher() {  
1142                return getPublisherElement().getValue();
1143        }
1144
1145        /**
1146         * Sets the value(s) for <b>publisher</b> (who.witness)
1147         *
1148     * <p>
1149     * <b>Definition:</b>
1150     * The name of the individual or organization that published the operation definition
1151     * </p> 
1152         */
1153        public OperationDefinition setPublisher(StringDt theValue) {
1154                myPublisher = theValue;
1155                return this;
1156        }
1157        
1158        
1159
1160        /**
1161         * Sets the value 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( String theString) {
1169                myPublisher = new StringDt(theString); 
1170                return this; 
1171        }
1172
1173 
1174        /**
1175         * Gets the value(s) for <b>contact</b> ().
1176         * creating it if it does
1177         * not exist. Will not return <code>null</code>.
1178         *
1179     * <p>
1180     * <b>Definition:</b>
1181     * Contacts to assist a user in finding and communicating with the publisher
1182     * </p> 
1183         */
1184        public java.util.List<Contact> getContact() {  
1185                if (myContact == null) {
1186                        myContact = new java.util.ArrayList<Contact>();
1187                }
1188                return myContact;
1189        }
1190
1191        /**
1192         * Sets the value(s) for <b>contact</b> ()
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 OperationDefinition setContact(java.util.List<Contact> theValue) {
1200                myContact = theValue;
1201                return this;
1202        }
1203        
1204        
1205
1206        /**
1207         * Adds and returns a new value 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 Contact addContact() {
1215                Contact newType = new Contact();
1216                getContact().add(newType);
1217                return newType; 
1218        }
1219
1220        /**
1221         * Adds a given new value for <b>contact</b> ()
1222         *
1223         * <p>
1224         * <b>Definition:</b>
1225         * Contacts to assist a user in finding and communicating with the publisher
1226         * </p>
1227         * @param theValue The contact to add (must not be <code>null</code>)
1228         */
1229        public OperationDefinition addContact(Contact theValue) {
1230                if (theValue == null) {
1231                        throw new NullPointerException("theValue must not be null");
1232                }
1233                getContact().add(theValue);
1234                return this;
1235        }
1236
1237        /**
1238         * Gets the first repetition for <b>contact</b> (),
1239         * creating it if it does not already exist.
1240         *
1241     * <p>
1242     * <b>Definition:</b>
1243     * Contacts to assist a user in finding and communicating with the publisher
1244     * </p> 
1245         */
1246        public Contact getContactFirstRep() {
1247                if (getContact().isEmpty()) {
1248                        return addContact();
1249                }
1250                return getContact().get(0); 
1251        }
1252  
1253        /**
1254         * Gets the value(s) for <b>date</b> (when.recorded).
1255         * creating it if it does
1256         * not exist. Will not return <code>null</code>.
1257         *
1258     * <p>
1259     * <b>Definition:</b>
1260     * 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
1261     * </p> 
1262         */
1263        public DateTimeDt getDateElement() {  
1264                if (myDate == null) {
1265                        myDate = new DateTimeDt();
1266                }
1267                return myDate;
1268        }
1269
1270        
1271        /**
1272         * Gets the value(s) for <b>date</b> (when.recorded).
1273         * creating it if it does
1274         * not exist. This method may return <code>null</code>.
1275         *
1276     * <p>
1277     * <b>Definition:</b>
1278     * 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
1279     * </p> 
1280         */
1281        public Date getDate() {  
1282                return getDateElement().getValue();
1283        }
1284
1285        /**
1286         * Sets the value(s) for <b>date</b> (when.recorded)
1287         *
1288     * <p>
1289     * <b>Definition:</b>
1290     * 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
1291     * </p> 
1292         */
1293        public OperationDefinition setDate(DateTimeDt theValue) {
1294                myDate = theValue;
1295                return this;
1296        }
1297        
1298        
1299
1300        /**
1301         * Sets the value 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( Date theDate,  TemporalPrecisionEnum thePrecision) {
1309                myDate = new DateTimeDt(theDate, thePrecision); 
1310                return this; 
1311        }
1312
1313        /**
1314         * Sets the value for <b>date</b> (when.recorded)
1315         *
1316     * <p>
1317     * <b>Definition:</b>
1318     * 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
1319     * </p> 
1320         */
1321        public OperationDefinition setDateWithSecondsPrecision( Date theDate) {
1322                myDate = new DateTimeDt(theDate); 
1323                return this; 
1324        }
1325
1326 
1327        /**
1328         * Gets the value(s) for <b>description</b> ().
1329         * creating it if it does
1330         * not exist. Will not return <code>null</code>.
1331         *
1332     * <p>
1333     * <b>Definition:</b>
1334     * A free text natural language description of the profile and its use
1335     * </p> 
1336         */
1337        public StringDt getDescriptionElement() {  
1338                if (myDescription == null) {
1339                        myDescription = new StringDt();
1340                }
1341                return myDescription;
1342        }
1343
1344        
1345        /**
1346         * Gets the value(s) for <b>description</b> ().
1347         * creating it if it does
1348         * not exist. This method may return <code>null</code>.
1349         *
1350     * <p>
1351     * <b>Definition:</b>
1352     * A free text natural language description of the profile and its use
1353     * </p> 
1354         */
1355        public String getDescription() {  
1356                return getDescriptionElement().getValue();
1357        }
1358
1359        /**
1360         * Sets the value(s) for <b>description</b> ()
1361         *
1362     * <p>
1363     * <b>Definition:</b>
1364     * A free text natural language description of the profile and its use
1365     * </p> 
1366         */
1367        public OperationDefinition setDescription(StringDt theValue) {
1368                myDescription = theValue;
1369                return this;
1370        }
1371        
1372        
1373
1374        /**
1375         * Sets the value 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( String theString) {
1383                myDescription = new StringDt(theString); 
1384                return this; 
1385        }
1386
1387 
1388        /**
1389         * Gets the value(s) for <b>requirements</b> ().
1390         * creating it if it does
1391         * not exist. Will not return <code>null</code>.
1392         *
1393     * <p>
1394     * <b>Definition:</b>
1395     * Explains why this operation definition is needed and why it's been constrained as it has
1396     * </p> 
1397         */
1398        public StringDt getRequirementsElement() {  
1399                if (myRequirements == null) {
1400                        myRequirements = new StringDt();
1401                }
1402                return myRequirements;
1403        }
1404
1405        
1406        /**
1407         * Gets the value(s) for <b>requirements</b> ().
1408         * creating it if it does
1409         * not exist. This method may return <code>null</code>.
1410         *
1411     * <p>
1412     * <b>Definition:</b>
1413     * Explains why this operation definition is needed and why it's been constrained as it has
1414     * </p> 
1415         */
1416        public String getRequirements() {  
1417                return getRequirementsElement().getValue();
1418        }
1419
1420        /**
1421         * Sets the value(s) for <b>requirements</b> ()
1422         *
1423     * <p>
1424     * <b>Definition:</b>
1425     * Explains why this operation definition is needed and why it's been constrained as it has
1426     * </p> 
1427         */
1428        public OperationDefinition setRequirements(StringDt theValue) {
1429                myRequirements = theValue;
1430                return this;
1431        }
1432        
1433        
1434
1435        /**
1436         * Sets the value 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( String theString) {
1444                myRequirements = new StringDt(theString); 
1445                return this; 
1446        }
1447
1448 
1449        /**
1450         * Gets the value(s) for <b>idempotent</b> ().
1451         * creating it if it does
1452         * not exist. Will not return <code>null</code>.
1453         *
1454     * <p>
1455     * <b>Definition:</b>
1456     * 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
1457     * </p> 
1458         */
1459        public BooleanDt getIdempotentElement() {  
1460                if (myIdempotent == null) {
1461                        myIdempotent = new BooleanDt();
1462                }
1463                return myIdempotent;
1464        }
1465
1466        
1467        /**
1468         * Gets the value(s) for <b>idempotent</b> ().
1469         * creating it if it does
1470         * not exist. This method may return <code>null</code>.
1471         *
1472     * <p>
1473     * <b>Definition:</b>
1474     * 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
1475     * </p> 
1476         */
1477        public Boolean getIdempotent() {  
1478                return getIdempotentElement().getValue();
1479        }
1480
1481        /**
1482         * Sets the value(s) for <b>idempotent</b> ()
1483         *
1484     * <p>
1485     * <b>Definition:</b>
1486     * 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
1487     * </p> 
1488         */
1489        public OperationDefinition setIdempotent(BooleanDt theValue) {
1490                myIdempotent = theValue;
1491                return this;
1492        }
1493        
1494        
1495
1496        /**
1497         * Sets the value 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( boolean theBoolean) {
1505                myIdempotent = new BooleanDt(theBoolean); 
1506                return this; 
1507        }
1508
1509 
1510        /**
1511         * Gets the value(s) for <b>code</b> ().
1512         * creating it if it does
1513         * not exist. Will not return <code>null</code>.
1514         *
1515     * <p>
1516     * <b>Definition:</b>
1517     * The name used to invoke the operation
1518     * </p> 
1519         */
1520        public CodeDt getCodeElement() {  
1521                if (myCode == null) {
1522                        myCode = new CodeDt();
1523                }
1524                return myCode;
1525        }
1526
1527        
1528        /**
1529         * Gets the value(s) for <b>code</b> ().
1530         * creating it if it does
1531         * not exist. This method may return <code>null</code>.
1532         *
1533     * <p>
1534     * <b>Definition:</b>
1535     * The name used to invoke the operation
1536     * </p> 
1537         */
1538        public String getCode() {  
1539                return getCodeElement().getValue();
1540        }
1541
1542        /**
1543         * Sets the value(s) for <b>code</b> ()
1544         *
1545     * <p>
1546     * <b>Definition:</b>
1547     * The name used to invoke the operation
1548     * </p> 
1549         */
1550        public OperationDefinition setCode(CodeDt theValue) {
1551                myCode = theValue;
1552                return this;
1553        }
1554        
1555        
1556
1557        /**
1558         * Sets the value 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( String theCode) {
1566                myCode = new CodeDt(theCode); 
1567                return this; 
1568        }
1569
1570 
1571        /**
1572         * Gets the value(s) for <b>notes</b> ().
1573         * creating it if it does
1574         * not exist. Will not return <code>null</code>.
1575         *
1576     * <p>
1577     * <b>Definition:</b>
1578     * Additional information about how to use this operation or named query
1579     * </p> 
1580         */
1581        public StringDt getNotesElement() {  
1582                if (myNotes == null) {
1583                        myNotes = new StringDt();
1584                }
1585                return myNotes;
1586        }
1587
1588        
1589        /**
1590         * Gets the value(s) for <b>notes</b> ().
1591         * creating it if it does
1592         * not exist. This method may return <code>null</code>.
1593         *
1594     * <p>
1595     * <b>Definition:</b>
1596     * Additional information about how to use this operation or named query
1597     * </p> 
1598         */
1599        public String getNotes() {  
1600                return getNotesElement().getValue();
1601        }
1602
1603        /**
1604         * Sets the value(s) for <b>notes</b> ()
1605         *
1606     * <p>
1607     * <b>Definition:</b>
1608     * Additional information about how to use this operation or named query
1609     * </p> 
1610         */
1611        public OperationDefinition setNotes(StringDt theValue) {
1612                myNotes = theValue;
1613                return this;
1614        }
1615        
1616        
1617
1618        /**
1619         * Sets the value 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( String theString) {
1627                myNotes = new StringDt(theString); 
1628                return this; 
1629        }
1630
1631 
1632        /**
1633         * Gets the value(s) for <b>base</b> ().
1634         * creating it if it does
1635         * not exist. Will not return <code>null</code>.
1636         *
1637     * <p>
1638     * <b>Definition:</b>
1639     * Indicates that this operation definition is a constraining profile on the base
1640     * </p> 
1641         */
1642        public ResourceReferenceDt getBase() {  
1643                if (myBase == null) {
1644                        myBase = new ResourceReferenceDt();
1645                }
1646                return myBase;
1647        }
1648
1649        /**
1650         * Sets the value(s) for <b>base</b> ()
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 OperationDefinition setBase(ResourceReferenceDt theValue) {
1658                myBase = theValue;
1659                return this;
1660        }
1661        
1662        
1663
1664  
1665        /**
1666         * Gets the value(s) for <b>system</b> ().
1667         * creating it if it does
1668         * not exist. Will not return <code>null</code>.
1669         *
1670     * <p>
1671     * <b>Definition:</b>
1672     * 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)
1673     * </p> 
1674         */
1675        public BooleanDt getSystemElement() {  
1676                if (mySystem == null) {
1677                        mySystem = new BooleanDt();
1678                }
1679                return mySystem;
1680        }
1681
1682        
1683        /**
1684         * Gets the value(s) for <b>system</b> ().
1685         * creating it if it does
1686         * not exist. This method may return <code>null</code>.
1687         *
1688     * <p>
1689     * <b>Definition:</b>
1690     * 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)
1691     * </p> 
1692         */
1693        public Boolean getSystem() {  
1694                return getSystemElement().getValue();
1695        }
1696
1697        /**
1698         * Sets the value(s) for <b>system</b> ()
1699         *
1700     * <p>
1701     * <b>Definition:</b>
1702     * 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)
1703     * </p> 
1704         */
1705        public OperationDefinition setSystem(BooleanDt theValue) {
1706                mySystem = theValue;
1707                return this;
1708        }
1709        
1710        
1711
1712        /**
1713         * Sets the value 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( boolean theBoolean) {
1721                mySystem = new BooleanDt(theBoolean); 
1722                return this; 
1723        }
1724
1725 
1726        /**
1727         * Gets the value(s) for <b>type</b> ().
1728         * creating it if it does
1729         * not exist. Will not return <code>null</code>.
1730         *
1731     * <p>
1732     * <b>Definition:</b>
1733     * 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)
1734     * </p> 
1735         */
1736        public java.util.List<BoundCodeDt<ResourceTypeEnum>> getType() {  
1737                if (myType == null) {
1738                        myType = new java.util.ArrayList<BoundCodeDt<ResourceTypeEnum>>();
1739                }
1740                return myType;
1741        }
1742
1743        /**
1744         * Sets the value(s) for <b>type</b> ()
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 OperationDefinition setType(java.util.List<BoundCodeDt<ResourceTypeEnum>> theValue) {
1752                myType = theValue;
1753                return this;
1754        }
1755        
1756        
1757
1758        /**
1759         * Add a value for <b>type</b> () using an enumerated type. This
1760         * is intended as a convenience method for situations where the FHIR defined ValueSets are mandatory
1761         * or contain the desirable codes. If you wish to use codes other than those which are built-in, 
1762         * you may also use the {@link #addType()} method.
1763         *
1764     * <p>
1765     * <b>Definition:</b>
1766     * 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)
1767     * </p> 
1768         */
1769        public BoundCodeDt<ResourceTypeEnum> addType(ResourceTypeEnum theValue) {
1770                BoundCodeDt<ResourceTypeEnum> retVal = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER, theValue);
1771                getType().add(retVal);
1772                return retVal;
1773        }
1774
1775        /**
1776         * Gets the first repetition for <b>type</b> (),
1777         * creating it if it does not already exist.
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> getTypeFirstRep() {
1785                if (getType().size() == 0) {
1786                        addType();
1787                }
1788                return getType().get(0);
1789        }
1790
1791        /**
1792         * Add a value for <b>type</b> ()
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> addType() {
1800                BoundCodeDt<ResourceTypeEnum> retVal = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER);
1801                getType().add(retVal);
1802                return retVal;
1803        }
1804
1805        /**
1806         * Sets the value(s), and clears any existing value(s) for <b>type</b> ()
1807         *
1808     * <p>
1809     * <b>Definition:</b>
1810     * 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)
1811     * </p> 
1812         */
1813        public OperationDefinition setType(ResourceTypeEnum theValue) {
1814                getType().clear();
1815                addType(theValue);
1816                return this;
1817        }
1818
1819  
1820        /**
1821         * Gets the value(s) for <b>instance</b> ().
1822         * creating it if it does
1823         * not exist. Will not return <code>null</code>.
1824         *
1825     * <p>
1826     * <b>Definition:</b>
1827     * Indicates whether this operation can be invoked on a particular instance of one of the given types
1828     * </p> 
1829         */
1830        public BooleanDt getInstanceElement() {  
1831                if (myInstance == null) {
1832                        myInstance = new BooleanDt();
1833                }
1834                return myInstance;
1835        }
1836
1837        
1838        /**
1839         * Gets the value(s) for <b>instance</b> ().
1840         * creating it if it does
1841         * not exist. This method may return <code>null</code>.
1842         *
1843     * <p>
1844     * <b>Definition:</b>
1845     * Indicates whether this operation can be invoked on a particular instance of one of the given types
1846     * </p> 
1847         */
1848        public Boolean getInstance() {  
1849                return getInstanceElement().getValue();
1850        }
1851
1852        /**
1853         * Sets the value(s) for <b>instance</b> ()
1854         *
1855     * <p>
1856     * <b>Definition:</b>
1857     * Indicates whether this operation can be invoked on a particular instance of one of the given types
1858     * </p> 
1859         */
1860        public OperationDefinition setInstance(BooleanDt theValue) {
1861                myInstance = theValue;
1862                return this;
1863        }
1864        
1865        
1866
1867        /**
1868         * Sets the value 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( boolean theBoolean) {
1876                myInstance = new BooleanDt(theBoolean); 
1877                return this; 
1878        }
1879
1880 
1881        /**
1882         * Gets the value(s) for <b>parameter</b> ().
1883         * creating it if it does
1884         * not exist. Will not return <code>null</code>.
1885         *
1886     * <p>
1887     * <b>Definition:</b>
1888     * The parameters for the operation/query
1889     * </p> 
1890         */
1891        public java.util.List<Parameter> getParameter() {  
1892                if (myParameter == null) {
1893                        myParameter = new java.util.ArrayList<Parameter>();
1894                }
1895                return myParameter;
1896        }
1897
1898        /**
1899         * Sets the value(s) for <b>parameter</b> ()
1900         *
1901     * <p>
1902     * <b>Definition:</b>
1903     * The parameters for the operation/query
1904     * </p> 
1905         */
1906        public OperationDefinition setParameter(java.util.List<Parameter> theValue) {
1907                myParameter = theValue;
1908                return this;
1909        }
1910        
1911        
1912
1913        /**
1914         * Adds and returns a new value for <b>parameter</b> ()
1915         *
1916     * <p>
1917     * <b>Definition:</b>
1918     * The parameters for the operation/query
1919     * </p> 
1920         */
1921        public Parameter addParameter() {
1922                Parameter newType = new Parameter();
1923                getParameter().add(newType);
1924                return newType; 
1925        }
1926
1927        /**
1928         * Adds a given new value for <b>parameter</b> ()
1929         *
1930         * <p>
1931         * <b>Definition:</b>
1932         * The parameters for the operation/query
1933         * </p>
1934         * @param theValue The parameter to add (must not be <code>null</code>)
1935         */
1936        public OperationDefinition addParameter(Parameter theValue) {
1937                if (theValue == null) {
1938                        throw new NullPointerException("theValue must not be null");
1939                }
1940                getParameter().add(theValue);
1941                return this;
1942        }
1943
1944        /**
1945         * Gets the first repetition for <b>parameter</b> (),
1946         * creating it if it does not already exist.
1947         *
1948     * <p>
1949     * <b>Definition:</b>
1950     * The parameters for the operation/query
1951     * </p> 
1952         */
1953        public Parameter getParameterFirstRep() {
1954                if (getParameter().isEmpty()) {
1955                        return addParameter();
1956                }
1957                return getParameter().get(0); 
1958        }
1959  
1960        /**
1961         * Block class for child element: <b>OperationDefinition.contact</b> ()
1962         *
1963     * <p>
1964     * <b>Definition:</b>
1965     * Contacts to assist a user in finding and communicating with the publisher
1966     * </p> 
1967         */
1968        @Block()        
1969        public static class Contact 
1970            extends  BaseIdentifiableElement        implements IResourceBlock {
1971        
1972        @Child(name="name", type=StringDt.class, order=0, min=0, max=1, summary=true, modifier=false)   
1973        @Description(
1974                shortDefinition="",
1975                formalDefinition="The name of an individual to contact regarding the operation definition"
1976        )
1977        private StringDt myName;
1978        
1979        @Child(name="telecom", type=ContactPointDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
1980        @Description(
1981                shortDefinition="",
1982                formalDefinition="Contact details for individual (if a name was provided) or the publisher"
1983        )
1984        private java.util.List<ContactPointDt> myTelecom;
1985        
1986
1987        @Override
1988        public boolean isEmpty() {
1989                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myTelecom);
1990        }
1991        
1992        @Override
1993        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1994                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myTelecom);
1995        }
1996
1997        /**
1998         * Gets the value(s) for <b>name</b> ().
1999         * creating it if it does
2000         * not exist. Will not return <code>null</code>.
2001         *
2002     * <p>
2003     * <b>Definition:</b>
2004     * The name of an individual to contact regarding the operation definition
2005     * </p> 
2006         */
2007        public StringDt getNameElement() {  
2008                if (myName == null) {
2009                        myName = new StringDt();
2010                }
2011                return myName;
2012        }
2013
2014        
2015        /**
2016         * Gets the value(s) for <b>name</b> ().
2017         * creating it if it does
2018         * not exist. This method may return <code>null</code>.
2019         *
2020     * <p>
2021     * <b>Definition:</b>
2022     * The name of an individual to contact regarding the operation definition
2023     * </p> 
2024         */
2025        public String getName() {  
2026                return getNameElement().getValue();
2027        }
2028
2029        /**
2030         * Sets the value(s) for <b>name</b> ()
2031         *
2032     * <p>
2033     * <b>Definition:</b>
2034     * The name of an individual to contact regarding the operation definition
2035     * </p> 
2036         */
2037        public Contact setName(StringDt theValue) {
2038                myName = theValue;
2039                return this;
2040        }
2041        
2042        
2043
2044        /**
2045         * Sets the value for <b>name</b> ()
2046         *
2047     * <p>
2048     * <b>Definition:</b>
2049     * The name of an individual to contact regarding the operation definition
2050     * </p> 
2051         */
2052        public Contact setName( String theString) {
2053                myName = new StringDt(theString); 
2054                return this; 
2055        }
2056
2057 
2058        /**
2059         * Gets the value(s) for <b>telecom</b> ().
2060         * creating it if it does
2061         * not exist. Will not return <code>null</code>.
2062         *
2063     * <p>
2064     * <b>Definition:</b>
2065     * Contact details for individual (if a name was provided) or the publisher
2066     * </p> 
2067         */
2068        public java.util.List<ContactPointDt> getTelecom() {  
2069                if (myTelecom == null) {
2070                        myTelecom = new java.util.ArrayList<ContactPointDt>();
2071                }
2072                return myTelecom;
2073        }
2074
2075        /**
2076         * Sets the value(s) for <b>telecom</b> ()
2077         *
2078     * <p>
2079     * <b>Definition:</b>
2080     * Contact details for individual (if a name was provided) or the publisher
2081     * </p> 
2082         */
2083        public Contact setTelecom(java.util.List<ContactPointDt> theValue) {
2084                myTelecom = theValue;
2085                return this;
2086        }
2087        
2088        
2089
2090        /**
2091         * Adds and returns a new value for <b>telecom</b> ()
2092         *
2093     * <p>
2094     * <b>Definition:</b>
2095     * Contact details for individual (if a name was provided) or the publisher
2096     * </p> 
2097         */
2098        public ContactPointDt addTelecom() {
2099                ContactPointDt newType = new ContactPointDt();
2100                getTelecom().add(newType);
2101                return newType; 
2102        }
2103
2104        /**
2105         * Adds a given new value for <b>telecom</b> ()
2106         *
2107         * <p>
2108         * <b>Definition:</b>
2109         * Contact details for individual (if a name was provided) or the publisher
2110         * </p>
2111         * @param theValue The telecom to add (must not be <code>null</code>)
2112         */
2113        public Contact addTelecom(ContactPointDt theValue) {
2114                if (theValue == null) {
2115                        throw new NullPointerException("theValue must not be null");
2116                }
2117                getTelecom().add(theValue);
2118                return this;
2119        }
2120
2121        /**
2122         * Gets the first repetition for <b>telecom</b> (),
2123         * creating it if it does not already exist.
2124         *
2125     * <p>
2126     * <b>Definition:</b>
2127     * Contact details for individual (if a name was provided) or the publisher
2128     * </p> 
2129         */
2130        public ContactPointDt getTelecomFirstRep() {
2131                if (getTelecom().isEmpty()) {
2132                        return addTelecom();
2133                }
2134                return getTelecom().get(0); 
2135        }
2136  
2137
2138
2139        }
2140
2141
2142        /**
2143         * Block class for child element: <b>OperationDefinition.parameter</b> ()
2144         *
2145     * <p>
2146     * <b>Definition:</b>
2147     * The parameters for the operation/query
2148     * </p> 
2149         */
2150        @Block()        
2151        public static class Parameter 
2152            extends  BaseIdentifiableElement        implements IResourceBlock {
2153        
2154        @Child(name="name", type=CodeDt.class, order=0, min=1, max=1, summary=false, modifier=false)    
2155        @Description(
2156                shortDefinition="",
2157                formalDefinition="The name of used to identify the parameter"
2158        )
2159        private CodeDt myName;
2160        
2161        @Child(name="use", type=CodeDt.class, order=1, min=1, max=1, summary=false, modifier=false)     
2162        @Description(
2163                shortDefinition="",
2164                formalDefinition="Whether this is an input or an output parameter"
2165        )
2166        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/operation-parameter-use")
2167        private BoundCodeDt<OperationParameterUseEnum> myUse;
2168        
2169        @Child(name="min", type=IntegerDt.class, order=2, min=1, max=1, summary=false, modifier=false)  
2170        @Description(
2171                shortDefinition="",
2172                formalDefinition="The minimum number of times this parameter SHALL appear in the request or response"
2173        )
2174        private IntegerDt myMin;
2175        
2176        @Child(name="max", type=StringDt.class, order=3, min=1, max=1, summary=false, modifier=false)   
2177        @Description(
2178                shortDefinition="",
2179                formalDefinition="The maximum number of times this element is permitted to appear in the request or response"
2180        )
2181        private StringDt myMax;
2182        
2183        @Child(name="documentation", type=StringDt.class, order=4, min=0, max=1, summary=false, modifier=false) 
2184        @Description(
2185                shortDefinition="",
2186                formalDefinition="Describes the meaning or use of this parameter"
2187        )
2188        private StringDt myDocumentation;
2189        
2190        @Child(name="type", type=CodeDt.class, order=5, min=0, max=1, summary=false, modifier=false)    
2191        @Description(
2192                shortDefinition="",
2193                formalDefinition="The type for this parameter"
2194        )
2195        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/valueset-operation-parameter-type")
2196        private CodeDt myType;
2197        
2198        @Child(name="profile", order=6, min=0, max=1, summary=false, modifier=false, type={
2199                ca.uhn.fhir.model.dstu2.resource.StructureDefinition.class      })
2200        @Description(
2201                shortDefinition="",
2202                formalDefinition="A profile the specifies the rules that this parameter must conform to"
2203        )
2204        private ResourceReferenceDt myProfile;
2205        
2206        @Child(name="binding", order=7, min=0, max=1, summary=false, modifier=false)    
2207        @Description(
2208                shortDefinition="",
2209                formalDefinition="Binds to a value set if this parameter is coded (code, Coding, CodeableConcept)"
2210        )
2211        private ParameterBinding myBinding;
2212        
2213        @Child(name="part", type=Parameter.class, order=8, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
2214        @Description(
2215                shortDefinition="",
2216                formalDefinition="The parts of a Tuple Parameter"
2217        )
2218        private java.util.List<Parameter> myPart;
2219        
2220
2221        @Override
2222        public boolean isEmpty() {
2223                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myUse,  myMin,  myMax,  myDocumentation,  myType,  myProfile,  myBinding,  myPart);
2224        }
2225        
2226        @Override
2227        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2228                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myUse, myMin, myMax, myDocumentation, myType, myProfile, myBinding, myPart);
2229        }
2230
2231        /**
2232         * Gets the value(s) for <b>name</b> ().
2233         * creating it if it does
2234         * not exist. Will not return <code>null</code>.
2235         *
2236     * <p>
2237     * <b>Definition:</b>
2238     * The name of used to identify the parameter
2239     * </p> 
2240         */
2241        public CodeDt getNameElement() {  
2242                if (myName == null) {
2243                        myName = new CodeDt();
2244                }
2245                return myName;
2246        }
2247
2248        
2249        /**
2250         * Gets the value(s) for <b>name</b> ().
2251         * creating it if it does
2252         * not exist. This method may 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 String getName() {  
2260                return getNameElement().getValue();
2261        }
2262
2263        /**
2264         * Sets the value(s) for <b>name</b> ()
2265         *
2266     * <p>
2267     * <b>Definition:</b>
2268     * The name of used to identify the parameter
2269     * </p> 
2270         */
2271        public Parameter setName(CodeDt theValue) {
2272                myName = theValue;
2273                return this;
2274        }
2275        
2276        
2277
2278        /**
2279         * Sets the value for <b>name</b> ()
2280         *
2281     * <p>
2282     * <b>Definition:</b>
2283     * The name of used to identify the parameter
2284     * </p> 
2285         */
2286        public Parameter setName( String theCode) {
2287                myName = new CodeDt(theCode); 
2288                return this; 
2289        }
2290
2291 
2292        /**
2293         * Gets the value(s) for <b>use</b> ().
2294         * creating it if it does
2295         * not exist. Will not return <code>null</code>.
2296         *
2297     * <p>
2298     * <b>Definition:</b>
2299     * Whether this is an input or an output parameter
2300     * </p> 
2301         */
2302        public BoundCodeDt<OperationParameterUseEnum> getUseElement() {  
2303                if (myUse == null) {
2304                        myUse = new BoundCodeDt<OperationParameterUseEnum>(OperationParameterUseEnum.VALUESET_BINDER);
2305                }
2306                return myUse;
2307        }
2308
2309        
2310        /**
2311         * Gets the value(s) for <b>use</b> ().
2312         * creating it if it does
2313         * not exist. This method may 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 String getUse() {  
2321                return getUseElement().getValue();
2322        }
2323
2324        /**
2325         * Sets the value(s) for <b>use</b> ()
2326         *
2327     * <p>
2328     * <b>Definition:</b>
2329     * Whether this is an input or an output parameter
2330     * </p> 
2331         */
2332        public Parameter setUse(BoundCodeDt<OperationParameterUseEnum> theValue) {
2333                myUse = theValue;
2334                return this;
2335        }
2336        
2337        
2338
2339        /**
2340         * Sets the value(s) for <b>use</b> ()
2341         *
2342     * <p>
2343     * <b>Definition:</b>
2344     * Whether this is an input or an output parameter
2345     * </p> 
2346         */
2347        public Parameter setUse(OperationParameterUseEnum theValue) {
2348                setUse(new BoundCodeDt<OperationParameterUseEnum>(OperationParameterUseEnum.VALUESET_BINDER, theValue));
2349                
2350/*
2351                getUseElement().setValueAsEnum(theValue);
2352*/
2353                return this;
2354        }
2355
2356  
2357        /**
2358         * Gets the value(s) for <b>min</b> ().
2359         * creating it if it does
2360         * not exist. Will not return <code>null</code>.
2361         *
2362     * <p>
2363     * <b>Definition:</b>
2364     * The minimum number of times this parameter SHALL appear in the request or response
2365     * </p> 
2366         */
2367        public IntegerDt getMinElement() {  
2368                if (myMin == null) {
2369                        myMin = new IntegerDt();
2370                }
2371                return myMin;
2372        }
2373
2374        
2375        /**
2376         * Gets the value(s) for <b>min</b> ().
2377         * creating it if it does
2378         * not exist. This method may 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 Integer getMin() {  
2386                return getMinElement().getValue();
2387        }
2388
2389        /**
2390         * Sets the value(s) for <b>min</b> ()
2391         *
2392     * <p>
2393     * <b>Definition:</b>
2394     * The minimum number of times this parameter SHALL appear in the request or response
2395     * </p> 
2396         */
2397        public Parameter setMin(IntegerDt theValue) {
2398                myMin = theValue;
2399                return this;
2400        }
2401        
2402        
2403
2404        /**
2405         * Sets the value for <b>min</b> ()
2406         *
2407     * <p>
2408     * <b>Definition:</b>
2409     * The minimum number of times this parameter SHALL appear in the request or response
2410     * </p> 
2411         */
2412        public Parameter setMin( int theInteger) {
2413                myMin = new IntegerDt(theInteger); 
2414                return this; 
2415        }
2416
2417 
2418        /**
2419         * Gets the value(s) for <b>max</b> ().
2420         * creating it if it does
2421         * not exist. Will not return <code>null</code>.
2422         *
2423     * <p>
2424     * <b>Definition:</b>
2425     * The maximum number of times this element is permitted to appear in the request or response
2426     * </p> 
2427         */
2428        public StringDt getMaxElement() {  
2429                if (myMax == null) {
2430                        myMax = new StringDt();
2431                }
2432                return myMax;
2433        }
2434
2435        
2436        /**
2437         * Gets the value(s) for <b>max</b> ().
2438         * creating it if it does
2439         * not exist. This method may 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 String getMax() {  
2447                return getMaxElement().getValue();
2448        }
2449
2450        /**
2451         * Sets the value(s) for <b>max</b> ()
2452         *
2453     * <p>
2454     * <b>Definition:</b>
2455     * The maximum number of times this element is permitted to appear in the request or response
2456     * </p> 
2457         */
2458        public Parameter setMax(StringDt theValue) {
2459                myMax = theValue;
2460                return this;
2461        }
2462        
2463        
2464
2465        /**
2466         * Sets the value for <b>max</b> ()
2467         *
2468     * <p>
2469     * <b>Definition:</b>
2470     * The maximum number of times this element is permitted to appear in the request or response
2471     * </p> 
2472         */
2473        public Parameter setMax( String theString) {
2474                myMax = new StringDt(theString); 
2475                return this; 
2476        }
2477
2478 
2479        /**
2480         * Gets the value(s) for <b>documentation</b> ().
2481         * creating it if it does
2482         * not exist. Will not return <code>null</code>.
2483         *
2484     * <p>
2485     * <b>Definition:</b>
2486     * Describes the meaning or use of this parameter
2487     * </p> 
2488         */
2489        public StringDt getDocumentationElement() {  
2490                if (myDocumentation == null) {
2491                        myDocumentation = new StringDt();
2492                }
2493                return myDocumentation;
2494        }
2495
2496        
2497        /**
2498         * Gets the value(s) for <b>documentation</b> ().
2499         * creating it if it does
2500         * not exist. This method may 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 String getDocumentation() {  
2508                return getDocumentationElement().getValue();
2509        }
2510
2511        /**
2512         * Sets the value(s) for <b>documentation</b> ()
2513         *
2514     * <p>
2515     * <b>Definition:</b>
2516     * Describes the meaning or use of this parameter
2517     * </p> 
2518         */
2519        public Parameter setDocumentation(StringDt theValue) {
2520                myDocumentation = theValue;
2521                return this;
2522        }
2523        
2524        
2525
2526        /**
2527         * Sets the value for <b>documentation</b> ()
2528         *
2529     * <p>
2530     * <b>Definition:</b>
2531     * Describes the meaning or use of this parameter
2532     * </p> 
2533         */
2534        public Parameter setDocumentation( String theString) {
2535                myDocumentation = new StringDt(theString); 
2536                return this; 
2537        }
2538
2539 
2540        /**
2541         * Gets the value(s) for <b>type</b> ().
2542         * creating it if it does
2543         * not exist. Will not return <code>null</code>.
2544         *
2545     * <p>
2546     * <b>Definition:</b>
2547     * The type for this parameter
2548     * </p> 
2549         */
2550        public CodeDt getTypeElement() {  
2551                if (myType == null) {
2552                        myType = new CodeDt();
2553                }
2554                return myType;
2555        }
2556
2557        
2558        /**
2559         * Gets the value(s) for <b>type</b> ().
2560         * creating it if it does
2561         * not exist. This method may return <code>null</code>.
2562         *
2563     * <p>
2564     * <b>Definition:</b>
2565     * The type for this parameter
2566     * </p> 
2567         */
2568        public String getType() {  
2569                return getTypeElement().getValue();
2570        }
2571
2572        /**
2573         * Sets the value(s) for <b>type</b> ()
2574         *
2575     * <p>
2576     * <b>Definition:</b>
2577     * The type for this parameter
2578     * </p> 
2579         */
2580        public Parameter setType(CodeDt theValue) {
2581                myType = theValue;
2582                return this;
2583        }
2584        
2585        
2586
2587        /**
2588         * Sets the value for <b>type</b> ()
2589         *
2590     * <p>
2591     * <b>Definition:</b>
2592     * The type for this parameter
2593     * </p> 
2594         */
2595        public Parameter setType( String theCode) {
2596                myType = new CodeDt(theCode); 
2597                return this; 
2598        }
2599
2600 
2601        /**
2602         * Gets the value(s) for <b>profile</b> ().
2603         * creating it if it does
2604         * not exist. Will not return <code>null</code>.
2605         *
2606     * <p>
2607     * <b>Definition:</b>
2608     * A profile the specifies the rules that this parameter must conform to
2609     * </p> 
2610         */
2611        public ResourceReferenceDt getProfile() {  
2612                if (myProfile == null) {
2613                        myProfile = new ResourceReferenceDt();
2614                }
2615                return myProfile;
2616        }
2617
2618        /**
2619         * Sets the value(s) for <b>profile</b> ()
2620         *
2621     * <p>
2622     * <b>Definition:</b>
2623     * A profile the specifies the rules that this parameter must conform to
2624     * </p> 
2625         */
2626        public Parameter setProfile(ResourceReferenceDt theValue) {
2627                myProfile = theValue;
2628                return this;
2629        }
2630        
2631        
2632
2633  
2634        /**
2635         * Gets the value(s) for <b>binding</b> ().
2636         * creating it if it does
2637         * not exist. Will not return <code>null</code>.
2638         *
2639     * <p>
2640     * <b>Definition:</b>
2641     * Binds to a value set if this parameter is coded (code, Coding, CodeableConcept)
2642     * </p> 
2643         */
2644        public ParameterBinding getBinding() {  
2645                if (myBinding == null) {
2646                        myBinding = new ParameterBinding();
2647                }
2648                return myBinding;
2649        }
2650
2651        /**
2652         * Sets the value(s) for <b>binding</b> ()
2653         *
2654     * <p>
2655     * <b>Definition:</b>
2656     * Binds to a value set if this parameter is coded (code, Coding, CodeableConcept)
2657     * </p> 
2658         */
2659        public Parameter setBinding(ParameterBinding theValue) {
2660                myBinding = theValue;
2661                return this;
2662        }
2663        
2664        
2665
2666  
2667        /**
2668         * Gets the value(s) for <b>part</b> ().
2669         * creating it if it does
2670         * not exist. Will not return <code>null</code>.
2671         *
2672     * <p>
2673     * <b>Definition:</b>
2674     * The parts of a Tuple Parameter
2675     * </p> 
2676         */
2677        public java.util.List<Parameter> getPart() {  
2678                if (myPart == null) {
2679                        myPart = new java.util.ArrayList<Parameter>();
2680                }
2681                return myPart;
2682        }
2683
2684        /**
2685         * Sets the value(s) for <b>part</b> ()
2686         *
2687     * <p>
2688     * <b>Definition:</b>
2689     * The parts of a Tuple Parameter
2690     * </p> 
2691         */
2692        public Parameter setPart(java.util.List<Parameter> theValue) {
2693                myPart = theValue;
2694                return this;
2695        }
2696        
2697        
2698
2699        /**
2700         * Adds and returns a new value for <b>part</b> ()
2701         *
2702     * <p>
2703     * <b>Definition:</b>
2704     * The parts of a Tuple Parameter
2705     * </p> 
2706         */
2707        public Parameter addPart() {
2708                Parameter newType = new Parameter();
2709                getPart().add(newType);
2710                return newType; 
2711        }
2712
2713        /**
2714         * Adds a given new value for <b>part</b> ()
2715         *
2716         * <p>
2717         * <b>Definition:</b>
2718         * The parts of a Tuple Parameter
2719         * </p>
2720         * @param theValue The part to add (must not be <code>null</code>)
2721         */
2722        public Parameter addPart(Parameter theValue) {
2723                if (theValue == null) {
2724                        throw new NullPointerException("theValue must not be null");
2725                }
2726                getPart().add(theValue);
2727                return this;
2728        }
2729
2730        /**
2731         * Gets the first repetition for <b>part</b> (),
2732         * creating it if it does not already exist.
2733         *
2734     * <p>
2735     * <b>Definition:</b>
2736     * The parts of a Tuple Parameter
2737     * </p> 
2738         */
2739        public Parameter getPartFirstRep() {
2740                if (getPart().isEmpty()) {
2741                        return addPart();
2742                }
2743                return getPart().get(0); 
2744        }
2745  
2746
2747
2748        }
2749
2750        /**
2751         * Block class for child element: <b>OperationDefinition.parameter.binding</b> ()
2752         *
2753     * <p>
2754     * <b>Definition:</b>
2755     * Binds to a value set if this parameter is coded (code, Coding, CodeableConcept)
2756     * </p> 
2757         */
2758        @Block()        
2759        public static class ParameterBinding 
2760            extends  BaseIdentifiableElement        implements IResourceBlock {
2761        
2762        @Child(name="strength", type=CodeDt.class, order=0, min=1, max=1, summary=false, modifier=false)        
2763        @Description(
2764                shortDefinition="",
2765                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"
2766        )
2767        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/binding-strength")
2768        private BoundCodeDt<BindingStrengthEnum> myStrength;
2769        
2770        @Child(name="valueSet", order=1, min=1, max=1, summary=false, modifier=false, type={
2771                UriDt.class,            ValueSet.class  })
2772        @Description(
2773                shortDefinition="",
2774                formalDefinition="Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used"
2775        )
2776        private IDatatype myValueSet;
2777        
2778
2779        @Override
2780        public boolean isEmpty() {
2781                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myStrength,  myValueSet);
2782        }
2783        
2784        @Override
2785        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2786                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myStrength, myValueSet);
2787        }
2788
2789        /**
2790         * Gets the value(s) for <b>strength</b> ().
2791         * creating it if it does
2792         * not exist. Will not return <code>null</code>.
2793         *
2794     * <p>
2795     * <b>Definition:</b>
2796     * 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
2797     * </p> 
2798         */
2799        public BoundCodeDt<BindingStrengthEnum> getStrengthElement() {  
2800                if (myStrength == null) {
2801                        myStrength = new BoundCodeDt<BindingStrengthEnum>(BindingStrengthEnum.VALUESET_BINDER);
2802                }
2803                return myStrength;
2804        }
2805
2806        
2807        /**
2808         * Gets the value(s) for <b>strength</b> ().
2809         * creating it if it does
2810         * not exist. This method may return <code>null</code>.
2811         *
2812     * <p>
2813     * <b>Definition:</b>
2814     * 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
2815     * </p> 
2816         */
2817        public String getStrength() {  
2818                return getStrengthElement().getValue();
2819        }
2820
2821        /**
2822         * Sets the value(s) for <b>strength</b> ()
2823         *
2824     * <p>
2825     * <b>Definition:</b>
2826     * 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
2827     * </p> 
2828         */
2829        public ParameterBinding setStrength(BoundCodeDt<BindingStrengthEnum> theValue) {
2830                myStrength = theValue;
2831                return this;
2832        }
2833        
2834        
2835
2836        /**
2837         * Sets the value(s) for <b>strength</b> ()
2838         *
2839     * <p>
2840     * <b>Definition:</b>
2841     * 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
2842     * </p> 
2843         */
2844        public ParameterBinding setStrength(BindingStrengthEnum theValue) {
2845                setStrength(new BoundCodeDt<BindingStrengthEnum>(BindingStrengthEnum.VALUESET_BINDER, theValue));
2846                
2847/*
2848                getStrengthElement().setValueAsEnum(theValue);
2849*/
2850                return this;
2851        }
2852
2853  
2854        /**
2855         * Gets the value(s) for <b>valueSet[x]</b> ().
2856         * creating it if it does
2857         * not exist. Will not return <code>null</code>.
2858         *
2859     * <p>
2860     * <b>Definition:</b>
2861     * Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used
2862     * </p> 
2863         */
2864        public IDatatype getValueSet() {  
2865                return myValueSet;
2866        }
2867
2868        /**
2869         * Sets the value(s) for <b>valueSet[x]</b> ()
2870         *
2871     * <p>
2872     * <b>Definition:</b>
2873     * Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used
2874     * </p> 
2875         */
2876        public ParameterBinding setValueSet(IDatatype theValue) {
2877                myValueSet = theValue;
2878                return this;
2879        }
2880        
2881        
2882
2883  
2884
2885
2886        }
2887
2888
2889
2890
2891
2892    @Override
2893    public String getResourceName() {
2894        return "OperationDefinition";
2895    }
2896    
2897    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
2898        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
2899    }
2900
2901
2902}