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