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>SearchParameter</b> Resource
282 * (conformance.behavior)
283 *
284 * <p>
285 * <b>Definition:</b>
286 * A search parameter that defines a named search item that can be used to search/filter on a resource.
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/SearchParameter">http://hl7.org/fhir/profiles/SearchParameter</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="SearchParameter", profile="http://hl7.org/fhir/profiles/SearchParameter", id="searchparameter")
301public class SearchParameter extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource 
303    {
304
305        /**
306         * Search parameter constant for <b>url</b>
307         * <p>
308         * Description: <b></b><br>
309         * Type: <b>uri</b><br>
310         * Path: <b>SearchParameter.url</b><br>
311         * </p>
312         */
313        @SearchParamDefinition(name="url", path="SearchParameter.url", description="", type="uri" 
314 )
315        public static final String SP_URL = "url";
316
317        /**
318         * <b>Fluent Client</b> search parameter constant for <b>url</b>
319         * <p>
320         * Description: <b></b><br>
321         * Type: <b>uri</b><br>
322         * Path: <b>SearchParameter.url</b><br>
323         * </p>
324         */
325        public static final UriClientParam URL = new UriClientParam(SP_URL);
326
327        /**
328         * Search parameter constant for <b>name</b>
329         * <p>
330         * Description: <b></b><br>
331         * Type: <b>string</b><br>
332         * Path: <b>SearchParameter.name</b><br>
333         * </p>
334         */
335        @SearchParamDefinition(name="name", path="SearchParameter.name", description="", type="string" 
336 )
337        public static final String SP_NAME = "name";
338
339        /**
340         * <b>Fluent Client</b> search parameter constant for <b>name</b>
341         * <p>
342         * Description: <b></b><br>
343         * Type: <b>string</b><br>
344         * Path: <b>SearchParameter.name</b><br>
345         * </p>
346         */
347        public static final StringClientParam NAME = new StringClientParam(SP_NAME);
348
349        /**
350         * Search parameter constant for <b>base</b>
351         * <p>
352         * Description: <b></b><br>
353         * Type: <b>token</b><br>
354         * Path: <b>SearchParameter.base</b><br>
355         * </p>
356         */
357        @SearchParamDefinition(name="base", path="SearchParameter.base", description="", type="token" 
358 )
359        public static final String SP_BASE = "base";
360
361        /**
362         * <b>Fluent Client</b> search parameter constant for <b>base</b>
363         * <p>
364         * Description: <b></b><br>
365         * Type: <b>token</b><br>
366         * Path: <b>SearchParameter.base</b><br>
367         * </p>
368         */
369        public static final TokenClientParam BASE = new TokenClientParam(SP_BASE);
370
371        /**
372         * Search parameter constant for <b>type</b>
373         * <p>
374         * Description: <b></b><br>
375         * Type: <b>token</b><br>
376         * Path: <b>SearchParameter.type</b><br>
377         * </p>
378         */
379        @SearchParamDefinition(name="type", path="SearchParameter.type", description="", type="token" 
380 )
381        public static final String SP_TYPE = "type";
382
383        /**
384         * <b>Fluent Client</b> search parameter constant for <b>type</b>
385         * <p>
386         * Description: <b></b><br>
387         * Type: <b>token</b><br>
388         * Path: <b>SearchParameter.type</b><br>
389         * </p>
390         */
391        public static final TokenClientParam TYPE = new TokenClientParam(SP_TYPE);
392
393        /**
394         * Search parameter constant for <b>description</b>
395         * <p>
396         * Description: <b></b><br>
397         * Type: <b>string</b><br>
398         * Path: <b>SearchParameter.description</b><br>
399         * </p>
400         */
401        @SearchParamDefinition(name="description", path="SearchParameter.description", description="", type="string" 
402 )
403        public static final String SP_DESCRIPTION = "description";
404
405        /**
406         * <b>Fluent Client</b> search parameter constant for <b>description</b>
407         * <p>
408         * Description: <b></b><br>
409         * Type: <b>string</b><br>
410         * Path: <b>SearchParameter.description</b><br>
411         * </p>
412         */
413        public static final StringClientParam DESCRIPTION = new StringClientParam(SP_DESCRIPTION);
414
415        /**
416         * Search parameter constant for <b>target</b>
417         * <p>
418         * Description: <b></b><br>
419         * Type: <b>token</b><br>
420         * Path: <b>SearchParameter.target</b><br>
421         * </p>
422         */
423        @SearchParamDefinition(name="target", path="SearchParameter.target", description="", type="token" 
424 )
425        public static final String SP_TARGET = "target";
426
427        /**
428         * <b>Fluent Client</b> search parameter constant for <b>target</b>
429         * <p>
430         * Description: <b></b><br>
431         * Type: <b>token</b><br>
432         * Path: <b>SearchParameter.target</b><br>
433         * </p>
434         */
435        public static final TokenClientParam TARGET = new TokenClientParam(SP_TARGET);
436
437        /**
438         * Search parameter constant for <b>code</b>
439         * <p>
440         * Description: <b></b><br>
441         * Type: <b>token</b><br>
442         * Path: <b>SearchParameter.code</b><br>
443         * </p>
444         */
445        @SearchParamDefinition(name="code", path="SearchParameter.code", description="", type="token" 
446 )
447        public static final String SP_CODE = "code";
448
449        /**
450         * <b>Fluent Client</b> search parameter constant for <b>code</b>
451         * <p>
452         * Description: <b></b><br>
453         * Type: <b>token</b><br>
454         * Path: <b>SearchParameter.code</b><br>
455         * </p>
456         */
457        public static final TokenClientParam CODE = new TokenClientParam(SP_CODE);
458
459
460
461        @Child(name="url", type=UriDt.class, order=0, min=1, max=1, summary=true, modifier=false)       
462        @Description(
463                shortDefinition="id",
464                formalDefinition="An absolute URL that is used to identify this search parameter 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 search parameter is (or will be) published"
465        )
466        private UriDt myUrl;
467        
468        @Child(name="name", type=StringDt.class, order=1, min=1, max=1, summary=true, modifier=false)   
469        @Description(
470                shortDefinition="",
471                formalDefinition="A free text natural language name identifying the search parameter"
472        )
473        private StringDt myName;
474        
475        @Child(name="status", type=CodeDt.class, order=2, min=0, max=1, summary=true, modifier=false)   
476        @Description(
477                shortDefinition="status",
478                formalDefinition="The status of this search parameter definition"
479        )
480        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/conformance-resource-status")
481        private BoundCodeDt<ConformanceResourceStatusEnum> myStatus;
482        
483        @Child(name="experimental", type=BooleanDt.class, order=3, min=0, max=1, summary=true, modifier=false)  
484        @Description(
485                shortDefinition="class",
486                formalDefinition="A flag to indicate that this search parameter definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage"
487        )
488        private BooleanDt myExperimental;
489        
490        @Child(name="publisher", type=StringDt.class, order=4, min=0, max=1, summary=true, modifier=false)      
491        @Description(
492                shortDefinition="who.witness",
493                formalDefinition="The name of the individual or organization that published the search parameter"
494        )
495        private StringDt myPublisher;
496        
497        @Child(name="contact", order=5, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
498        @Description(
499                shortDefinition="",
500                formalDefinition="Contacts to assist a user in finding and communicating with the publisher"
501        )
502        private java.util.List<Contact> myContact;
503        
504        @Child(name="date", type=DateTimeDt.class, order=6, min=0, max=1, summary=true, modifier=false) 
505        @Description(
506                shortDefinition="when.recorded",
507                formalDefinition="The date  (and optionally time) when the search parameter 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 search parameter changes"
508        )
509        private DateTimeDt myDate;
510        
511        @Child(name="requirements", type=StringDt.class, order=7, min=0, max=1, summary=false, modifier=false)  
512        @Description(
513                shortDefinition="why",
514                formalDefinition="The Scope and Usage that this search parameter was created to meet"
515        )
516        private StringDt myRequirements;
517        
518        @Child(name="code", type=CodeDt.class, order=8, min=1, max=1, summary=true, modifier=false)     
519        @Description(
520                shortDefinition="",
521                formalDefinition="The code used in the URL or the parameter name in a parameters resource for this search parameter"
522        )
523        private CodeDt myCode;
524        
525        @Child(name="base", type=CodeDt.class, order=9, min=1, max=1, summary=true, modifier=false)     
526        @Description(
527                shortDefinition="",
528                formalDefinition="The base resource type that this search parameter refers to"
529        )
530        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/resource-types")
531        private BoundCodeDt<ResourceTypeEnum> myBase;
532        
533        @Child(name="type", type=CodeDt.class, order=10, min=1, max=1, summary=true, modifier=false)    
534        @Description(
535                shortDefinition="",
536                formalDefinition="The type of value a search parameter refers to, and how the content is interpreted"
537        )
538        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/search-param-type")
539        private BoundCodeDt<SearchParamTypeEnum> myType;
540        
541        @Child(name="description", type=StringDt.class, order=11, min=1, max=1, summary=true, modifier=false)   
542        @Description(
543                shortDefinition="",
544                formalDefinition="A description of the search parameters and how it used"
545        )
546        private StringDt myDescription;
547        
548        @Child(name="xpath", type=StringDt.class, order=12, min=0, max=1, summary=false, modifier=false)        
549        @Description(
550                shortDefinition="",
551                formalDefinition="An XPath expression that returns a set of elements for the search parameter"
552        )
553        private StringDt myXpath;
554        
555        @Child(name="xpathUsage", type=CodeDt.class, order=13, min=0, max=1, summary=false, modifier=false)     
556        @Description(
557                shortDefinition="",
558                formalDefinition="How the search parameter relates to the set of elements returned by evaluating the xpath query"
559        )
560        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/search-xpath-usage")
561        private BoundCodeDt<XPathUsageTypeEnum> myXpathUsage;
562        
563        @Child(name="target", type=CodeDt.class, order=14, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
564        @Description(
565                shortDefinition="",
566                formalDefinition="Types of resource (if a resource is referenced)"
567        )
568        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/resource-types")
569        private java.util.List<BoundCodeDt<ResourceTypeEnum>> myTarget;
570        
571
572        @Override
573        public boolean isEmpty() {
574                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myUrl,  myName,  myStatus,  myExperimental,  myPublisher,  myContact,  myDate,  myRequirements,  myCode,  myBase,  myType,  myDescription,  myXpath,  myXpathUsage,  myTarget);
575        }
576        
577        @Override
578        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
579                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myUrl, myName, myStatus, myExperimental, myPublisher, myContact, myDate, myRequirements, myCode, myBase, myType, myDescription, myXpath, myXpathUsage, myTarget);
580        }
581
582        /**
583         * Gets the value(s) for <b>url</b> (id).
584         * creating it if it does
585         * not exist. Will not return <code>null</code>.
586         *
587     * <p>
588     * <b>Definition:</b>
589     * An absolute URL that is used to identify this search parameter 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 search parameter is (or will be) published
590     * </p> 
591         */
592        public UriDt getUrlElement() {  
593                if (myUrl == null) {
594                        myUrl = new UriDt();
595                }
596                return myUrl;
597        }
598
599        
600        /**
601         * Gets the value(s) for <b>url</b> (id).
602         * creating it if it does
603         * not exist. This method may return <code>null</code>.
604         *
605     * <p>
606     * <b>Definition:</b>
607     * An absolute URL that is used to identify this search parameter 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 search parameter is (or will be) published
608     * </p> 
609         */
610        public String getUrl() {  
611                return getUrlElement().getValue();
612        }
613
614        /**
615         * Sets the value(s) for <b>url</b> (id)
616         *
617     * <p>
618     * <b>Definition:</b>
619     * An absolute URL that is used to identify this search parameter 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 search parameter is (or will be) published
620     * </p> 
621         */
622        public SearchParameter setUrl(UriDt theValue) {
623                myUrl = theValue;
624                return this;
625        }
626        
627        
628
629        /**
630         * Sets the value for <b>url</b> (id)
631         *
632     * <p>
633     * <b>Definition:</b>
634     * An absolute URL that is used to identify this search parameter 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 search parameter is (or will be) published
635     * </p> 
636         */
637        public SearchParameter setUrl( String theUri) {
638                myUrl = new UriDt(theUri); 
639                return this; 
640        }
641
642 
643        /**
644         * Gets the value(s) for <b>name</b> ().
645         * creating it if it does
646         * not exist. Will not return <code>null</code>.
647         *
648     * <p>
649     * <b>Definition:</b>
650     * A free text natural language name identifying the search parameter
651     * </p> 
652         */
653        public StringDt getNameElement() {  
654                if (myName == null) {
655                        myName = new StringDt();
656                }
657                return myName;
658        }
659
660        
661        /**
662         * Gets the value(s) for <b>name</b> ().
663         * creating it if it does
664         * not exist. This method may return <code>null</code>.
665         *
666     * <p>
667     * <b>Definition:</b>
668     * A free text natural language name identifying the search parameter
669     * </p> 
670         */
671        public String getName() {  
672                return getNameElement().getValue();
673        }
674
675        /**
676         * Sets the value(s) for <b>name</b> ()
677         *
678     * <p>
679     * <b>Definition:</b>
680     * A free text natural language name identifying the search parameter
681     * </p> 
682         */
683        public SearchParameter setName(StringDt theValue) {
684                myName = theValue;
685                return this;
686        }
687        
688        
689
690        /**
691         * Sets the value for <b>name</b> ()
692         *
693     * <p>
694     * <b>Definition:</b>
695     * A free text natural language name identifying the search parameter
696     * </p> 
697         */
698        public SearchParameter setName( String theString) {
699                myName = new StringDt(theString); 
700                return this; 
701        }
702
703 
704        /**
705         * Gets the value(s) for <b>status</b> (status).
706         * creating it if it does
707         * not exist. Will not return <code>null</code>.
708         *
709     * <p>
710     * <b>Definition:</b>
711     * The status of this search parameter definition
712     * </p> 
713         */
714        public BoundCodeDt<ConformanceResourceStatusEnum> getStatusElement() {  
715                if (myStatus == null) {
716                        myStatus = new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER);
717                }
718                return myStatus;
719        }
720
721        
722        /**
723         * Gets the value(s) for <b>status</b> (status).
724         * creating it if it does
725         * not exist. This method may return <code>null</code>.
726         *
727     * <p>
728     * <b>Definition:</b>
729     * The status of this search parameter definition
730     * </p> 
731         */
732        public String getStatus() {  
733                return getStatusElement().getValue();
734        }
735
736        /**
737         * Sets the value(s) for <b>status</b> (status)
738         *
739     * <p>
740     * <b>Definition:</b>
741     * The status of this search parameter definition
742     * </p> 
743         */
744        public SearchParameter setStatus(BoundCodeDt<ConformanceResourceStatusEnum> theValue) {
745                myStatus = theValue;
746                return this;
747        }
748        
749        
750
751        /**
752         * Sets the value(s) for <b>status</b> (status)
753         *
754     * <p>
755     * <b>Definition:</b>
756     * The status of this search parameter definition
757     * </p> 
758         */
759        public SearchParameter setStatus(ConformanceResourceStatusEnum theValue) {
760                setStatus(new BoundCodeDt<ConformanceResourceStatusEnum>(ConformanceResourceStatusEnum.VALUESET_BINDER, theValue));
761                
762/*
763                getStatusElement().setValueAsEnum(theValue);
764*/
765                return this;
766        }
767
768  
769        /**
770         * Gets the value(s) for <b>experimental</b> (class).
771         * creating it if it does
772         * not exist. Will not return <code>null</code>.
773         *
774     * <p>
775     * <b>Definition:</b>
776     * A flag to indicate that this search parameter definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
777     * </p> 
778         */
779        public BooleanDt getExperimentalElement() {  
780                if (myExperimental == null) {
781                        myExperimental = new BooleanDt();
782                }
783                return myExperimental;
784        }
785
786        
787        /**
788         * Gets the value(s) for <b>experimental</b> (class).
789         * creating it if it does
790         * not exist. This method may return <code>null</code>.
791         *
792     * <p>
793     * <b>Definition:</b>
794     * A flag to indicate that this search parameter definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
795     * </p> 
796         */
797        public Boolean getExperimental() {  
798                return getExperimentalElement().getValue();
799        }
800
801        /**
802         * Sets the value(s) for <b>experimental</b> (class)
803         *
804     * <p>
805     * <b>Definition:</b>
806     * A flag to indicate that this search parameter definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
807     * </p> 
808         */
809        public SearchParameter setExperimental(BooleanDt theValue) {
810                myExperimental = theValue;
811                return this;
812        }
813        
814        
815
816        /**
817         * Sets the value for <b>experimental</b> (class)
818         *
819     * <p>
820     * <b>Definition:</b>
821     * A flag to indicate that this search parameter definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage
822     * </p> 
823         */
824        public SearchParameter setExperimental( boolean theBoolean) {
825                myExperimental = new BooleanDt(theBoolean); 
826                return this; 
827        }
828
829 
830        /**
831         * Gets the value(s) for <b>publisher</b> (who.witness).
832         * creating it if it does
833         * not exist. Will not return <code>null</code>.
834         *
835     * <p>
836     * <b>Definition:</b>
837     * The name of the individual or organization that published the search parameter
838     * </p> 
839         */
840        public StringDt getPublisherElement() {  
841                if (myPublisher == null) {
842                        myPublisher = new StringDt();
843                }
844                return myPublisher;
845        }
846
847        
848        /**
849         * Gets the value(s) for <b>publisher</b> (who.witness).
850         * creating it if it does
851         * not exist. This method may return <code>null</code>.
852         *
853     * <p>
854     * <b>Definition:</b>
855     * The name of the individual or organization that published the search parameter
856     * </p> 
857         */
858        public String getPublisher() {  
859                return getPublisherElement().getValue();
860        }
861
862        /**
863         * Sets the value(s) for <b>publisher</b> (who.witness)
864         *
865     * <p>
866     * <b>Definition:</b>
867     * The name of the individual or organization that published the search parameter
868     * </p> 
869         */
870        public SearchParameter setPublisher(StringDt theValue) {
871                myPublisher = theValue;
872                return this;
873        }
874        
875        
876
877        /**
878         * Sets the value for <b>publisher</b> (who.witness)
879         *
880     * <p>
881     * <b>Definition:</b>
882     * The name of the individual or organization that published the search parameter
883     * </p> 
884         */
885        public SearchParameter setPublisher( String theString) {
886                myPublisher = new StringDt(theString); 
887                return this; 
888        }
889
890 
891        /**
892         * Gets the value(s) for <b>contact</b> ().
893         * creating it if it does
894         * not exist. Will not return <code>null</code>.
895         *
896     * <p>
897     * <b>Definition:</b>
898     * Contacts to assist a user in finding and communicating with the publisher
899     * </p> 
900         */
901        public java.util.List<Contact> getContact() {  
902                if (myContact == null) {
903                        myContact = new java.util.ArrayList<Contact>();
904                }
905                return myContact;
906        }
907
908        /**
909         * Sets the value(s) for <b>contact</b> ()
910         *
911     * <p>
912     * <b>Definition:</b>
913     * Contacts to assist a user in finding and communicating with the publisher
914     * </p> 
915         */
916        public SearchParameter setContact(java.util.List<Contact> theValue) {
917                myContact = theValue;
918                return this;
919        }
920        
921        
922
923        /**
924         * Adds and returns a new value for <b>contact</b> ()
925         *
926     * <p>
927     * <b>Definition:</b>
928     * Contacts to assist a user in finding and communicating with the publisher
929     * </p> 
930         */
931        public Contact addContact() {
932                Contact newType = new Contact();
933                getContact().add(newType);
934                return newType; 
935        }
936
937        /**
938         * Adds a given new value for <b>contact</b> ()
939         *
940         * <p>
941         * <b>Definition:</b>
942         * Contacts to assist a user in finding and communicating with the publisher
943         * </p>
944         * @param theValue The contact to add (must not be <code>null</code>)
945         */
946        public SearchParameter addContact(Contact theValue) {
947                if (theValue == null) {
948                        throw new NullPointerException("theValue must not be null");
949                }
950                getContact().add(theValue);
951                return this;
952        }
953
954        /**
955         * Gets the first repetition for <b>contact</b> (),
956         * creating it if it does not already exist.
957         *
958     * <p>
959     * <b>Definition:</b>
960     * Contacts to assist a user in finding and communicating with the publisher
961     * </p> 
962         */
963        public Contact getContactFirstRep() {
964                if (getContact().isEmpty()) {
965                        return addContact();
966                }
967                return getContact().get(0); 
968        }
969  
970        /**
971         * Gets the value(s) for <b>date</b> (when.recorded).
972         * creating it if it does
973         * not exist. Will not return <code>null</code>.
974         *
975     * <p>
976     * <b>Definition:</b>
977     * The date  (and optionally time) when the search parameter 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 search parameter changes
978     * </p> 
979         */
980        public DateTimeDt getDateElement() {  
981                if (myDate == null) {
982                        myDate = new DateTimeDt();
983                }
984                return myDate;
985        }
986
987        
988        /**
989         * Gets the value(s) for <b>date</b> (when.recorded).
990         * creating it if it does
991         * not exist. This method may return <code>null</code>.
992         *
993     * <p>
994     * <b>Definition:</b>
995     * The date  (and optionally time) when the search parameter 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 search parameter changes
996     * </p> 
997         */
998        public Date getDate() {  
999                return getDateElement().getValue();
1000        }
1001
1002        /**
1003         * Sets the value(s) for <b>date</b> (when.recorded)
1004         *
1005     * <p>
1006     * <b>Definition:</b>
1007     * The date  (and optionally time) when the search parameter 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 search parameter changes
1008     * </p> 
1009         */
1010        public SearchParameter setDate(DateTimeDt theValue) {
1011                myDate = theValue;
1012                return this;
1013        }
1014        
1015        
1016
1017        /**
1018         * Sets the value for <b>date</b> (when.recorded)
1019         *
1020     * <p>
1021     * <b>Definition:</b>
1022     * The date  (and optionally time) when the search parameter 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 search parameter changes
1023     * </p> 
1024         */
1025        public SearchParameter setDateWithSecondsPrecision( Date theDate) {
1026                myDate = new DateTimeDt(theDate); 
1027                return this; 
1028        }
1029
1030        /**
1031         * Sets the value for <b>date</b> (when.recorded)
1032         *
1033     * <p>
1034     * <b>Definition:</b>
1035     * The date  (and optionally time) when the search parameter 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 search parameter changes
1036     * </p> 
1037         */
1038        public SearchParameter setDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
1039                myDate = new DateTimeDt(theDate, thePrecision); 
1040                return this; 
1041        }
1042
1043 
1044        /**
1045         * Gets the value(s) for <b>requirements</b> (why).
1046         * creating it if it does
1047         * not exist. Will not return <code>null</code>.
1048         *
1049     * <p>
1050     * <b>Definition:</b>
1051     * The Scope and Usage that this search parameter was created to meet
1052     * </p> 
1053         */
1054        public StringDt getRequirementsElement() {  
1055                if (myRequirements == null) {
1056                        myRequirements = new StringDt();
1057                }
1058                return myRequirements;
1059        }
1060
1061        
1062        /**
1063         * Gets the value(s) for <b>requirements</b> (why).
1064         * creating it if it does
1065         * not exist. This method may return <code>null</code>.
1066         *
1067     * <p>
1068     * <b>Definition:</b>
1069     * The Scope and Usage that this search parameter was created to meet
1070     * </p> 
1071         */
1072        public String getRequirements() {  
1073                return getRequirementsElement().getValue();
1074        }
1075
1076        /**
1077         * Sets the value(s) for <b>requirements</b> (why)
1078         *
1079     * <p>
1080     * <b>Definition:</b>
1081     * The Scope and Usage that this search parameter was created to meet
1082     * </p> 
1083         */
1084        public SearchParameter setRequirements(StringDt theValue) {
1085                myRequirements = theValue;
1086                return this;
1087        }
1088        
1089        
1090
1091        /**
1092         * Sets the value for <b>requirements</b> (why)
1093         *
1094     * <p>
1095     * <b>Definition:</b>
1096     * The Scope and Usage that this search parameter was created to meet
1097     * </p> 
1098         */
1099        public SearchParameter setRequirements( String theString) {
1100                myRequirements = new StringDt(theString); 
1101                return this; 
1102        }
1103
1104 
1105        /**
1106         * Gets the value(s) for <b>code</b> ().
1107         * creating it if it does
1108         * not exist. Will not return <code>null</code>.
1109         *
1110     * <p>
1111     * <b>Definition:</b>
1112     * The code used in the URL or the parameter name in a parameters resource for this search parameter
1113     * </p> 
1114         */
1115        public CodeDt getCodeElement() {  
1116                if (myCode == null) {
1117                        myCode = new CodeDt();
1118                }
1119                return myCode;
1120        }
1121
1122        
1123        /**
1124         * Gets the value(s) for <b>code</b> ().
1125         * creating it if it does
1126         * not exist. This method may return <code>null</code>.
1127         *
1128     * <p>
1129     * <b>Definition:</b>
1130     * The code used in the URL or the parameter name in a parameters resource for this search parameter
1131     * </p> 
1132         */
1133        public String getCode() {  
1134                return getCodeElement().getValue();
1135        }
1136
1137        /**
1138         * Sets the value(s) for <b>code</b> ()
1139         *
1140     * <p>
1141     * <b>Definition:</b>
1142     * The code used in the URL or the parameter name in a parameters resource for this search parameter
1143     * </p> 
1144         */
1145        public SearchParameter setCode(CodeDt theValue) {
1146                myCode = theValue;
1147                return this;
1148        }
1149        
1150        
1151
1152        /**
1153         * Sets the value for <b>code</b> ()
1154         *
1155     * <p>
1156     * <b>Definition:</b>
1157     * The code used in the URL or the parameter name in a parameters resource for this search parameter
1158     * </p> 
1159         */
1160        public SearchParameter setCode( String theCode) {
1161                myCode = new CodeDt(theCode); 
1162                return this; 
1163        }
1164
1165 
1166        /**
1167         * Gets the value(s) for <b>base</b> ().
1168         * creating it if it does
1169         * not exist. Will not return <code>null</code>.
1170         *
1171     * <p>
1172     * <b>Definition:</b>
1173     * The base resource type that this search parameter refers to
1174     * </p> 
1175         */
1176        public BoundCodeDt<ResourceTypeEnum> getBaseElement() {  
1177                if (myBase == null) {
1178                        myBase = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER);
1179                }
1180                return myBase;
1181        }
1182
1183        
1184        /**
1185         * Gets the value(s) for <b>base</b> ().
1186         * creating it if it does
1187         * not exist. This method may return <code>null</code>.
1188         *
1189     * <p>
1190     * <b>Definition:</b>
1191     * The base resource type that this search parameter refers to
1192     * </p> 
1193         */
1194        public String getBase() {  
1195                return getBaseElement().getValue();
1196        }
1197
1198        /**
1199         * Sets the value(s) for <b>base</b> ()
1200         *
1201     * <p>
1202     * <b>Definition:</b>
1203     * The base resource type that this search parameter refers to
1204     * </p> 
1205         */
1206        public SearchParameter setBase(BoundCodeDt<ResourceTypeEnum> theValue) {
1207                myBase = theValue;
1208                return this;
1209        }
1210        
1211        
1212
1213        /**
1214         * Sets the value(s) for <b>base</b> ()
1215         *
1216     * <p>
1217     * <b>Definition:</b>
1218     * The base resource type that this search parameter refers to
1219     * </p> 
1220         */
1221        public SearchParameter setBase(ResourceTypeEnum theValue) {
1222                setBase(new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER, theValue));
1223                
1224/*
1225                getBaseElement().setValueAsEnum(theValue);
1226*/
1227                return this;
1228        }
1229
1230  
1231        /**
1232         * Gets the value(s) for <b>type</b> ().
1233         * creating it if it does
1234         * not exist. Will not return <code>null</code>.
1235         *
1236     * <p>
1237     * <b>Definition:</b>
1238     * The type of value a search parameter refers to, and how the content is interpreted
1239     * </p> 
1240         */
1241        public BoundCodeDt<SearchParamTypeEnum> getTypeElement() {  
1242                if (myType == null) {
1243                        myType = new BoundCodeDt<SearchParamTypeEnum>(SearchParamTypeEnum.VALUESET_BINDER);
1244                }
1245                return myType;
1246        }
1247
1248        
1249        /**
1250         * Gets the value(s) for <b>type</b> ().
1251         * creating it if it does
1252         * not exist. This method may return <code>null</code>.
1253         *
1254     * <p>
1255     * <b>Definition:</b>
1256     * The type of value a search parameter refers to, and how the content is interpreted
1257     * </p> 
1258         */
1259        public String getType() {  
1260                return getTypeElement().getValue();
1261        }
1262
1263        /**
1264         * Sets the value(s) for <b>type</b> ()
1265         *
1266     * <p>
1267     * <b>Definition:</b>
1268     * The type of value a search parameter refers to, and how the content is interpreted
1269     * </p> 
1270         */
1271        public SearchParameter setType(BoundCodeDt<SearchParamTypeEnum> theValue) {
1272                myType = theValue;
1273                return this;
1274        }
1275        
1276        
1277
1278        /**
1279         * Sets the value(s) for <b>type</b> ()
1280         *
1281     * <p>
1282     * <b>Definition:</b>
1283     * The type of value a search parameter refers to, and how the content is interpreted
1284     * </p> 
1285         */
1286        public SearchParameter setType(SearchParamTypeEnum theValue) {
1287                setType(new BoundCodeDt<SearchParamTypeEnum>(SearchParamTypeEnum.VALUESET_BINDER, theValue));
1288                
1289/*
1290                getTypeElement().setValueAsEnum(theValue);
1291*/
1292                return this;
1293        }
1294
1295  
1296        /**
1297         * Gets the value(s) for <b>description</b> ().
1298         * creating it if it does
1299         * not exist. Will not return <code>null</code>.
1300         *
1301     * <p>
1302     * <b>Definition:</b>
1303     * A description of the search parameters and how it used
1304     * </p> 
1305         */
1306        public StringDt getDescriptionElement() {  
1307                if (myDescription == null) {
1308                        myDescription = new StringDt();
1309                }
1310                return myDescription;
1311        }
1312
1313        
1314        /**
1315         * Gets the value(s) for <b>description</b> ().
1316         * creating it if it does
1317         * not exist. This method may return <code>null</code>.
1318         *
1319     * <p>
1320     * <b>Definition:</b>
1321     * A description of the search parameters and how it used
1322     * </p> 
1323         */
1324        public String getDescription() {  
1325                return getDescriptionElement().getValue();
1326        }
1327
1328        /**
1329         * Sets the value(s) for <b>description</b> ()
1330         *
1331     * <p>
1332     * <b>Definition:</b>
1333     * A description of the search parameters and how it used
1334     * </p> 
1335         */
1336        public SearchParameter setDescription(StringDt theValue) {
1337                myDescription = theValue;
1338                return this;
1339        }
1340        
1341        
1342
1343        /**
1344         * Sets the value for <b>description</b> ()
1345         *
1346     * <p>
1347     * <b>Definition:</b>
1348     * A description of the search parameters and how it used
1349     * </p> 
1350         */
1351        public SearchParameter setDescription( String theString) {
1352                myDescription = new StringDt(theString); 
1353                return this; 
1354        }
1355
1356 
1357        /**
1358         * Gets the value(s) for <b>xpath</b> ().
1359         * creating it if it does
1360         * not exist. Will not return <code>null</code>.
1361         *
1362     * <p>
1363     * <b>Definition:</b>
1364     * An XPath expression that returns a set of elements for the search parameter
1365     * </p> 
1366         */
1367        public StringDt getXpathElement() {  
1368                if (myXpath == null) {
1369                        myXpath = new StringDt();
1370                }
1371                return myXpath;
1372        }
1373
1374        
1375        /**
1376         * Gets the value(s) for <b>xpath</b> ().
1377         * creating it if it does
1378         * not exist. This method may return <code>null</code>.
1379         *
1380     * <p>
1381     * <b>Definition:</b>
1382     * An XPath expression that returns a set of elements for the search parameter
1383     * </p> 
1384         */
1385        public String getXpath() {  
1386                return getXpathElement().getValue();
1387        }
1388
1389        /**
1390         * Sets the value(s) for <b>xpath</b> ()
1391         *
1392     * <p>
1393     * <b>Definition:</b>
1394     * An XPath expression that returns a set of elements for the search parameter
1395     * </p> 
1396         */
1397        public SearchParameter setXpath(StringDt theValue) {
1398                myXpath = theValue;
1399                return this;
1400        }
1401        
1402        
1403
1404        /**
1405         * Sets the value for <b>xpath</b> ()
1406         *
1407     * <p>
1408     * <b>Definition:</b>
1409     * An XPath expression that returns a set of elements for the search parameter
1410     * </p> 
1411         */
1412        public SearchParameter setXpath( String theString) {
1413                myXpath = new StringDt(theString); 
1414                return this; 
1415        }
1416
1417 
1418        /**
1419         * Gets the value(s) for <b>xpathUsage</b> ().
1420         * creating it if it does
1421         * not exist. Will not return <code>null</code>.
1422         *
1423     * <p>
1424     * <b>Definition:</b>
1425     * How the search parameter relates to the set of elements returned by evaluating the xpath query
1426     * </p> 
1427         */
1428        public BoundCodeDt<XPathUsageTypeEnum> getXpathUsageElement() {  
1429                if (myXpathUsage == null) {
1430                        myXpathUsage = new BoundCodeDt<XPathUsageTypeEnum>(XPathUsageTypeEnum.VALUESET_BINDER);
1431                }
1432                return myXpathUsage;
1433        }
1434
1435        
1436        /**
1437         * Gets the value(s) for <b>xpathUsage</b> ().
1438         * creating it if it does
1439         * not exist. This method may return <code>null</code>.
1440         *
1441     * <p>
1442     * <b>Definition:</b>
1443     * How the search parameter relates to the set of elements returned by evaluating the xpath query
1444     * </p> 
1445         */
1446        public String getXpathUsage() {  
1447                return getXpathUsageElement().getValue();
1448        }
1449
1450        /**
1451         * Sets the value(s) for <b>xpathUsage</b> ()
1452         *
1453     * <p>
1454     * <b>Definition:</b>
1455     * How the search parameter relates to the set of elements returned by evaluating the xpath query
1456     * </p> 
1457         */
1458        public SearchParameter setXpathUsage(BoundCodeDt<XPathUsageTypeEnum> theValue) {
1459                myXpathUsage = theValue;
1460                return this;
1461        }
1462        
1463        
1464
1465        /**
1466         * Sets the value(s) for <b>xpathUsage</b> ()
1467         *
1468     * <p>
1469     * <b>Definition:</b>
1470     * How the search parameter relates to the set of elements returned by evaluating the xpath query
1471     * </p> 
1472         */
1473        public SearchParameter setXpathUsage(XPathUsageTypeEnum theValue) {
1474                setXpathUsage(new BoundCodeDt<XPathUsageTypeEnum>(XPathUsageTypeEnum.VALUESET_BINDER, theValue));
1475                
1476/*
1477                getXpathUsageElement().setValueAsEnum(theValue);
1478*/
1479                return this;
1480        }
1481
1482  
1483        /**
1484         * Gets the value(s) for <b>target</b> ().
1485         * creating it if it does
1486         * not exist. Will not return <code>null</code>.
1487         *
1488     * <p>
1489     * <b>Definition:</b>
1490     * Types of resource (if a resource is referenced)
1491     * </p> 
1492         */
1493        public java.util.List<BoundCodeDt<ResourceTypeEnum>> getTarget() {  
1494                if (myTarget == null) {
1495                        myTarget = new java.util.ArrayList<BoundCodeDt<ResourceTypeEnum>>();
1496                }
1497                return myTarget;
1498        }
1499
1500        /**
1501         * Sets the value(s) for <b>target</b> ()
1502         *
1503     * <p>
1504     * <b>Definition:</b>
1505     * Types of resource (if a resource is referenced)
1506     * </p> 
1507         */
1508        public SearchParameter setTarget(java.util.List<BoundCodeDt<ResourceTypeEnum>> theValue) {
1509                myTarget = theValue;
1510                return this;
1511        }
1512        
1513        
1514
1515        /**
1516         * Add a value for <b>target</b> () using an enumerated type. This
1517         * is intended as a convenience method for situations where the FHIR defined ValueSets are mandatory
1518         * or contain the desirable codes. If you wish to use codes other than those which are built-in, 
1519         * you may also use the {@link #addTarget()} method.
1520         *
1521     * <p>
1522     * <b>Definition:</b>
1523     * Types of resource (if a resource is referenced)
1524     * </p> 
1525         */
1526        public BoundCodeDt<ResourceTypeEnum> addTarget(ResourceTypeEnum theValue) {
1527                BoundCodeDt<ResourceTypeEnum> retVal = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER, theValue);
1528                getTarget().add(retVal);
1529                return retVal;
1530        }
1531
1532        /**
1533         * Gets the first repetition for <b>target</b> (),
1534         * creating it if it does not already exist.
1535         *
1536     * <p>
1537     * <b>Definition:</b>
1538     * Types of resource (if a resource is referenced)
1539     * </p> 
1540         */
1541        public BoundCodeDt<ResourceTypeEnum> getTargetFirstRep() {
1542                if (getTarget().size() == 0) {
1543                        addTarget();
1544                }
1545                return getTarget().get(0);
1546        }
1547
1548        /**
1549         * Add a value for <b>target</b> ()
1550         *
1551     * <p>
1552     * <b>Definition:</b>
1553     * Types of resource (if a resource is referenced)
1554     * </p> 
1555         */
1556        public BoundCodeDt<ResourceTypeEnum> addTarget() {
1557                BoundCodeDt<ResourceTypeEnum> retVal = new BoundCodeDt<ResourceTypeEnum>(ResourceTypeEnum.VALUESET_BINDER);
1558                getTarget().add(retVal);
1559                return retVal;
1560        }
1561
1562        /**
1563         * Sets the value(s), and clears any existing value(s) for <b>target</b> ()
1564         *
1565     * <p>
1566     * <b>Definition:</b>
1567     * Types of resource (if a resource is referenced)
1568     * </p> 
1569         */
1570        public SearchParameter setTarget(ResourceTypeEnum theValue) {
1571                getTarget().clear();
1572                addTarget(theValue);
1573                return this;
1574        }
1575
1576  
1577        /**
1578         * Block class for child element: <b>SearchParameter.contact</b> ()
1579         *
1580     * <p>
1581     * <b>Definition:</b>
1582     * Contacts to assist a user in finding and communicating with the publisher
1583     * </p> 
1584         */
1585        @Block()        
1586        public static class Contact 
1587            extends  BaseIdentifiableElement  
1588            implements IResourceBlock {
1589        
1590        @Child(name="name", type=StringDt.class, order=0, min=0, max=1, summary=true, modifier=false)   
1591        @Description(
1592                shortDefinition="",
1593                formalDefinition="The name of an individual to contact regarding the search parameter"
1594        )
1595        private StringDt myName;
1596        
1597        @Child(name="telecom", type=ContactPointDt.class, order=1, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
1598        @Description(
1599                shortDefinition="",
1600                formalDefinition="Contact details for individual (if a name was provided) or the publisher"
1601        )
1602        private java.util.List<ContactPointDt> myTelecom;
1603        
1604
1605        @Override
1606        public boolean isEmpty() {
1607                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myName,  myTelecom);
1608        }
1609        
1610        @Override
1611        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1612                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myName, myTelecom);
1613        }
1614
1615        /**
1616         * Gets the value(s) for <b>name</b> ().
1617         * creating it if it does
1618         * not exist. Will not return <code>null</code>.
1619         *
1620     * <p>
1621     * <b>Definition:</b>
1622     * The name of an individual to contact regarding the search parameter
1623     * </p> 
1624         */
1625        public StringDt getNameElement() {  
1626                if (myName == null) {
1627                        myName = new StringDt();
1628                }
1629                return myName;
1630        }
1631
1632        
1633        /**
1634         * Gets the value(s) for <b>name</b> ().
1635         * creating it if it does
1636         * not exist. This method may return <code>null</code>.
1637         *
1638     * <p>
1639     * <b>Definition:</b>
1640     * The name of an individual to contact regarding the search parameter
1641     * </p> 
1642         */
1643        public String getName() {  
1644                return getNameElement().getValue();
1645        }
1646
1647        /**
1648         * Sets the value(s) for <b>name</b> ()
1649         *
1650     * <p>
1651     * <b>Definition:</b>
1652     * The name of an individual to contact regarding the search parameter
1653     * </p> 
1654         */
1655        public Contact setName(StringDt theValue) {
1656                myName = theValue;
1657                return this;
1658        }
1659        
1660        
1661
1662        /**
1663         * Sets the value for <b>name</b> ()
1664         *
1665     * <p>
1666     * <b>Definition:</b>
1667     * The name of an individual to contact regarding the search parameter
1668     * </p> 
1669         */
1670        public Contact setName( String theString) {
1671                myName = new StringDt(theString); 
1672                return this; 
1673        }
1674
1675 
1676        /**
1677         * Gets the value(s) for <b>telecom</b> ().
1678         * creating it if it does
1679         * not exist. Will not return <code>null</code>.
1680         *
1681     * <p>
1682     * <b>Definition:</b>
1683     * Contact details for individual (if a name was provided) or the publisher
1684     * </p> 
1685         */
1686        public java.util.List<ContactPointDt> getTelecom() {  
1687                if (myTelecom == null) {
1688                        myTelecom = new java.util.ArrayList<ContactPointDt>();
1689                }
1690                return myTelecom;
1691        }
1692
1693        /**
1694         * Sets the value(s) for <b>telecom</b> ()
1695         *
1696     * <p>
1697     * <b>Definition:</b>
1698     * Contact details for individual (if a name was provided) or the publisher
1699     * </p> 
1700         */
1701        public Contact setTelecom(java.util.List<ContactPointDt> theValue) {
1702                myTelecom = theValue;
1703                return this;
1704        }
1705        
1706        
1707
1708        /**
1709         * Adds and returns a new value for <b>telecom</b> ()
1710         *
1711     * <p>
1712     * <b>Definition:</b>
1713     * Contact details for individual (if a name was provided) or the publisher
1714     * </p> 
1715         */
1716        public ContactPointDt addTelecom() {
1717                ContactPointDt newType = new ContactPointDt();
1718                getTelecom().add(newType);
1719                return newType; 
1720        }
1721
1722        /**
1723         * Adds a given new value for <b>telecom</b> ()
1724         *
1725         * <p>
1726         * <b>Definition:</b>
1727         * Contact details for individual (if a name was provided) or the publisher
1728         * </p>
1729         * @param theValue The telecom to add (must not be <code>null</code>)
1730         */
1731        public Contact addTelecom(ContactPointDt theValue) {
1732                if (theValue == null) {
1733                        throw new NullPointerException("theValue must not be null");
1734                }
1735                getTelecom().add(theValue);
1736                return this;
1737        }
1738
1739        /**
1740         * Gets the first repetition for <b>telecom</b> (),
1741         * creating it if it does not already exist.
1742         *
1743     * <p>
1744     * <b>Definition:</b>
1745     * Contact details for individual (if a name was provided) or the publisher
1746     * </p> 
1747         */
1748        public ContactPointDt getTelecomFirstRep() {
1749                if (getTelecom().isEmpty()) {
1750                        return addTelecom();
1751                }
1752                return getTelecom().get(0); 
1753        }
1754  
1755
1756
1757        }
1758
1759
1760
1761
1762    @Override
1763    public String getResourceName() {
1764        return "SearchParameter";
1765    }
1766    
1767    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
1768        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
1769    }
1770
1771
1772}