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>Practitioner</b> Resource
282 * (administrative.individual)
283 *
284 * <p>
285 * <b>Definition:</b>
286 * A person who is directly or indirectly involved in the provisioning of healthcare.
287 * </p> 
288 *
289 * <p>
290 * <b>Requirements:</b>
291 * Need to track doctors, staff, locums etc. for both healthcare practitioners, funders, etc.
292 * </p> 
293 *
294 * <p>
295 * <b>Profile Definition:</b>
296 * <a href="http://hl7.org/fhir/profiles/Practitioner">http://hl7.org/fhir/profiles/Practitioner</a> 
297 * </p>
298 *
299 */
300@ResourceDef(name="Practitioner", profile="http://hl7.org/fhir/profiles/Practitioner", id="practitioner")
301public class Practitioner extends ca.uhn.fhir.model.dstu2.resource.BaseResource
302    implements  IResource 
303    {
304
305        /**
306         * Search parameter constant for <b>identifier</b>
307         * <p>
308         * Description: <b>A practitioner's Identifier</b><br>
309         * Type: <b>token</b><br>
310         * Path: <b>Practitioner.identifier</b><br>
311         * </p>
312         */
313        @SearchParamDefinition(name="identifier", path="Practitioner.identifier", description="A practitioner's Identifier", type="token" 
314 )
315        public static final String SP_IDENTIFIER = "identifier";
316
317        /**
318         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
319         * <p>
320         * Description: <b>A practitioner's Identifier</b><br>
321         * Type: <b>token</b><br>
322         * Path: <b>Practitioner.identifier</b><br>
323         * </p>
324         */
325        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
326
327        /**
328         * Search parameter constant for <b>name</b>
329         * <p>
330         * Description: <b>A portion of either family or given name</b><br>
331         * Type: <b>string</b><br>
332         * Path: <b>Practitioner.name</b><br>
333         * </p>
334         */
335        @SearchParamDefinition(name="name", path="Practitioner.name", description="A portion of either family or given name", 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>A portion of either family or given name</b><br>
343         * Type: <b>string</b><br>
344         * Path: <b>Practitioner.name</b><br>
345         * </p>
346         */
347        public static final StringClientParam NAME = new StringClientParam(SP_NAME);
348
349        /**
350         * Search parameter constant for <b>family</b>
351         * <p>
352         * Description: <b>A portion of the family name</b><br>
353         * Type: <b>string</b><br>
354         * Path: <b>Practitioner.name.family</b><br>
355         * </p>
356         */
357        @SearchParamDefinition(name="family", path="Practitioner.name.family", description="A portion of the family name", type="string" 
358 )
359        public static final String SP_FAMILY = "family";
360
361        /**
362         * <b>Fluent Client</b> search parameter constant for <b>family</b>
363         * <p>
364         * Description: <b>A portion of the family name</b><br>
365         * Type: <b>string</b><br>
366         * Path: <b>Practitioner.name.family</b><br>
367         * </p>
368         */
369        public static final StringClientParam FAMILY = new StringClientParam(SP_FAMILY);
370
371        /**
372         * Search parameter constant for <b>given</b>
373         * <p>
374         * Description: <b>A portion of the given name</b><br>
375         * Type: <b>string</b><br>
376         * Path: <b>Practitioner.name.given</b><br>
377         * </p>
378         */
379        @SearchParamDefinition(name="given", path="Practitioner.name.given", description="A portion of the given name", type="string" 
380 )
381        public static final String SP_GIVEN = "given";
382
383        /**
384         * <b>Fluent Client</b> search parameter constant for <b>given</b>
385         * <p>
386         * Description: <b>A portion of the given name</b><br>
387         * Type: <b>string</b><br>
388         * Path: <b>Practitioner.name.given</b><br>
389         * </p>
390         */
391        public static final StringClientParam GIVEN = new StringClientParam(SP_GIVEN);
392
393        /**
394         * Search parameter constant for <b>phonetic</b>
395         * <p>
396         * Description: <b>A portion of either family or given name using some kind of phonetic matching algorithm</b><br>
397         * Type: <b>string</b><br>
398         * Path: <b>Practitioner.name</b><br>
399         * </p>
400         */
401        @SearchParamDefinition(name="phonetic", path="Practitioner.name", description="A portion of either family or given name using some kind of phonetic matching algorithm", type="string" 
402 )
403        public static final String SP_PHONETIC = "phonetic";
404
405        /**
406         * <b>Fluent Client</b> search parameter constant for <b>phonetic</b>
407         * <p>
408         * Description: <b>A portion of either family or given name using some kind of phonetic matching algorithm</b><br>
409         * Type: <b>string</b><br>
410         * Path: <b>Practitioner.name</b><br>
411         * </p>
412         */
413        public static final StringClientParam PHONETIC = new StringClientParam(SP_PHONETIC);
414
415        /**
416         * Search parameter constant for <b>telecom</b>
417         * <p>
418         * Description: <b>The value in any kind of contact</b><br>
419         * Type: <b>token</b><br>
420         * Path: <b>Practitioner.telecom</b><br>
421         * </p>
422         */
423        @SearchParamDefinition(name="telecom", path="Practitioner.telecom", description="The value in any kind of contact", type="token" 
424 )
425        public static final String SP_TELECOM = "telecom";
426
427        /**
428         * <b>Fluent Client</b> search parameter constant for <b>telecom</b>
429         * <p>
430         * Description: <b>The value in any kind of contact</b><br>
431         * Type: <b>token</b><br>
432         * Path: <b>Practitioner.telecom</b><br>
433         * </p>
434         */
435        public static final TokenClientParam TELECOM = new TokenClientParam(SP_TELECOM);
436
437        /**
438         * Search parameter constant for <b>phone</b>
439         * <p>
440         * Description: <b>A value in a phone contact</b><br>
441         * Type: <b>token</b><br>
442         * Path: <b>Practitioner.telecom(system=phone)</b><br>
443         * </p>
444         */
445        @SearchParamDefinition(name="phone", path="Practitioner.telecom(system=phone)", description="A value in a phone contact", type="token" 
446 )
447        public static final String SP_PHONE = "phone";
448
449        /**
450         * <b>Fluent Client</b> search parameter constant for <b>phone</b>
451         * <p>
452         * Description: <b>A value in a phone contact</b><br>
453         * Type: <b>token</b><br>
454         * Path: <b>Practitioner.telecom(system=phone)</b><br>
455         * </p>
456         */
457        public static final TokenClientParam PHONE = new TokenClientParam(SP_PHONE);
458
459        /**
460         * Search parameter constant for <b>email</b>
461         * <p>
462         * Description: <b>A value in an email contact</b><br>
463         * Type: <b>token</b><br>
464         * Path: <b>Practitioner.telecom(system=email)</b><br>
465         * </p>
466         */
467        @SearchParamDefinition(name="email", path="Practitioner.telecom(system=email)", description="A value in an email contact", type="token" 
468 )
469        public static final String SP_EMAIL = "email";
470
471        /**
472         * <b>Fluent Client</b> search parameter constant for <b>email</b>
473         * <p>
474         * Description: <b>A value in an email contact</b><br>
475         * Type: <b>token</b><br>
476         * Path: <b>Practitioner.telecom(system=email)</b><br>
477         * </p>
478         */
479        public static final TokenClientParam EMAIL = new TokenClientParam(SP_EMAIL);
480
481        /**
482         * Search parameter constant for <b>address</b>
483         * <p>
484         * Description: <b>An address in any kind of address/part</b><br>
485         * Type: <b>string</b><br>
486         * Path: <b>Practitioner.address</b><br>
487         * </p>
488         */
489        @SearchParamDefinition(name="address", path="Practitioner.address", description="An address in any kind of address/part", type="string" 
490 )
491        public static final String SP_ADDRESS = "address";
492
493        /**
494         * <b>Fluent Client</b> search parameter constant for <b>address</b>
495         * <p>
496         * Description: <b>An address in any kind of address/part</b><br>
497         * Type: <b>string</b><br>
498         * Path: <b>Practitioner.address</b><br>
499         * </p>
500         */
501        public static final StringClientParam ADDRESS = new StringClientParam(SP_ADDRESS);
502
503        /**
504         * Search parameter constant for <b>address-city</b>
505         * <p>
506         * Description: <b>A city specified in an address</b><br>
507         * Type: <b>string</b><br>
508         * Path: <b>Practitioner.address.city</b><br>
509         * </p>
510         */
511        @SearchParamDefinition(name="address-city", path="Practitioner.address.city", description="A city specified in an address", type="string" 
512 )
513        public static final String SP_ADDRESS_CITY = "address-city";
514
515        /**
516         * <b>Fluent Client</b> search parameter constant for <b>address-city</b>
517         * <p>
518         * Description: <b>A city specified in an address</b><br>
519         * Type: <b>string</b><br>
520         * Path: <b>Practitioner.address.city</b><br>
521         * </p>
522         */
523        public static final StringClientParam ADDRESS_CITY = new StringClientParam(SP_ADDRESS_CITY);
524
525        /**
526         * Search parameter constant for <b>address-state</b>
527         * <p>
528         * Description: <b>A state specified in an address</b><br>
529         * Type: <b>string</b><br>
530         * Path: <b>Practitioner.address.state</b><br>
531         * </p>
532         */
533        @SearchParamDefinition(name="address-state", path="Practitioner.address.state", description="A state specified in an address", type="string" 
534 )
535        public static final String SP_ADDRESS_STATE = "address-state";
536
537        /**
538         * <b>Fluent Client</b> search parameter constant for <b>address-state</b>
539         * <p>
540         * Description: <b>A state specified in an address</b><br>
541         * Type: <b>string</b><br>
542         * Path: <b>Practitioner.address.state</b><br>
543         * </p>
544         */
545        public static final StringClientParam ADDRESS_STATE = new StringClientParam(SP_ADDRESS_STATE);
546
547        /**
548         * Search parameter constant for <b>address-postalcode</b>
549         * <p>
550         * Description: <b>A postalCode specified in an address</b><br>
551         * Type: <b>string</b><br>
552         * Path: <b>Practitioner.address.postalCode</b><br>
553         * </p>
554         */
555        @SearchParamDefinition(name="address-postalcode", path="Practitioner.address.postalCode", description="A postalCode specified in an address", type="string" 
556 )
557        public static final String SP_ADDRESS_POSTALCODE = "address-postalcode";
558
559        /**
560         * <b>Fluent Client</b> search parameter constant for <b>address-postalcode</b>
561         * <p>
562         * Description: <b>A postalCode specified in an address</b><br>
563         * Type: <b>string</b><br>
564         * Path: <b>Practitioner.address.postalCode</b><br>
565         * </p>
566         */
567        public static final StringClientParam ADDRESS_POSTALCODE = new StringClientParam(SP_ADDRESS_POSTALCODE);
568
569        /**
570         * Search parameter constant for <b>address-country</b>
571         * <p>
572         * Description: <b>A country specified in an address</b><br>
573         * Type: <b>string</b><br>
574         * Path: <b>Practitioner.address.country</b><br>
575         * </p>
576         */
577        @SearchParamDefinition(name="address-country", path="Practitioner.address.country", description="A country specified in an address", type="string" 
578 )
579        public static final String SP_ADDRESS_COUNTRY = "address-country";
580
581        /**
582         * <b>Fluent Client</b> search parameter constant for <b>address-country</b>
583         * <p>
584         * Description: <b>A country specified in an address</b><br>
585         * Type: <b>string</b><br>
586         * Path: <b>Practitioner.address.country</b><br>
587         * </p>
588         */
589        public static final StringClientParam ADDRESS_COUNTRY = new StringClientParam(SP_ADDRESS_COUNTRY);
590
591        /**
592         * Search parameter constant for <b>address-use</b>
593         * <p>
594         * Description: <b>A use code specified in an address</b><br>
595         * Type: <b>token</b><br>
596         * Path: <b>Practitioner.address.use</b><br>
597         * </p>
598         */
599        @SearchParamDefinition(name="address-use", path="Practitioner.address.use", description="A use code specified in an address", type="token" 
600 )
601        public static final String SP_ADDRESS_USE = "address-use";
602
603        /**
604         * <b>Fluent Client</b> search parameter constant for <b>address-use</b>
605         * <p>
606         * Description: <b>A use code specified in an address</b><br>
607         * Type: <b>token</b><br>
608         * Path: <b>Practitioner.address.use</b><br>
609         * </p>
610         */
611        public static final TokenClientParam ADDRESS_USE = new TokenClientParam(SP_ADDRESS_USE);
612
613        /**
614         * Search parameter constant for <b>gender</b>
615         * <p>
616         * Description: <b>Gender of the practitioner</b><br>
617         * Type: <b>token</b><br>
618         * Path: <b>Practitioner.gender</b><br>
619         * </p>
620         */
621        @SearchParamDefinition(name="gender", path="Practitioner.gender", description="Gender of the practitioner", type="token" 
622 )
623        public static final String SP_GENDER = "gender";
624
625        /**
626         * <b>Fluent Client</b> search parameter constant for <b>gender</b>
627         * <p>
628         * Description: <b>Gender of the practitioner</b><br>
629         * Type: <b>token</b><br>
630         * Path: <b>Practitioner.gender</b><br>
631         * </p>
632         */
633        public static final TokenClientParam GENDER = new TokenClientParam(SP_GENDER);
634
635        /**
636         * Search parameter constant for <b>organization</b>
637         * <p>
638         * Description: <b>The identity of the organization the practitioner represents / acts on behalf of</b><br>
639         * Type: <b>reference</b><br>
640         * Path: <b>Practitioner.practitionerRole.managingOrganization</b><br>
641         * </p>
642         */
643        @SearchParamDefinition(name="organization", path="Practitioner.practitionerRole.managingOrganization", description="The identity of the organization the practitioner represents / acts on behalf of", type="reference" 
644 )
645        public static final String SP_ORGANIZATION = "organization";
646
647        /**
648         * <b>Fluent Client</b> search parameter constant for <b>organization</b>
649         * <p>
650         * Description: <b>The identity of the organization the practitioner represents / acts on behalf of</b><br>
651         * Type: <b>reference</b><br>
652         * Path: <b>Practitioner.practitionerRole.managingOrganization</b><br>
653         * </p>
654         */
655        public static final ReferenceClientParam ORGANIZATION = new ReferenceClientParam(SP_ORGANIZATION);
656
657        /**
658         * Search parameter constant for <b>communication</b>
659         * <p>
660         * Description: <b>One of the languages that the practitioner can communicate with</b><br>
661         * Type: <b>token</b><br>
662         * Path: <b>Practitioner.communication</b><br>
663         * </p>
664         */
665        @SearchParamDefinition(name="communication", path="Practitioner.communication", description="One of the languages that the practitioner can communicate with", type="token" 
666 )
667        public static final String SP_COMMUNICATION = "communication";
668
669        /**
670         * <b>Fluent Client</b> search parameter constant for <b>communication</b>
671         * <p>
672         * Description: <b>One of the languages that the practitioner can communicate with</b><br>
673         * Type: <b>token</b><br>
674         * Path: <b>Practitioner.communication</b><br>
675         * </p>
676         */
677        public static final TokenClientParam COMMUNICATION = new TokenClientParam(SP_COMMUNICATION);
678
679        /**
680         * Search parameter constant for <b>location</b>
681         * <p>
682         * Description: <b>One of the locations at which this practitioner provides care</b><br>
683         * Type: <b>reference</b><br>
684         * Path: <b>Practitioner.practitionerRole.location</b><br>
685         * </p>
686         */
687        @SearchParamDefinition(name="location", path="Practitioner.practitionerRole.location", description="One of the locations at which this practitioner provides care", type="reference" 
688 )
689        public static final String SP_LOCATION = "location";
690
691        /**
692         * <b>Fluent Client</b> search parameter constant for <b>location</b>
693         * <p>
694         * Description: <b>One of the locations at which this practitioner provides care</b><br>
695         * Type: <b>reference</b><br>
696         * Path: <b>Practitioner.practitionerRole.location</b><br>
697         * </p>
698         */
699        public static final ReferenceClientParam LOCATION = new ReferenceClientParam(SP_LOCATION);
700
701        /**
702         * Search parameter constant for <b>specialty</b>
703         * <p>
704         * Description: <b>The practitioner has this specialty at an organization</b><br>
705         * Type: <b>token</b><br>
706         * Path: <b>Practitioner.practitionerRole.specialty</b><br>
707         * </p>
708         */
709        @SearchParamDefinition(name="specialty", path="Practitioner.practitionerRole.specialty", description="The practitioner has this specialty at an organization", type="token" 
710 )
711        public static final String SP_SPECIALTY = "specialty";
712
713        /**
714         * <b>Fluent Client</b> search parameter constant for <b>specialty</b>
715         * <p>
716         * Description: <b>The practitioner has this specialty at an organization</b><br>
717         * Type: <b>token</b><br>
718         * Path: <b>Practitioner.practitionerRole.specialty</b><br>
719         * </p>
720         */
721        public static final TokenClientParam SPECIALTY = new TokenClientParam(SP_SPECIALTY);
722
723        /**
724         * Search parameter constant for <b>role</b>
725         * <p>
726         * Description: <b>The practitioner can perform this role at for the organization</b><br>
727         * Type: <b>token</b><br>
728         * Path: <b>Practitioner.practitionerRole.role</b><br>
729         * </p>
730         */
731        @SearchParamDefinition(name="role", path="Practitioner.practitionerRole.role", description="The practitioner can perform this role at for the organization", type="token" 
732 )
733        public static final String SP_ROLE = "role";
734
735        /**
736         * <b>Fluent Client</b> search parameter constant for <b>role</b>
737         * <p>
738         * Description: <b>The practitioner can perform this role at for the organization</b><br>
739         * Type: <b>token</b><br>
740         * Path: <b>Practitioner.practitionerRole.role</b><br>
741         * </p>
742         */
743        public static final TokenClientParam ROLE = new TokenClientParam(SP_ROLE);
744
745
746        /**
747         * Constant for fluent queries to be used to add include statements. Specifies
748         * the path value of "<b>Practitioner:location</b>".
749         */
750        public static final Include INCLUDE_LOCATION = new Include("Practitioner:location");
751
752        /**
753         * Constant for fluent queries to be used to add include statements. Specifies
754         * the path value of "<b>Practitioner:organization</b>".
755         */
756        public static final Include INCLUDE_ORGANIZATION = new Include("Practitioner:organization");
757
758
759        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)       
760        @Description(
761                shortDefinition="id",
762                formalDefinition="An identifier that applies to this person in this role"
763        )
764        private java.util.List<IdentifierDt> myIdentifier;
765        
766        @Child(name="active", type=BooleanDt.class, order=1, min=0, max=1, summary=true, modifier=false)        
767        @Description(
768                shortDefinition="status",
769                formalDefinition="Whether this practitioner's record is in active use"
770        )
771        private BooleanDt myActive;
772        
773        @Child(name="name", type=HumanNameDt.class, order=2, min=0, max=1, summary=true, modifier=false)        
774        @Description(
775                shortDefinition="",
776                formalDefinition="A name associated with the person"
777        )
778        private HumanNameDt myName;
779        
780        @Child(name="telecom", type=ContactPointDt.class, order=3, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
781        @Description(
782                shortDefinition="",
783                formalDefinition="A contact detail for the practitioner, e.g. a telephone number or an email address."
784        )
785        private java.util.List<ContactPointDt> myTelecom;
786        
787        @Child(name="address", type=AddressDt.class, order=4, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)     
788        @Description(
789                shortDefinition="",
790                formalDefinition="The postal address where the practitioner can be found or visited or to which mail can be delivered"
791        )
792        private java.util.List<AddressDt> myAddress;
793        
794        @Child(name="gender", type=CodeDt.class, order=5, min=0, max=1, summary=true, modifier=false)   
795        @Description(
796                shortDefinition="",
797                formalDefinition="Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes."
798        )
799        @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/administrative-gender")
800        private BoundCodeDt<AdministrativeGenderEnum> myGender;
801        
802        @Child(name="birthDate", type=DateDt.class, order=6, min=0, max=1, summary=true, modifier=false)        
803        @Description(
804                shortDefinition="",
805                formalDefinition="The date of birth for the practitioner"
806        )
807        private DateDt myBirthDate;
808        
809        @Child(name="photo", type=AttachmentDt.class, order=7, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)   
810        @Description(
811                shortDefinition="",
812                formalDefinition="Image of the person"
813        )
814        private java.util.List<AttachmentDt> myPhoto;
815        
816        @Child(name="practitionerRole", order=8, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false) 
817        @Description(
818                shortDefinition="",
819                formalDefinition="The list of roles/organizations that the practitioner is associated with"
820        )
821        private java.util.List<PractitionerRole> myPractitionerRole;
822        
823        @Child(name="qualification", order=9, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)    
824        @Description(
825                shortDefinition="",
826                formalDefinition=""
827        )
828        private java.util.List<Qualification> myQualification;
829        
830        @Child(name="communication", type=CodeableConceptDt.class, order=10, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
831        @Description(
832                shortDefinition="",
833                formalDefinition="A language the practitioner is able to use in patient communication"
834        )
835        private java.util.List<CodeableConceptDt> myCommunication;
836        
837
838        @Override
839        public boolean isEmpty() {
840                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myActive,  myName,  myTelecom,  myAddress,  myGender,  myBirthDate,  myPhoto,  myPractitionerRole,  myQualification,  myCommunication);
841        }
842        
843        @Override
844        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
845                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myActive, myName, myTelecom, myAddress, myGender, myBirthDate, myPhoto, myPractitionerRole, myQualification, myCommunication);
846        }
847
848        /**
849         * Gets the value(s) for <b>identifier</b> (id).
850         * creating it if it does
851         * not exist. Will not return <code>null</code>.
852         *
853     * <p>
854     * <b>Definition:</b>
855     * An identifier that applies to this person in this role
856     * </p> 
857         */
858        public java.util.List<IdentifierDt> getIdentifier() {  
859                if (myIdentifier == null) {
860                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
861                }
862                return myIdentifier;
863        }
864
865        /**
866         * Sets the value(s) for <b>identifier</b> (id)
867         *
868     * <p>
869     * <b>Definition:</b>
870     * An identifier that applies to this person in this role
871     * </p> 
872         */
873        public Practitioner setIdentifier(java.util.List<IdentifierDt> theValue) {
874                myIdentifier = theValue;
875                return this;
876        }
877        
878        
879
880        /**
881         * Adds and returns a new value for <b>identifier</b> (id)
882         *
883     * <p>
884     * <b>Definition:</b>
885     * An identifier that applies to this person in this role
886     * </p> 
887         */
888        public IdentifierDt addIdentifier() {
889                IdentifierDt newType = new IdentifierDt();
890                getIdentifier().add(newType);
891                return newType; 
892        }
893
894        /**
895         * Adds a given new value for <b>identifier</b> (id)
896         *
897         * <p>
898         * <b>Definition:</b>
899         * An identifier that applies to this person in this role
900         * </p>
901         * @param theValue The identifier to add (must not be <code>null</code>)
902         */
903        public Practitioner addIdentifier(IdentifierDt theValue) {
904                if (theValue == null) {
905                        throw new NullPointerException("theValue must not be null");
906                }
907                getIdentifier().add(theValue);
908                return this;
909        }
910
911        /**
912         * Gets the first repetition for <b>identifier</b> (id),
913         * creating it if it does not already exist.
914         *
915     * <p>
916     * <b>Definition:</b>
917     * An identifier that applies to this person in this role
918     * </p> 
919         */
920        public IdentifierDt getIdentifierFirstRep() {
921                if (getIdentifier().isEmpty()) {
922                        return addIdentifier();
923                }
924                return getIdentifier().get(0); 
925        }
926  
927        /**
928         * Gets the value(s) for <b>active</b> (status).
929         * creating it if it does
930         * not exist. Will not return <code>null</code>.
931         *
932     * <p>
933     * <b>Definition:</b>
934     * Whether this practitioner's record is in active use
935     * </p> 
936         */
937        public BooleanDt getActiveElement() {  
938                if (myActive == null) {
939                        myActive = new BooleanDt();
940                }
941                return myActive;
942        }
943
944        
945        /**
946         * Gets the value(s) for <b>active</b> (status).
947         * creating it if it does
948         * not exist. This method may return <code>null</code>.
949         *
950     * <p>
951     * <b>Definition:</b>
952     * Whether this practitioner's record is in active use
953     * </p> 
954         */
955        public Boolean getActive() {  
956                return getActiveElement().getValue();
957        }
958
959        /**
960         * Sets the value(s) for <b>active</b> (status)
961         *
962     * <p>
963     * <b>Definition:</b>
964     * Whether this practitioner's record is in active use
965     * </p> 
966         */
967        public Practitioner setActive(BooleanDt theValue) {
968                myActive = theValue;
969                return this;
970        }
971        
972        
973
974        /**
975         * Sets the value for <b>active</b> (status)
976         *
977     * <p>
978     * <b>Definition:</b>
979     * Whether this practitioner's record is in active use
980     * </p> 
981         */
982        public Practitioner setActive( boolean theBoolean) {
983                myActive = new BooleanDt(theBoolean); 
984                return this; 
985        }
986
987 
988        /**
989         * Gets the value(s) for <b>name</b> ().
990         * creating it if it does
991         * not exist. Will not return <code>null</code>.
992         *
993     * <p>
994     * <b>Definition:</b>
995     * A name associated with the person
996     * </p> 
997         */
998        public HumanNameDt getName() {  
999                if (myName == null) {
1000                        myName = new HumanNameDt();
1001                }
1002                return myName;
1003        }
1004
1005        /**
1006         * Sets the value(s) for <b>name</b> ()
1007         *
1008     * <p>
1009     * <b>Definition:</b>
1010     * A name associated with the person
1011     * </p> 
1012         */
1013        public Practitioner setName(HumanNameDt theValue) {
1014                myName = theValue;
1015                return this;
1016        }
1017        
1018        
1019
1020  
1021        /**
1022         * Gets the value(s) for <b>telecom</b> ().
1023         * creating it if it does
1024         * not exist. Will not return <code>null</code>.
1025         *
1026     * <p>
1027     * <b>Definition:</b>
1028     * A contact detail for the practitioner, e.g. a telephone number or an email address.
1029     * </p> 
1030         */
1031        public java.util.List<ContactPointDt> getTelecom() {  
1032                if (myTelecom == null) {
1033                        myTelecom = new java.util.ArrayList<ContactPointDt>();
1034                }
1035                return myTelecom;
1036        }
1037
1038        /**
1039         * Sets the value(s) for <b>telecom</b> ()
1040         *
1041     * <p>
1042     * <b>Definition:</b>
1043     * A contact detail for the practitioner, e.g. a telephone number or an email address.
1044     * </p> 
1045         */
1046        public Practitioner setTelecom(java.util.List<ContactPointDt> theValue) {
1047                myTelecom = theValue;
1048                return this;
1049        }
1050        
1051        
1052
1053        /**
1054         * Adds and returns a new value for <b>telecom</b> ()
1055         *
1056     * <p>
1057     * <b>Definition:</b>
1058     * A contact detail for the practitioner, e.g. a telephone number or an email address.
1059     * </p> 
1060         */
1061        public ContactPointDt addTelecom() {
1062                ContactPointDt newType = new ContactPointDt();
1063                getTelecom().add(newType);
1064                return newType; 
1065        }
1066
1067        /**
1068         * Adds a given new value for <b>telecom</b> ()
1069         *
1070         * <p>
1071         * <b>Definition:</b>
1072         * A contact detail for the practitioner, e.g. a telephone number or an email address.
1073         * </p>
1074         * @param theValue The telecom to add (must not be <code>null</code>)
1075         */
1076        public Practitioner addTelecom(ContactPointDt theValue) {
1077                if (theValue == null) {
1078                        throw new NullPointerException("theValue must not be null");
1079                }
1080                getTelecom().add(theValue);
1081                return this;
1082        }
1083
1084        /**
1085         * Gets the first repetition for <b>telecom</b> (),
1086         * creating it if it does not already exist.
1087         *
1088     * <p>
1089     * <b>Definition:</b>
1090     * A contact detail for the practitioner, e.g. a telephone number or an email address.
1091     * </p> 
1092         */
1093        public ContactPointDt getTelecomFirstRep() {
1094                if (getTelecom().isEmpty()) {
1095                        return addTelecom();
1096                }
1097                return getTelecom().get(0); 
1098        }
1099  
1100        /**
1101         * Gets the value(s) for <b>address</b> ().
1102         * creating it if it does
1103         * not exist. Will not return <code>null</code>.
1104         *
1105     * <p>
1106     * <b>Definition:</b>
1107     * The postal address where the practitioner can be found or visited or to which mail can be delivered
1108     * </p> 
1109         */
1110        public java.util.List<AddressDt> getAddress() {  
1111                if (myAddress == null) {
1112                        myAddress = new java.util.ArrayList<AddressDt>();
1113                }
1114                return myAddress;
1115        }
1116
1117        /**
1118         * Sets the value(s) for <b>address</b> ()
1119         *
1120     * <p>
1121     * <b>Definition:</b>
1122     * The postal address where the practitioner can be found or visited or to which mail can be delivered
1123     * </p> 
1124         */
1125        public Practitioner setAddress(java.util.List<AddressDt> theValue) {
1126                myAddress = theValue;
1127                return this;
1128        }
1129        
1130        
1131
1132        /**
1133         * Adds and returns a new value for <b>address</b> ()
1134         *
1135     * <p>
1136     * <b>Definition:</b>
1137     * The postal address where the practitioner can be found or visited or to which mail can be delivered
1138     * </p> 
1139         */
1140        public AddressDt addAddress() {
1141                AddressDt newType = new AddressDt();
1142                getAddress().add(newType);
1143                return newType; 
1144        }
1145
1146        /**
1147         * Adds a given new value for <b>address</b> ()
1148         *
1149         * <p>
1150         * <b>Definition:</b>
1151         * The postal address where the practitioner can be found or visited or to which mail can be delivered
1152         * </p>
1153         * @param theValue The address to add (must not be <code>null</code>)
1154         */
1155        public Practitioner addAddress(AddressDt theValue) {
1156                if (theValue == null) {
1157                        throw new NullPointerException("theValue must not be null");
1158                }
1159                getAddress().add(theValue);
1160                return this;
1161        }
1162
1163        /**
1164         * Gets the first repetition for <b>address</b> (),
1165         * creating it if it does not already exist.
1166         *
1167     * <p>
1168     * <b>Definition:</b>
1169     * The postal address where the practitioner can be found or visited or to which mail can be delivered
1170     * </p> 
1171         */
1172        public AddressDt getAddressFirstRep() {
1173                if (getAddress().isEmpty()) {
1174                        return addAddress();
1175                }
1176                return getAddress().get(0); 
1177        }
1178  
1179        /**
1180         * Gets the value(s) for <b>gender</b> ().
1181         * creating it if it does
1182         * not exist. Will not return <code>null</code>.
1183         *
1184     * <p>
1185     * <b>Definition:</b>
1186     * Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.
1187     * </p> 
1188         */
1189        public BoundCodeDt<AdministrativeGenderEnum> getGenderElement() {  
1190                if (myGender == null) {
1191                        myGender = new BoundCodeDt<AdministrativeGenderEnum>(AdministrativeGenderEnum.VALUESET_BINDER);
1192                }
1193                return myGender;
1194        }
1195
1196        
1197        /**
1198         * Gets the value(s) for <b>gender</b> ().
1199         * creating it if it does
1200         * not exist. This method may return <code>null</code>.
1201         *
1202     * <p>
1203     * <b>Definition:</b>
1204     * Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.
1205     * </p> 
1206         */
1207        public String getGender() {  
1208                return getGenderElement().getValue();
1209        }
1210
1211        /**
1212         * Sets the value(s) for <b>gender</b> ()
1213         *
1214     * <p>
1215     * <b>Definition:</b>
1216     * Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.
1217     * </p> 
1218         */
1219        public Practitioner setGender(BoundCodeDt<AdministrativeGenderEnum> theValue) {
1220                myGender = theValue;
1221                return this;
1222        }
1223        
1224        
1225
1226        /**
1227         * Sets the value(s) for <b>gender</b> ()
1228         *
1229     * <p>
1230     * <b>Definition:</b>
1231     * Administrative Gender - the gender that the person is considered to have for administration and record keeping purposes.
1232     * </p> 
1233         */
1234        public Practitioner setGender(AdministrativeGenderEnum theValue) {
1235                setGender(new BoundCodeDt<AdministrativeGenderEnum>(AdministrativeGenderEnum.VALUESET_BINDER, theValue));
1236                
1237/*
1238                getGenderElement().setValueAsEnum(theValue);
1239*/
1240                return this;
1241        }
1242
1243  
1244        /**
1245         * Gets the value(s) for <b>birthDate</b> ().
1246         * creating it if it does
1247         * not exist. Will not return <code>null</code>.
1248         *
1249     * <p>
1250     * <b>Definition:</b>
1251     * The date of birth for the practitioner
1252     * </p> 
1253         */
1254        public DateDt getBirthDateElement() {  
1255                if (myBirthDate == null) {
1256                        myBirthDate = new DateDt();
1257                }
1258                return myBirthDate;
1259        }
1260
1261        
1262        /**
1263         * Gets the value(s) for <b>birthDate</b> ().
1264         * creating it if it does
1265         * not exist. This method may return <code>null</code>.
1266         *
1267     * <p>
1268     * <b>Definition:</b>
1269     * The date of birth for the practitioner
1270     * </p> 
1271         */
1272        public Date getBirthDate() {  
1273                return getBirthDateElement().getValue();
1274        }
1275
1276        /**
1277         * Sets the value(s) for <b>birthDate</b> ()
1278         *
1279     * <p>
1280     * <b>Definition:</b>
1281     * The date of birth for the practitioner
1282     * </p> 
1283         */
1284        public Practitioner setBirthDate(DateDt theValue) {
1285                myBirthDate = theValue;
1286                return this;
1287        }
1288        
1289        
1290
1291        /**
1292         * Sets the value for <b>birthDate</b> ()
1293         *
1294     * <p>
1295     * <b>Definition:</b>
1296     * The date of birth for the practitioner
1297     * </p> 
1298         */
1299        public Practitioner setBirthDate( Date theDate,  TemporalPrecisionEnum thePrecision) {
1300                myBirthDate = new DateDt(theDate, thePrecision); 
1301                return this; 
1302        }
1303
1304        /**
1305         * Sets the value for <b>birthDate</b> ()
1306         *
1307     * <p>
1308     * <b>Definition:</b>
1309     * The date of birth for the practitioner
1310     * </p> 
1311         */
1312        public Practitioner setBirthDateWithDayPrecision( Date theDate) {
1313                myBirthDate = new DateDt(theDate); 
1314                return this; 
1315        }
1316
1317 
1318        /**
1319         * Gets the value(s) for <b>photo</b> ().
1320         * creating it if it does
1321         * not exist. Will not return <code>null</code>.
1322         *
1323     * <p>
1324     * <b>Definition:</b>
1325     * Image of the person
1326     * </p> 
1327         */
1328        public java.util.List<AttachmentDt> getPhoto() {  
1329                if (myPhoto == null) {
1330                        myPhoto = new java.util.ArrayList<AttachmentDt>();
1331                }
1332                return myPhoto;
1333        }
1334
1335        /**
1336         * Sets the value(s) for <b>photo</b> ()
1337         *
1338     * <p>
1339     * <b>Definition:</b>
1340     * Image of the person
1341     * </p> 
1342         */
1343        public Practitioner setPhoto(java.util.List<AttachmentDt> theValue) {
1344                myPhoto = theValue;
1345                return this;
1346        }
1347        
1348        
1349
1350        /**
1351         * Adds and returns a new value for <b>photo</b> ()
1352         *
1353     * <p>
1354     * <b>Definition:</b>
1355     * Image of the person
1356     * </p> 
1357         */
1358        public AttachmentDt addPhoto() {
1359                AttachmentDt newType = new AttachmentDt();
1360                getPhoto().add(newType);
1361                return newType; 
1362        }
1363
1364        /**
1365         * Adds a given new value for <b>photo</b> ()
1366         *
1367         * <p>
1368         * <b>Definition:</b>
1369         * Image of the person
1370         * </p>
1371         * @param theValue The photo to add (must not be <code>null</code>)
1372         */
1373        public Practitioner addPhoto(AttachmentDt theValue) {
1374                if (theValue == null) {
1375                        throw new NullPointerException("theValue must not be null");
1376                }
1377                getPhoto().add(theValue);
1378                return this;
1379        }
1380
1381        /**
1382         * Gets the first repetition for <b>photo</b> (),
1383         * creating it if it does not already exist.
1384         *
1385     * <p>
1386     * <b>Definition:</b>
1387     * Image of the person
1388     * </p> 
1389         */
1390        public AttachmentDt getPhotoFirstRep() {
1391                if (getPhoto().isEmpty()) {
1392                        return addPhoto();
1393                }
1394                return getPhoto().get(0); 
1395        }
1396  
1397        /**
1398         * Gets the value(s) for <b>practitionerRole</b> ().
1399         * creating it if it does
1400         * not exist. Will not return <code>null</code>.
1401         *
1402     * <p>
1403     * <b>Definition:</b>
1404     * The list of roles/organizations that the practitioner is associated with
1405     * </p> 
1406         */
1407        public java.util.List<PractitionerRole> getPractitionerRole() {  
1408                if (myPractitionerRole == null) {
1409                        myPractitionerRole = new java.util.ArrayList<PractitionerRole>();
1410                }
1411                return myPractitionerRole;
1412        }
1413
1414        /**
1415         * Sets the value(s) for <b>practitionerRole</b> ()
1416         *
1417     * <p>
1418     * <b>Definition:</b>
1419     * The list of roles/organizations that the practitioner is associated with
1420     * </p> 
1421         */
1422        public Practitioner setPractitionerRole(java.util.List<PractitionerRole> theValue) {
1423                myPractitionerRole = theValue;
1424                return this;
1425        }
1426        
1427        
1428
1429        /**
1430         * Adds and returns a new value for <b>practitionerRole</b> ()
1431         *
1432     * <p>
1433     * <b>Definition:</b>
1434     * The list of roles/organizations that the practitioner is associated with
1435     * </p> 
1436         */
1437        public PractitionerRole addPractitionerRole() {
1438                PractitionerRole newType = new PractitionerRole();
1439                getPractitionerRole().add(newType);
1440                return newType; 
1441        }
1442
1443        /**
1444         * Adds a given new value for <b>practitionerRole</b> ()
1445         *
1446         * <p>
1447         * <b>Definition:</b>
1448         * The list of roles/organizations that the practitioner is associated with
1449         * </p>
1450         * @param theValue The practitionerRole to add (must not be <code>null</code>)
1451         */
1452        public Practitioner addPractitionerRole(PractitionerRole theValue) {
1453                if (theValue == null) {
1454                        throw new NullPointerException("theValue must not be null");
1455                }
1456                getPractitionerRole().add(theValue);
1457                return this;
1458        }
1459
1460        /**
1461         * Gets the first repetition for <b>practitionerRole</b> (),
1462         * creating it if it does not already exist.
1463         *
1464     * <p>
1465     * <b>Definition:</b>
1466     * The list of roles/organizations that the practitioner is associated with
1467     * </p> 
1468         */
1469        public PractitionerRole getPractitionerRoleFirstRep() {
1470                if (getPractitionerRole().isEmpty()) {
1471                        return addPractitionerRole();
1472                }
1473                return getPractitionerRole().get(0); 
1474        }
1475  
1476        /**
1477         * Gets the value(s) for <b>qualification</b> ().
1478         * creating it if it does
1479         * not exist. Will not return <code>null</code>.
1480         *
1481     * <p>
1482     * <b>Definition:</b>
1483     * 
1484     * </p> 
1485         */
1486        public java.util.List<Qualification> getQualification() {  
1487                if (myQualification == null) {
1488                        myQualification = new java.util.ArrayList<Qualification>();
1489                }
1490                return myQualification;
1491        }
1492
1493        /**
1494         * Sets the value(s) for <b>qualification</b> ()
1495         *
1496     * <p>
1497     * <b>Definition:</b>
1498     * 
1499     * </p> 
1500         */
1501        public Practitioner setQualification(java.util.List<Qualification> theValue) {
1502                myQualification = theValue;
1503                return this;
1504        }
1505        
1506        
1507
1508        /**
1509         * Adds and returns a new value for <b>qualification</b> ()
1510         *
1511     * <p>
1512     * <b>Definition:</b>
1513     * 
1514     * </p> 
1515         */
1516        public Qualification addQualification() {
1517                Qualification newType = new Qualification();
1518                getQualification().add(newType);
1519                return newType; 
1520        }
1521
1522        /**
1523         * Adds a given new value for <b>qualification</b> ()
1524         *
1525         * <p>
1526         * <b>Definition:</b>
1527         * 
1528         * </p>
1529         * @param theValue The qualification to add (must not be <code>null</code>)
1530         */
1531        public Practitioner addQualification(Qualification theValue) {
1532                if (theValue == null) {
1533                        throw new NullPointerException("theValue must not be null");
1534                }
1535                getQualification().add(theValue);
1536                return this;
1537        }
1538
1539        /**
1540         * Gets the first repetition for <b>qualification</b> (),
1541         * creating it if it does not already exist.
1542         *
1543     * <p>
1544     * <b>Definition:</b>
1545     * 
1546     * </p> 
1547         */
1548        public Qualification getQualificationFirstRep() {
1549                if (getQualification().isEmpty()) {
1550                        return addQualification();
1551                }
1552                return getQualification().get(0); 
1553        }
1554  
1555        /**
1556         * Gets the value(s) for <b>communication</b> ().
1557         * creating it if it does
1558         * not exist. Will not return <code>null</code>.
1559         *
1560     * <p>
1561     * <b>Definition:</b>
1562     * A language the practitioner is able to use in patient communication
1563     * </p> 
1564         */
1565        public java.util.List<CodeableConceptDt> getCommunication() {  
1566                if (myCommunication == null) {
1567                        myCommunication = new java.util.ArrayList<CodeableConceptDt>();
1568                }
1569                return myCommunication;
1570        }
1571
1572        /**
1573         * Sets the value(s) for <b>communication</b> ()
1574         *
1575     * <p>
1576     * <b>Definition:</b>
1577     * A language the practitioner is able to use in patient communication
1578     * </p> 
1579         */
1580        public Practitioner setCommunication(java.util.List<CodeableConceptDt> theValue) {
1581                myCommunication = theValue;
1582                return this;
1583        }
1584        
1585        
1586
1587        /**
1588         * Adds and returns a new value for <b>communication</b> ()
1589         *
1590     * <p>
1591     * <b>Definition:</b>
1592     * A language the practitioner is able to use in patient communication
1593     * </p> 
1594         */
1595        public CodeableConceptDt addCommunication() {
1596                CodeableConceptDt newType = new CodeableConceptDt();
1597                getCommunication().add(newType);
1598                return newType; 
1599        }
1600
1601        /**
1602         * Adds a given new value for <b>communication</b> ()
1603         *
1604         * <p>
1605         * <b>Definition:</b>
1606         * A language the practitioner is able to use in patient communication
1607         * </p>
1608         * @param theValue The communication to add (must not be <code>null</code>)
1609         */
1610        public Practitioner addCommunication(CodeableConceptDt theValue) {
1611                if (theValue == null) {
1612                        throw new NullPointerException("theValue must not be null");
1613                }
1614                getCommunication().add(theValue);
1615                return this;
1616        }
1617
1618        /**
1619         * Gets the first repetition for <b>communication</b> (),
1620         * creating it if it does not already exist.
1621         *
1622     * <p>
1623     * <b>Definition:</b>
1624     * A language the practitioner is able to use in patient communication
1625     * </p> 
1626         */
1627        public CodeableConceptDt getCommunicationFirstRep() {
1628                if (getCommunication().isEmpty()) {
1629                        return addCommunication();
1630                }
1631                return getCommunication().get(0); 
1632        }
1633  
1634        /**
1635         * Block class for child element: <b>Practitioner.practitionerRole</b> ()
1636         *
1637     * <p>
1638     * <b>Definition:</b>
1639     * The list of roles/organizations that the practitioner is associated with
1640     * </p> 
1641         */
1642        @Block()        
1643        public static class PractitionerRole 
1644            extends  BaseIdentifiableElement  
1645            implements IResourceBlock {
1646        
1647        @Child(name="managingOrganization", order=0, min=0, max=1, summary=false, modifier=false, type={
1648                ca.uhn.fhir.model.dstu2.resource.Organization.class
1649        })
1650        @Description(
1651                shortDefinition="",
1652                formalDefinition="The organization where the Practitioner performs the roles associated"
1653        )
1654        private ResourceReferenceDt myManagingOrganization;
1655        
1656        @Child(name="role", type=CodeableConceptDt.class, order=1, min=0, max=1, summary=true, modifier=false)  
1657        @Description(
1658                shortDefinition="",
1659                formalDefinition="Roles which this practitioner is authorized to perform for the organization"
1660        )
1661        private CodeableConceptDt myRole;
1662        
1663        @Child(name="specialty", type=CodeableConceptDt.class, order=2, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)   
1664        @Description(
1665                shortDefinition="",
1666                formalDefinition="Specific specialty of the practitioner"
1667        )
1668        private java.util.List<CodeableConceptDt> mySpecialty;
1669        
1670        @Child(name="period", type=PeriodDt.class, order=3, min=0, max=1, summary=true, modifier=false) 
1671        @Description(
1672                shortDefinition="when.done",
1673                formalDefinition="The period during which the person is authorized to act as a practitioner in these role(s) for the organization"
1674        )
1675        private PeriodDt myPeriod;
1676        
1677        @Child(name="location", order=4, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
1678                ca.uhn.fhir.model.dstu2.resource.Location.class
1679        })
1680        @Description(
1681                shortDefinition="where",
1682                formalDefinition="The location(s) at which this practitioner provides care"
1683        )
1684        private java.util.List<ResourceReferenceDt> myLocation;
1685        
1686        @Child(name="healthcareService", order=5, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
1687                ca.uhn.fhir.model.dstu2.resource.HealthcareService.class
1688        })
1689        @Description(
1690                shortDefinition="",
1691                formalDefinition=""
1692        )
1693        private java.util.List<ResourceReferenceDt> myHealthcareService;
1694        
1695
1696        @Override
1697        public boolean isEmpty() {
1698                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myManagingOrganization,  myRole,  mySpecialty,  myPeriod,  myLocation,  myHealthcareService);
1699        }
1700        
1701        @Override
1702        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1703                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myManagingOrganization, myRole, mySpecialty, myPeriod, myLocation, myHealthcareService);
1704        }
1705
1706        /**
1707         * Gets the value(s) for <b>managingOrganization</b> ().
1708         * creating it if it does
1709         * not exist. Will not return <code>null</code>.
1710         *
1711     * <p>
1712     * <b>Definition:</b>
1713     * The organization where the Practitioner performs the roles associated
1714     * </p> 
1715         */
1716        public ResourceReferenceDt getManagingOrganization() {  
1717                if (myManagingOrganization == null) {
1718                        myManagingOrganization = new ResourceReferenceDt();
1719                }
1720                return myManagingOrganization;
1721        }
1722
1723        /**
1724         * Sets the value(s) for <b>managingOrganization</b> ()
1725         *
1726     * <p>
1727     * <b>Definition:</b>
1728     * The organization where the Practitioner performs the roles associated
1729     * </p> 
1730         */
1731        public PractitionerRole setManagingOrganization(ResourceReferenceDt theValue) {
1732                myManagingOrganization = theValue;
1733                return this;
1734        }
1735        
1736        
1737
1738  
1739        /**
1740         * Gets the value(s) for <b>role</b> ().
1741         * creating it if it does
1742         * not exist. Will not return <code>null</code>.
1743         *
1744     * <p>
1745     * <b>Definition:</b>
1746     * Roles which this practitioner is authorized to perform for the organization
1747     * </p> 
1748         */
1749        public CodeableConceptDt getRole() {  
1750                if (myRole == null) {
1751                        myRole = new CodeableConceptDt();
1752                }
1753                return myRole;
1754        }
1755
1756        /**
1757         * Sets the value(s) for <b>role</b> ()
1758         *
1759     * <p>
1760     * <b>Definition:</b>
1761     * Roles which this practitioner is authorized to perform for the organization
1762     * </p> 
1763         */
1764        public PractitionerRole setRole(CodeableConceptDt theValue) {
1765                myRole = theValue;
1766                return this;
1767        }
1768        
1769        
1770
1771  
1772        /**
1773         * Gets the value(s) for <b>specialty</b> ().
1774         * creating it if it does
1775         * not exist. Will not return <code>null</code>.
1776         *
1777     * <p>
1778     * <b>Definition:</b>
1779     * Specific specialty of the practitioner
1780     * </p> 
1781         */
1782        public java.util.List<CodeableConceptDt> getSpecialty() {  
1783                if (mySpecialty == null) {
1784                        mySpecialty = new java.util.ArrayList<CodeableConceptDt>();
1785                }
1786                return mySpecialty;
1787        }
1788
1789        /**
1790         * Sets the value(s) for <b>specialty</b> ()
1791         *
1792     * <p>
1793     * <b>Definition:</b>
1794     * Specific specialty of the practitioner
1795     * </p> 
1796         */
1797        public PractitionerRole setSpecialty(java.util.List<CodeableConceptDt> theValue) {
1798                mySpecialty = theValue;
1799                return this;
1800        }
1801        
1802        
1803
1804        /**
1805         * Adds and returns a new value for <b>specialty</b> ()
1806         *
1807     * <p>
1808     * <b>Definition:</b>
1809     * Specific specialty of the practitioner
1810     * </p> 
1811         */
1812        public CodeableConceptDt addSpecialty() {
1813                CodeableConceptDt newType = new CodeableConceptDt();
1814                getSpecialty().add(newType);
1815                return newType; 
1816        }
1817
1818        /**
1819         * Adds a given new value for <b>specialty</b> ()
1820         *
1821         * <p>
1822         * <b>Definition:</b>
1823         * Specific specialty of the practitioner
1824         * </p>
1825         * @param theValue The specialty to add (must not be <code>null</code>)
1826         */
1827        public PractitionerRole addSpecialty(CodeableConceptDt theValue) {
1828                if (theValue == null) {
1829                        throw new NullPointerException("theValue must not be null");
1830                }
1831                getSpecialty().add(theValue);
1832                return this;
1833        }
1834
1835        /**
1836         * Gets the first repetition for <b>specialty</b> (),
1837         * creating it if it does not already exist.
1838         *
1839     * <p>
1840     * <b>Definition:</b>
1841     * Specific specialty of the practitioner
1842     * </p> 
1843         */
1844        public CodeableConceptDt getSpecialtyFirstRep() {
1845                if (getSpecialty().isEmpty()) {
1846                        return addSpecialty();
1847                }
1848                return getSpecialty().get(0); 
1849        }
1850  
1851        /**
1852         * Gets the value(s) for <b>period</b> (when.done).
1853         * creating it if it does
1854         * not exist. Will not return <code>null</code>.
1855         *
1856     * <p>
1857     * <b>Definition:</b>
1858     * The period during which the person is authorized to act as a practitioner in these role(s) for the organization
1859     * </p> 
1860         */
1861        public PeriodDt getPeriod() {  
1862                if (myPeriod == null) {
1863                        myPeriod = new PeriodDt();
1864                }
1865                return myPeriod;
1866        }
1867
1868        /**
1869         * Sets the value(s) for <b>period</b> (when.done)
1870         *
1871     * <p>
1872     * <b>Definition:</b>
1873     * The period during which the person is authorized to act as a practitioner in these role(s) for the organization
1874     * </p> 
1875         */
1876        public PractitionerRole setPeriod(PeriodDt theValue) {
1877                myPeriod = theValue;
1878                return this;
1879        }
1880        
1881        
1882
1883  
1884        /**
1885         * Gets the value(s) for <b>location</b> (where).
1886         * creating it if it does
1887         * not exist. Will not return <code>null</code>.
1888         *
1889     * <p>
1890     * <b>Definition:</b>
1891     * The location(s) at which this practitioner provides care
1892     * </p> 
1893         */
1894        public java.util.List<ResourceReferenceDt> getLocation() {  
1895                if (myLocation == null) {
1896                        myLocation = new java.util.ArrayList<ResourceReferenceDt>();
1897                }
1898                return myLocation;
1899        }
1900
1901        /**
1902         * Sets the value(s) for <b>location</b> (where)
1903         *
1904     * <p>
1905     * <b>Definition:</b>
1906     * The location(s) at which this practitioner provides care
1907     * </p> 
1908         */
1909        public PractitionerRole setLocation(java.util.List<ResourceReferenceDt> theValue) {
1910                myLocation = theValue;
1911                return this;
1912        }
1913        
1914        
1915
1916        /**
1917         * Adds and returns a new value for <b>location</b> (where)
1918         *
1919     * <p>
1920     * <b>Definition:</b>
1921     * The location(s) at which this practitioner provides care
1922     * </p> 
1923         */
1924        public ResourceReferenceDt addLocation() {
1925                ResourceReferenceDt newType = new ResourceReferenceDt();
1926                getLocation().add(newType);
1927                return newType; 
1928        }
1929  
1930        /**
1931         * Gets the value(s) for <b>healthcareService</b> ().
1932         * creating it if it does
1933         * not exist. Will not return <code>null</code>.
1934         *
1935     * <p>
1936     * <b>Definition:</b>
1937     * 
1938     * </p> 
1939         */
1940        public java.util.List<ResourceReferenceDt> getHealthcareService() {  
1941                if (myHealthcareService == null) {
1942                        myHealthcareService = new java.util.ArrayList<ResourceReferenceDt>();
1943                }
1944                return myHealthcareService;
1945        }
1946
1947        /**
1948         * Sets the value(s) for <b>healthcareService</b> ()
1949         *
1950     * <p>
1951     * <b>Definition:</b>
1952     * 
1953     * </p> 
1954         */
1955        public PractitionerRole setHealthcareService(java.util.List<ResourceReferenceDt> theValue) {
1956                myHealthcareService = theValue;
1957                return this;
1958        }
1959        
1960        
1961
1962        /**
1963         * Adds and returns a new value for <b>healthcareService</b> ()
1964         *
1965     * <p>
1966     * <b>Definition:</b>
1967     * 
1968     * </p> 
1969         */
1970        public ResourceReferenceDt addHealthcareService() {
1971                ResourceReferenceDt newType = new ResourceReferenceDt();
1972                getHealthcareService().add(newType);
1973                return newType; 
1974        }
1975  
1976
1977
1978        }
1979
1980
1981        /**
1982         * Block class for child element: <b>Practitioner.qualification</b> ()
1983         *
1984     * <p>
1985     * <b>Definition:</b>
1986     * 
1987     * </p> 
1988         */
1989        @Block()        
1990        public static class Qualification 
1991            extends  BaseIdentifiableElement  
1992            implements IResourceBlock {
1993        
1994        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)      
1995        @Description(
1996                shortDefinition="",
1997                formalDefinition="An identifier that applies to this person's qualification in this role"
1998        )
1999        private java.util.List<IdentifierDt> myIdentifier;
2000        
2001        @Child(name="code", type=CodeableConceptDt.class, order=1, min=1, max=1, summary=false, modifier=false) 
2002        @Description(
2003                shortDefinition="",
2004                formalDefinition=""
2005        )
2006        private CodeableConceptDt myCode;
2007        
2008        @Child(name="period", type=PeriodDt.class, order=2, min=0, max=1, summary=false, modifier=false)        
2009        @Description(
2010                shortDefinition="",
2011                formalDefinition="Period during which the qualification is valid"
2012        )
2013        private PeriodDt myPeriod;
2014        
2015        @Child(name="issuer", order=3, min=0, max=1, summary=false, modifier=false, type={
2016                ca.uhn.fhir.model.dstu2.resource.Organization.class
2017        })
2018        @Description(
2019                shortDefinition="",
2020                formalDefinition="Organization that regulates and issues the qualification"
2021        )
2022        private ResourceReferenceDt myIssuer;
2023        
2024
2025        @Override
2026        public boolean isEmpty() {
2027                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myCode,  myPeriod,  myIssuer);
2028        }
2029        
2030        @Override
2031        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
2032                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myCode, myPeriod, myIssuer);
2033        }
2034
2035        /**
2036         * Gets the value(s) for <b>identifier</b> ().
2037         * creating it if it does
2038         * not exist. Will not return <code>null</code>.
2039         *
2040     * <p>
2041     * <b>Definition:</b>
2042     * An identifier that applies to this person's qualification in this role
2043     * </p> 
2044         */
2045        public java.util.List<IdentifierDt> getIdentifier() {  
2046                if (myIdentifier == null) {
2047                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
2048                }
2049                return myIdentifier;
2050        }
2051
2052        /**
2053         * Sets the value(s) for <b>identifier</b> ()
2054         *
2055     * <p>
2056     * <b>Definition:</b>
2057     * An identifier that applies to this person's qualification in this role
2058     * </p> 
2059         */
2060        public Qualification setIdentifier(java.util.List<IdentifierDt> theValue) {
2061                myIdentifier = theValue;
2062                return this;
2063        }
2064        
2065        
2066
2067        /**
2068         * Adds and returns a new value for <b>identifier</b> ()
2069         *
2070     * <p>
2071     * <b>Definition:</b>
2072     * An identifier that applies to this person's qualification in this role
2073     * </p> 
2074         */
2075        public IdentifierDt addIdentifier() {
2076                IdentifierDt newType = new IdentifierDt();
2077                getIdentifier().add(newType);
2078                return newType; 
2079        }
2080
2081        /**
2082         * Adds a given new value for <b>identifier</b> ()
2083         *
2084         * <p>
2085         * <b>Definition:</b>
2086         * An identifier that applies to this person's qualification in this role
2087         * </p>
2088         * @param theValue The identifier to add (must not be <code>null</code>)
2089         */
2090        public Qualification addIdentifier(IdentifierDt theValue) {
2091                if (theValue == null) {
2092                        throw new NullPointerException("theValue must not be null");
2093                }
2094                getIdentifier().add(theValue);
2095                return this;
2096        }
2097
2098        /**
2099         * Gets the first repetition for <b>identifier</b> (),
2100         * creating it if it does not already exist.
2101         *
2102     * <p>
2103     * <b>Definition:</b>
2104     * An identifier that applies to this person's qualification in this role
2105     * </p> 
2106         */
2107        public IdentifierDt getIdentifierFirstRep() {
2108                if (getIdentifier().isEmpty()) {
2109                        return addIdentifier();
2110                }
2111                return getIdentifier().get(0); 
2112        }
2113  
2114        /**
2115         * Gets the value(s) for <b>code</b> ().
2116         * creating it if it does
2117         * not exist. Will not return <code>null</code>.
2118         *
2119     * <p>
2120     * <b>Definition:</b>
2121     * 
2122     * </p> 
2123         */
2124        public CodeableConceptDt getCode() {  
2125                if (myCode == null) {
2126                        myCode = new CodeableConceptDt();
2127                }
2128                return myCode;
2129        }
2130
2131        /**
2132         * Sets the value(s) for <b>code</b> ()
2133         *
2134     * <p>
2135     * <b>Definition:</b>
2136     * 
2137     * </p> 
2138         */
2139        public Qualification setCode(CodeableConceptDt theValue) {
2140                myCode = theValue;
2141                return this;
2142        }
2143        
2144        
2145
2146  
2147        /**
2148         * Gets the value(s) for <b>period</b> ().
2149         * creating it if it does
2150         * not exist. Will not return <code>null</code>.
2151         *
2152     * <p>
2153     * <b>Definition:</b>
2154     * Period during which the qualification is valid
2155     * </p> 
2156         */
2157        public PeriodDt getPeriod() {  
2158                if (myPeriod == null) {
2159                        myPeriod = new PeriodDt();
2160                }
2161                return myPeriod;
2162        }
2163
2164        /**
2165         * Sets the value(s) for <b>period</b> ()
2166         *
2167     * <p>
2168     * <b>Definition:</b>
2169     * Period during which the qualification is valid
2170     * </p> 
2171         */
2172        public Qualification setPeriod(PeriodDt theValue) {
2173                myPeriod = theValue;
2174                return this;
2175        }
2176        
2177        
2178
2179  
2180        /**
2181         * Gets the value(s) for <b>issuer</b> ().
2182         * creating it if it does
2183         * not exist. Will not return <code>null</code>.
2184         *
2185     * <p>
2186     * <b>Definition:</b>
2187     * Organization that regulates and issues the qualification
2188     * </p> 
2189         */
2190        public ResourceReferenceDt getIssuer() {  
2191                if (myIssuer == null) {
2192                        myIssuer = new ResourceReferenceDt();
2193                }
2194                return myIssuer;
2195        }
2196
2197        /**
2198         * Sets the value(s) for <b>issuer</b> ()
2199         *
2200     * <p>
2201     * <b>Definition:</b>
2202     * Organization that regulates and issues the qualification
2203     * </p> 
2204         */
2205        public Qualification setIssuer(ResourceReferenceDt theValue) {
2206                myIssuer = theValue;
2207                return this;
2208        }
2209        
2210        
2211
2212  
2213
2214
2215        }
2216
2217
2218
2219
2220    @Override
2221    public String getResourceName() {
2222        return "Practitioner";
2223    }
2224    
2225    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
2226        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
2227    }
2228
2229
2230}