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