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.valueset.AnimalSpeciesEnum;
042import ca.uhn.fhir.model.dstu2.composite.AnnotationDt;
043import ca.uhn.fhir.model.dstu2.valueset.AnswerFormatEnum;
044import ca.uhn.fhir.model.dstu2.resource.Appointment;
045import ca.uhn.fhir.model.dstu2.valueset.AppointmentStatusEnum;
046import ca.uhn.fhir.model.dstu2.valueset.AssertionDirectionTypeEnum;
047import ca.uhn.fhir.model.dstu2.valueset.AssertionOperatorTypeEnum;
048import ca.uhn.fhir.model.dstu2.valueset.AssertionResponseTypesEnum;
049import ca.uhn.fhir.model.dstu2.composite.AttachmentDt;
050import ca.uhn.fhir.model.dstu2.valueset.AuditEventActionEnum;
051import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectLifecycleEnum;
052import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectRoleEnum;
053import ca.uhn.fhir.model.dstu2.valueset.AuditEventObjectTypeEnum;
054import ca.uhn.fhir.model.dstu2.valueset.AuditEventOutcomeEnum;
055import ca.uhn.fhir.model.dstu2.valueset.AuditEventParticipantNetworkTypeEnum;
056import ca.uhn.fhir.model.dstu2.valueset.AuditEventSourceTypeEnum;
057import ca.uhn.fhir.model.dstu2.valueset.BindingStrengthEnum;
058import ca.uhn.fhir.model.dstu2.resource.BodySite;
059import ca.uhn.fhir.model.dstu2.valueset.BundleTypeEnum;
060import ca.uhn.fhir.model.dstu2.resource.CarePlan;
061import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityCategoryEnum;
062import ca.uhn.fhir.model.dstu2.valueset.CarePlanActivityStatusEnum;
063import ca.uhn.fhir.model.dstu2.valueset.CarePlanRelationshipEnum;
064import ca.uhn.fhir.model.dstu2.valueset.CarePlanStatusEnum;
065import ca.uhn.fhir.model.dstu2.resource.Claim;
066import ca.uhn.fhir.model.dstu2.resource.ClaimResponse;
067import ca.uhn.fhir.model.dstu2.valueset.ClaimTypeEnum;
068import ca.uhn.fhir.model.dstu2.resource.ClinicalImpression;
069import ca.uhn.fhir.model.dstu2.valueset.ClinicalImpressionStatusEnum;
070import ca.uhn.fhir.model.dstu2.composite.CodeableConceptDt;
071import ca.uhn.fhir.model.dstu2.composite.CodingDt;
072import ca.uhn.fhir.model.dstu2.resource.CommunicationRequest;
073import ca.uhn.fhir.model.dstu2.valueset.CommunicationRequestStatusEnum;
074import ca.uhn.fhir.model.dstu2.valueset.CommunicationStatusEnum;
075import ca.uhn.fhir.model.dstu2.resource.Composition;
076import ca.uhn.fhir.model.dstu2.valueset.CompositionAttestationModeEnum;
077import ca.uhn.fhir.model.dstu2.valueset.CompositionStatusEnum;
078import ca.uhn.fhir.model.dstu2.valueset.ConceptMapEquivalenceEnum;
079import ca.uhn.fhir.model.dstu2.resource.Condition;
080import ca.uhn.fhir.model.dstu2.valueset.ConditionCategoryCodesEnum;
081import ca.uhn.fhir.model.dstu2.valueset.ConditionClinicalStatusCodesEnum;
082import ca.uhn.fhir.model.dstu2.valueset.ConditionVerificationStatusEnum;
083import ca.uhn.fhir.model.dstu2.valueset.ConditionalDeleteStatusEnum;
084import ca.uhn.fhir.model.dstu2.valueset.ConditionsCodesEnum;
085import ca.uhn.fhir.model.dstu2.resource.Conformance;
086import ca.uhn.fhir.model.dstu2.valueset.ConformanceEventModeEnum;
087import ca.uhn.fhir.model.dstu2.valueset.ConformanceResourceStatusEnum;
088import ca.uhn.fhir.model.dstu2.valueset.ConformanceStatementKindEnum;
089import ca.uhn.fhir.model.dstu2.composite.ContactPointDt;
090import ca.uhn.fhir.model.dstu2.valueset.ContentTypeEnum;
091import ca.uhn.fhir.model.dstu2.resource.Contract;
092import ca.uhn.fhir.model.dstu2.valueset.ContractActionCodesEnum;
093import ca.uhn.fhir.model.dstu2.valueset.ContractActorRoleCodesEnum;
094import ca.uhn.fhir.model.dstu2.valueset.ContractSubtypeCodesEnum;
095import ca.uhn.fhir.model.dstu2.valueset.ContractTermTypeCodesEnum;
096import ca.uhn.fhir.model.dstu2.valueset.ContractTypeCodesEnum;
097import ca.uhn.fhir.model.dstu2.resource.Coverage;
098import ca.uhn.fhir.model.dstu2.valueset.DataElementStringencyEnum;
099import ca.uhn.fhir.model.dstu2.valueset.DaysOfWeekEnum;
100import ca.uhn.fhir.model.dstu2.valueset.DetectedIssueSeverityEnum;
101import ca.uhn.fhir.model.dstu2.resource.Device;
102import ca.uhn.fhir.model.dstu2.resource.DeviceComponent;
103import ca.uhn.fhir.model.dstu2.resource.DeviceMetric;
104import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationStateEnum;
105import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCalibrationTypeEnum;
106import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricCategoryEnum;
107import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricColorEnum;
108import ca.uhn.fhir.model.dstu2.valueset.DeviceMetricOperationalStatusEnum;
109import ca.uhn.fhir.model.dstu2.valueset.DeviceStatusEnum;
110import ca.uhn.fhir.model.dstu2.resource.DeviceUseRequest;
111import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestPriorityEnum;
112import ca.uhn.fhir.model.dstu2.valueset.DeviceUseRequestStatusEnum;
113import ca.uhn.fhir.model.dstu2.resource.DiagnosticOrder;
114import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderPriorityEnum;
115import ca.uhn.fhir.model.dstu2.valueset.DiagnosticOrderStatusEnum;
116import ca.uhn.fhir.model.dstu2.resource.DiagnosticReport;
117import ca.uhn.fhir.model.dstu2.valueset.DiagnosticReportStatusEnum;
118import ca.uhn.fhir.model.dstu2.valueset.DigitalMediaTypeEnum;
119import ca.uhn.fhir.model.dstu2.valueset.DocumentModeEnum;
120import ca.uhn.fhir.model.dstu2.resource.DocumentReference;
121import ca.uhn.fhir.model.dstu2.valueset.DocumentReferenceStatusEnum;
122import ca.uhn.fhir.model.dstu2.valueset.DocumentRelationshipTypeEnum;
123import ca.uhn.fhir.model.dstu2.composite.ElementDefinitionDt;
124import ca.uhn.fhir.model.dstu2.resource.EligibilityRequest;
125import ca.uhn.fhir.model.dstu2.resource.Encounter;
126import ca.uhn.fhir.model.dstu2.valueset.EncounterClassEnum;
127import ca.uhn.fhir.model.dstu2.valueset.EncounterLocationStatusEnum;
128import ca.uhn.fhir.model.dstu2.valueset.EncounterStateEnum;
129import ca.uhn.fhir.model.dstu2.valueset.EncounterTypeEnum;
130import ca.uhn.fhir.model.dstu2.resource.EnrollmentRequest;
131import ca.uhn.fhir.model.dstu2.valueset.EnteralFormulaTypeCodesEnum;
132import ca.uhn.fhir.model.dstu2.resource.EpisodeOfCare;
133import ca.uhn.fhir.model.dstu2.valueset.EpisodeOfCareStatusEnum;
134import ca.uhn.fhir.model.dstu2.valueset.ExceptionCodesEnum;
135import ca.uhn.fhir.model.dstu2.valueset.ExtensionContextEnum;
136import ca.uhn.fhir.model.dstu2.valueset.FamilyHistoryStatusEnum;
137import ca.uhn.fhir.model.dstu2.resource.FamilyMemberHistory;
138import ca.uhn.fhir.model.dstu2.valueset.FilterOperatorEnum;
139import ca.uhn.fhir.model.dstu2.valueset.FlagCategoryCodesEnum;
140import ca.uhn.fhir.model.dstu2.valueset.FlagStatusEnum;
141import ca.uhn.fhir.model.dstu2.valueset.FluidConsistencyTypeCodesEnum;
142import ca.uhn.fhir.model.dstu2.resource.Goal;
143import ca.uhn.fhir.model.dstu2.valueset.GoalCategoryEnum;
144import ca.uhn.fhir.model.dstu2.valueset.GoalPriorityEnum;
145import ca.uhn.fhir.model.dstu2.valueset.GoalStartEventEnum;
146import ca.uhn.fhir.model.dstu2.valueset.GoalStatusEnum;
147import ca.uhn.fhir.model.dstu2.valueset.GoalStatusReasonEnum;
148import ca.uhn.fhir.model.dstu2.resource.Group;
149import ca.uhn.fhir.model.dstu2.valueset.GroupTypeEnum;
150import ca.uhn.fhir.model.dstu2.valueset.GuideDependencyTypeEnum;
151import ca.uhn.fhir.model.dstu2.valueset.GuidePageKindEnum;
152import ca.uhn.fhir.model.dstu2.valueset.GuideResourcePurposeEnum;
153import ca.uhn.fhir.model.dstu2.valueset.HTTPVerbEnum;
154import ca.uhn.fhir.model.dstu2.resource.HealthcareService;
155import ca.uhn.fhir.model.dstu2.composite.HumanNameDt;
156import ca.uhn.fhir.model.dstu2.composite.IdentifierDt;
157import ca.uhn.fhir.model.dstu2.valueset.IdentifierTypeCodesEnum;
158import ca.uhn.fhir.model.dstu2.valueset.IdentityAssuranceLevelEnum;
159import ca.uhn.fhir.model.dstu2.resource.ImagingObjectSelection;
160import ca.uhn.fhir.model.dstu2.resource.ImagingStudy;
161import ca.uhn.fhir.model.dstu2.resource.Immunization;
162import ca.uhn.fhir.model.dstu2.valueset.ImmunizationReasonCodesEnum;
163import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRecommendationDateCriterionCodesEnum;
164import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRecommendationStatusCodesEnum;
165import ca.uhn.fhir.model.dstu2.valueset.ImmunizationRouteCodesEnum;
166import ca.uhn.fhir.model.dstu2.valueset.InstanceAvailabilityEnum;
167import ca.uhn.fhir.model.dstu2.valueset.InterventionCodesEnum;
168import ca.uhn.fhir.model.dstu2.valueset.IssueSeverityEnum;
169import ca.uhn.fhir.model.dstu2.valueset.IssueTypeEnum;
170import ca.uhn.fhir.model.dstu2.valueset.KOStitleEnum;
171import ca.uhn.fhir.model.dstu2.valueset.LateralityEnum;
172import ca.uhn.fhir.model.dstu2.valueset.LinkTypeEnum;
173import ca.uhn.fhir.model.dstu2.valueset.ListModeEnum;
174import ca.uhn.fhir.model.dstu2.valueset.ListOrderCodesEnum;
175import ca.uhn.fhir.model.dstu2.valueset.ListStatusEnum;
176import ca.uhn.fhir.model.dstu2.resource.Location;
177import ca.uhn.fhir.model.dstu2.valueset.LocationModeEnum;
178import ca.uhn.fhir.model.dstu2.valueset.LocationStatusEnum;
179import ca.uhn.fhir.model.dstu2.valueset.LocationTypeEnum;
180import ca.uhn.fhir.model.dstu2.valueset.MaritalStatusCodesEnum;
181import ca.uhn.fhir.model.dstu2.valueset.MeasmntPrincipleEnum;
182import ca.uhn.fhir.model.dstu2.resource.Media;
183import ca.uhn.fhir.model.dstu2.resource.Medication;
184import ca.uhn.fhir.model.dstu2.valueset.MedicationAdministrationStatusEnum;
185import ca.uhn.fhir.model.dstu2.valueset.MedicationDispenseStatusEnum;
186import ca.uhn.fhir.model.dstu2.resource.MedicationOrder;
187import ca.uhn.fhir.model.dstu2.valueset.MedicationOrderStatusEnum;
188import ca.uhn.fhir.model.dstu2.resource.MedicationStatement;
189import ca.uhn.fhir.model.dstu2.valueset.MedicationStatementStatusEnum;
190import ca.uhn.fhir.model.dstu2.valueset.MessageEventEnum;
191import ca.uhn.fhir.model.dstu2.valueset.MessageSignificanceCategoryEnum;
192import ca.uhn.fhir.model.dstu2.valueset.MessageTransportEnum;
193import ca.uhn.fhir.model.dstu2.resource.NamingSystem;
194import ca.uhn.fhir.model.dstu2.valueset.NamingSystemIdentifierTypeEnum;
195import ca.uhn.fhir.model.dstu2.valueset.NamingSystemTypeEnum;
196import ca.uhn.fhir.model.dstu2.valueset.NoteTypeEnum;
197import ca.uhn.fhir.model.dstu2.valueset.NutrientModifierCodesEnum;
198import ca.uhn.fhir.model.dstu2.resource.NutritionOrder;
199import ca.uhn.fhir.model.dstu2.valueset.NutritionOrderStatusEnum;
200import ca.uhn.fhir.model.dstu2.resource.Observation;
201import ca.uhn.fhir.model.dstu2.valueset.ObservationCategoryCodesEnum;
202import ca.uhn.fhir.model.dstu2.valueset.ObservationRelationshipTypeEnum;
203import ca.uhn.fhir.model.dstu2.valueset.ObservationStatusEnum;
204import ca.uhn.fhir.model.dstu2.resource.OperationDefinition;
205import ca.uhn.fhir.model.dstu2.valueset.OperationKindEnum;
206import ca.uhn.fhir.model.dstu2.resource.OperationOutcome;
207import ca.uhn.fhir.model.dstu2.valueset.OperationParameterUseEnum;
208import ca.uhn.fhir.model.dstu2.resource.Order;
209import ca.uhn.fhir.model.dstu2.valueset.OrderStatusEnum;
210import ca.uhn.fhir.model.dstu2.resource.Organization;
211import ca.uhn.fhir.model.dstu2.valueset.OrganizationTypeEnum;
212import ca.uhn.fhir.model.dstu2.valueset.ParticipantRequiredEnum;
213import ca.uhn.fhir.model.dstu2.valueset.ParticipantStatusEnum;
214import ca.uhn.fhir.model.dstu2.valueset.ParticipantTypeEnum;
215import ca.uhn.fhir.model.dstu2.valueset.ParticipationStatusEnum;
216import ca.uhn.fhir.model.dstu2.resource.Patient;
217import ca.uhn.fhir.model.dstu2.valueset.PayeeTypeCodesEnum;
218import ca.uhn.fhir.model.dstu2.valueset.PaymentStatusCodesEnum;
219import ca.uhn.fhir.model.dstu2.valueset.PaymentTypeCodesEnum;
220import ca.uhn.fhir.model.dstu2.composite.PeriodDt;
221import ca.uhn.fhir.model.dstu2.resource.Person;
222import ca.uhn.fhir.model.dstu2.resource.Practitioner;
223import ca.uhn.fhir.model.dstu2.valueset.PractitionerRoleEnum;
224import ca.uhn.fhir.model.dstu2.valueset.PractitionerSpecialtyEnum;
225import ca.uhn.fhir.model.dstu2.valueset.PriorityCodesEnum;
226import ca.uhn.fhir.model.dstu2.resource.Procedure;
227import ca.uhn.fhir.model.dstu2.resource.ProcedureRequest;
228import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestPriorityEnum;
229import ca.uhn.fhir.model.dstu2.valueset.ProcedureRequestStatusEnum;
230import ca.uhn.fhir.model.dstu2.valueset.ProcedureStatusEnum;
231import ca.uhn.fhir.model.dstu2.resource.ProcessRequest;
232import ca.uhn.fhir.model.dstu2.valueset.ProvenanceEntityRoleEnum;
233import ca.uhn.fhir.model.dstu2.composite.QuantityDt;
234import ca.uhn.fhir.model.dstu2.resource.Questionnaire;
235import ca.uhn.fhir.model.dstu2.resource.QuestionnaireResponse;
236import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireResponseStatusEnum;
237import ca.uhn.fhir.model.dstu2.valueset.QuestionnaireStatusEnum;
238import ca.uhn.fhir.model.dstu2.composite.RangeDt;
239import ca.uhn.fhir.model.dstu2.composite.RatioDt;
240import ca.uhn.fhir.model.dstu2.valueset.ReferralMethodEnum;
241import ca.uhn.fhir.model.dstu2.resource.ReferralRequest;
242import ca.uhn.fhir.model.dstu2.valueset.ReferralStatusEnum;
243import ca.uhn.fhir.model.dstu2.resource.RelatedPerson;
244import ca.uhn.fhir.model.dstu2.valueset.RemittanceOutcomeEnum;
245import ca.uhn.fhir.model.dstu2.valueset.ResourceTypeEnum;
246import ca.uhn.fhir.model.dstu2.valueset.ResourceVersionPolicyEnum;
247import ca.uhn.fhir.model.dstu2.valueset.ResponseTypeEnum;
248import ca.uhn.fhir.model.dstu2.valueset.RestfulConformanceModeEnum;
249import ca.uhn.fhir.model.dstu2.valueset.RestfulSecurityServiceEnum;
250import ca.uhn.fhir.model.dstu2.resource.RiskAssessment;
251import ca.uhn.fhir.model.dstu2.valueset.RulesetCodesEnum;
252import ca.uhn.fhir.model.dstu2.composite.SampledDataDt;
253import ca.uhn.fhir.model.dstu2.resource.Schedule;
254import ca.uhn.fhir.model.dstu2.valueset.SearchEntryModeEnum;
255import ca.uhn.fhir.model.dstu2.valueset.SearchModifierCodeEnum;
256import ca.uhn.fhir.model.dstu2.valueset.SearchParamTypeEnum;
257import ca.uhn.fhir.model.dstu2.valueset.ServiceProvisionConditionsEnum;
258import ca.uhn.fhir.model.dstu2.composite.SignatureDt;
259import ca.uhn.fhir.model.dstu2.resource.Slot;
260import ca.uhn.fhir.model.dstu2.valueset.SlotStatusEnum;
261import ca.uhn.fhir.model.dstu2.resource.Specimen;
262import ca.uhn.fhir.model.dstu2.valueset.SpecimenCollectionMethodEnum;
263import ca.uhn.fhir.model.dstu2.valueset.SpecimenStatusEnum;
264import ca.uhn.fhir.model.dstu2.resource.StructureDefinition;
265import ca.uhn.fhir.model.dstu2.valueset.StructureDefinitionKindEnum;
266import ca.uhn.fhir.model.dstu2.valueset.SubscriptionChannelTypeEnum;
267import ca.uhn.fhir.model.dstu2.valueset.SubscriptionStatusEnum;
268import ca.uhn.fhir.model.dstu2.valueset.SubscriptionTagEnum;
269import ca.uhn.fhir.model.dstu2.resource.Substance;
270import ca.uhn.fhir.model.dstu2.valueset.SubstanceCategoryCodesEnum;
271import ca.uhn.fhir.model.dstu2.valueset.SupplementTypeCodesEnum;
272import ca.uhn.fhir.model.dstu2.valueset.SupplyDeliveryStatusEnum;
273import ca.uhn.fhir.model.dstu2.resource.SupplyRequest;
274import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestReasonEnum;
275import ca.uhn.fhir.model.dstu2.valueset.SupplyRequestStatusEnum;
276import ca.uhn.fhir.model.dstu2.valueset.SurfaceCodesEnum;
277import ca.uhn.fhir.model.dstu2.valueset.SystemRestfulInteractionEnum;
278import ca.uhn.fhir.model.api.TemporalPrecisionEnum;
279import ca.uhn.fhir.model.dstu2.valueset.TextureModifiedFoodTypeCodesEnum;
280import ca.uhn.fhir.model.dstu2.valueset.TextureModifierCodesEnum;
281import ca.uhn.fhir.model.dstu2.composite.TimingDt;
282import ca.uhn.fhir.model.dstu2.valueset.TransactionModeEnum;
283import ca.uhn.fhir.model.dstu2.valueset.TypeRestfulInteractionEnum;
284import ca.uhn.fhir.model.dstu2.valueset.UDICodesEnum;
285import ca.uhn.fhir.model.dstu2.valueset.UnknownContentCodeEnum;
286import ca.uhn.fhir.model.dstu2.valueset.UseEnum;
287import ca.uhn.fhir.model.dstu2.resource.ValueSet;
288import ca.uhn.fhir.model.dstu2.valueset.VisionBaseEnum;
289import ca.uhn.fhir.model.dstu2.valueset.VisionEyesEnum;
290import ca.uhn.fhir.model.dstu2.resource.VisionPrescription;
291import ca.uhn.fhir.model.dstu2.valueset.XPathUsageTypeEnum;
292import ca.uhn.fhir.model.api.IResource;
293import ca.uhn.fhir.model.dstu2.composite.AgeDt;
294import ca.uhn.fhir.model.dstu2.composite.BoundCodeableConceptDt;
295import ca.uhn.fhir.model.dstu2.composite.DurationDt;
296import ca.uhn.fhir.model.dstu2.composite.MoneyDt;
297import ca.uhn.fhir.model.dstu2.composite.NarrativeDt;
298import ca.uhn.fhir.model.dstu2.composite.ResourceReferenceDt;
299import ca.uhn.fhir.model.dstu2.composite.SimpleQuantityDt;
300import ca.uhn.fhir.model.primitive.Base64BinaryDt;
301import ca.uhn.fhir.model.primitive.BooleanDt;
302import ca.uhn.fhir.model.primitive.BoundCodeDt;
303import ca.uhn.fhir.model.primitive.CodeDt;
304import ca.uhn.fhir.model.primitive.DateDt;
305import ca.uhn.fhir.model.primitive.DateTimeDt;
306import ca.uhn.fhir.model.primitive.DecimalDt;
307import ca.uhn.fhir.model.primitive.IdDt;
308import ca.uhn.fhir.model.primitive.InstantDt;
309import ca.uhn.fhir.model.primitive.IntegerDt;
310import ca.uhn.fhir.model.primitive.OidDt;
311import ca.uhn.fhir.model.primitive.PositiveIntDt;
312import ca.uhn.fhir.model.primitive.StringDt;
313import ca.uhn.fhir.model.primitive.TimeDt;
314import ca.uhn.fhir.model.primitive.UnsignedIntDt;
315import ca.uhn.fhir.model.primitive.UriDt;
316
317
318/**
319 * HAPI/FHIR <b>Location</b> Resource
320 * (administrative.entity)
321 *
322 * <p>
323 * <b>Definition:</b>
324 * Details and position information for a physical place where services are provided  and resources and participants may be stored, found, contained or accommodated.
325 * </p> 
326 *
327 * <p>
328 * <b>Requirements:</b>
329 * 
330 * </p> 
331 *
332 * <p>
333 * <b>Profile Definition:</b>
334 * <a href="http://hl7.org/fhir/profiles/Location">http://hl7.org/fhir/profiles/Location</a> 
335 * </p>
336 *
337 */
338@ResourceDef(name="Location", profile="http://hl7.org/fhir/profiles/Location", id="location")
339public class Location extends ca.uhn.fhir.model.dstu2.resource.BaseResource
340    implements  IResource     {
341
342        /**
343         * Search parameter constant for <b>identifier</b>
344         * <p>
345         * Description: <b></b><br>
346         * Type: <b>token</b><br>
347         * Path: <b>Location.identifier</b><br>
348         * </p>
349         */
350        @SearchParamDefinition(name="identifier", path="Location.identifier", description="", type="token"  )
351        public static final String SP_IDENTIFIER = "identifier";
352
353        /**
354         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
355         * <p>
356         * Description: <b></b><br>
357         * Type: <b>token</b><br>
358         * Path: <b>Location.identifier</b><br>
359         * </p>
360         */
361        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
362
363        /**
364         * Search parameter constant for <b>name</b>
365         * <p>
366         * Description: <b>A (portion of the) name of the location</b><br>
367         * Type: <b>string</b><br>
368         * Path: <b>Location.name</b><br>
369         * </p>
370         */
371        @SearchParamDefinition(name="name", path="Location.name", description="A (portion of the) name of the location", type="string"  )
372        public static final String SP_NAME = "name";
373
374        /**
375         * <b>Fluent Client</b> search parameter constant for <b>name</b>
376         * <p>
377         * Description: <b>A (portion of the) name of the location</b><br>
378         * Type: <b>string</b><br>
379         * Path: <b>Location.name</b><br>
380         * </p>
381         */
382        public static final StringClientParam NAME = new StringClientParam(SP_NAME);
383
384        /**
385         * Search parameter constant for <b>type</b>
386         * <p>
387         * Description: <b>A code for the type of location</b><br>
388         * Type: <b>token</b><br>
389         * Path: <b>Location.type</b><br>
390         * </p>
391         */
392        @SearchParamDefinition(name="type", path="Location.type", description="A code for the type of location", type="token"  )
393        public static final String SP_TYPE = "type";
394
395        /**
396         * <b>Fluent Client</b> search parameter constant for <b>type</b>
397         * <p>
398         * Description: <b>A code for the type of location</b><br>
399         * Type: <b>token</b><br>
400         * Path: <b>Location.type</b><br>
401         * </p>
402         */
403        public static final TokenClientParam TYPE = new TokenClientParam(SP_TYPE);
404
405        /**
406         * Search parameter constant for <b>address</b>
407         * <p>
408         * Description: <b>A (part of the) address of the location</b><br>
409         * Type: <b>string</b><br>
410         * Path: <b>Location.address</b><br>
411         * </p>
412         */
413        @SearchParamDefinition(name="address", path="Location.address", description="A (part of the) address of the location", type="string"  )
414        public static final String SP_ADDRESS = "address";
415
416        /**
417         * <b>Fluent Client</b> search parameter constant for <b>address</b>
418         * <p>
419         * Description: <b>A (part of the) address of the location</b><br>
420         * Type: <b>string</b><br>
421         * Path: <b>Location.address</b><br>
422         * </p>
423         */
424        public static final StringClientParam ADDRESS = new StringClientParam(SP_ADDRESS);
425
426        /**
427         * Search parameter constant for <b>address-city</b>
428         * <p>
429         * Description: <b>A city specified in an address</b><br>
430         * Type: <b>string</b><br>
431         * Path: <b>Location.address.city</b><br>
432         * </p>
433         */
434        @SearchParamDefinition(name="address-city", path="Location.address.city", description="A city specified in an address", type="string"  )
435        public static final String SP_ADDRESS_CITY = "address-city";
436
437        /**
438         * <b>Fluent Client</b> search parameter constant for <b>address-city</b>
439         * <p>
440         * Description: <b>A city specified in an address</b><br>
441         * Type: <b>string</b><br>
442         * Path: <b>Location.address.city</b><br>
443         * </p>
444         */
445        public static final StringClientParam ADDRESS_CITY = new StringClientParam(SP_ADDRESS_CITY);
446
447        /**
448         * Search parameter constant for <b>address-state</b>
449         * <p>
450         * Description: <b>A state specified in an address</b><br>
451         * Type: <b>string</b><br>
452         * Path: <b>Location.address.state</b><br>
453         * </p>
454         */
455        @SearchParamDefinition(name="address-state", path="Location.address.state", description="A state specified in an address", type="string"  )
456        public static final String SP_ADDRESS_STATE = "address-state";
457
458        /**
459         * <b>Fluent Client</b> search parameter constant for <b>address-state</b>
460         * <p>
461         * Description: <b>A state specified in an address</b><br>
462         * Type: <b>string</b><br>
463         * Path: <b>Location.address.state</b><br>
464         * </p>
465         */
466        public static final StringClientParam ADDRESS_STATE = new StringClientParam(SP_ADDRESS_STATE);
467
468        /**
469         * Search parameter constant for <b>address-postalcode</b>
470         * <p>
471         * Description: <b>A postal code specified in an address</b><br>
472         * Type: <b>string</b><br>
473         * Path: <b>Location.address.postalCode</b><br>
474         * </p>
475         */
476        @SearchParamDefinition(name="address-postalcode", path="Location.address.postalCode", description="A postal code specified in an address", type="string"  )
477        public static final String SP_ADDRESS_POSTALCODE = "address-postalcode";
478
479        /**
480         * <b>Fluent Client</b> search parameter constant for <b>address-postalcode</b>
481         * <p>
482         * Description: <b>A postal code specified in an address</b><br>
483         * Type: <b>string</b><br>
484         * Path: <b>Location.address.postalCode</b><br>
485         * </p>
486         */
487        public static final StringClientParam ADDRESS_POSTALCODE = new StringClientParam(SP_ADDRESS_POSTALCODE);
488
489        /**
490         * Search parameter constant for <b>address-country</b>
491         * <p>
492         * Description: <b>A country specified in an address</b><br>
493         * Type: <b>string</b><br>
494         * Path: <b>Location.address.country</b><br>
495         * </p>
496         */
497        @SearchParamDefinition(name="address-country", path="Location.address.country", description="A country specified in an address", type="string"  )
498        public static final String SP_ADDRESS_COUNTRY = "address-country";
499
500        /**
501         * <b>Fluent Client</b> search parameter constant for <b>address-country</b>
502         * <p>
503         * Description: <b>A country specified in an address</b><br>
504         * Type: <b>string</b><br>
505         * Path: <b>Location.address.country</b><br>
506         * </p>
507         */
508        public static final StringClientParam ADDRESS_COUNTRY = new StringClientParam(SP_ADDRESS_COUNTRY);
509
510        /**
511         * Search parameter constant for <b>address-use</b>
512         * <p>
513         * Description: <b>A use code specified in an address</b><br>
514         * Type: <b>token</b><br>
515         * Path: <b>Location.address.use</b><br>
516         * </p>
517         */
518        @SearchParamDefinition(name="address-use", path="Location.address.use", description="A use code specified in an address", type="token"  )
519        public static final String SP_ADDRESS_USE = "address-use";
520
521        /**
522         * <b>Fluent Client</b> search parameter constant for <b>address-use</b>
523         * <p>
524         * Description: <b>A use code specified in an address</b><br>
525         * Type: <b>token</b><br>
526         * Path: <b>Location.address.use</b><br>
527         * </p>
528         */
529        public static final TokenClientParam ADDRESS_USE = new TokenClientParam(SP_ADDRESS_USE);
530
531        /**
532         * Search parameter constant for <b>status</b>
533         * <p>
534         * Description: <b>Searches for locations with a specific kind of status</b><br>
535         * Type: <b>token</b><br>
536         * Path: <b>Location.status</b><br>
537         * </p>
538         */
539        @SearchParamDefinition(name="status", path="Location.status", description="Searches for locations with a specific kind of status", type="token"  )
540        public static final String SP_STATUS = "status";
541
542        /**
543         * <b>Fluent Client</b> search parameter constant for <b>status</b>
544         * <p>
545         * Description: <b>Searches for locations with a specific kind of status</b><br>
546         * Type: <b>token</b><br>
547         * Path: <b>Location.status</b><br>
548         * </p>
549         */
550        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
551
552        /**
553         * Search parameter constant for <b>partof</b>
554         * <p>
555         * Description: <b>The location of which this location is a part</b><br>
556         * Type: <b>reference</b><br>
557         * Path: <b>Location.partOf</b><br>
558         * </p>
559         */
560        @SearchParamDefinition(name="partof", path="Location.partOf", description="The location of which this location is a part", type="reference"  )
561        public static final String SP_PARTOF = "partof";
562
563        /**
564         * <b>Fluent Client</b> search parameter constant for <b>partof</b>
565         * <p>
566         * Description: <b>The location of which this location is a part</b><br>
567         * Type: <b>reference</b><br>
568         * Path: <b>Location.partOf</b><br>
569         * </p>
570         */
571        public static final ReferenceClientParam PARTOF = new ReferenceClientParam(SP_PARTOF);
572
573        /**
574         * Search parameter constant for <b>near</b>
575         * <p>
576         * Description: <b>The coordinates expressed as [lat],[long] (using the WGS84 datum, see notes) to find locations near to (servers may search using a square rather than a circle for efficiency)</b><br>
577         * Type: <b>token</b><br>
578         * Path: <b>Location.position</b><br>
579         * </p>
580         */
581        @SearchParamDefinition(name="near", path="Location.position", description="The coordinates expressed as [lat],[long] (using the WGS84 datum, see notes) to find locations near to (servers may search using a square rather than a circle for efficiency)", type="token"  )
582        public static final String SP_NEAR = "near";
583
584        /**
585         * <b>Fluent Client</b> search parameter constant for <b>near</b>
586         * <p>
587         * Description: <b>The coordinates expressed as [lat],[long] (using the WGS84 datum, see notes) to find locations near to (servers may search using a square rather than a circle for efficiency)</b><br>
588         * Type: <b>token</b><br>
589         * Path: <b>Location.position</b><br>
590         * </p>
591         */
592        public static final TokenClientParam NEAR = new TokenClientParam(SP_NEAR);
593
594        /**
595         * Search parameter constant for <b>near-distance</b>
596         * <p>
597         * Description: <b>A distance quantity to limit the near search to locations within a specific distance</b><br>
598         * Type: <b>token</b><br>
599         * Path: <b>Location.position</b><br>
600         * </p>
601         */
602        @SearchParamDefinition(name="near-distance", path="Location.position", description="A distance quantity to limit the near search to locations within a specific distance", type="token"  )
603        public static final String SP_NEAR_DISTANCE = "near-distance";
604
605        /**
606         * <b>Fluent Client</b> search parameter constant for <b>near-distance</b>
607         * <p>
608         * Description: <b>A distance quantity to limit the near search to locations within a specific distance</b><br>
609         * Type: <b>token</b><br>
610         * Path: <b>Location.position</b><br>
611         * </p>
612         */
613        public static final TokenClientParam NEAR_DISTANCE = new TokenClientParam(SP_NEAR_DISTANCE);
614
615        /**
616         * Search parameter constant for <b>organization</b>
617         * <p>
618         * Description: <b>Searches for locations that are managed by the provided organization</b><br>
619         * Type: <b>reference</b><br>
620         * Path: <b>Location.managingOrganization</b><br>
621         * </p>
622         */
623        @SearchParamDefinition(name="organization", path="Location.managingOrganization", description="Searches for locations that are managed by the provided organization", type="reference"  )
624        public static final String SP_ORGANIZATION = "organization";
625
626        /**
627         * <b>Fluent Client</b> search parameter constant for <b>organization</b>
628         * <p>
629         * Description: <b>Searches for locations that are managed by the provided organization</b><br>
630         * Type: <b>reference</b><br>
631         * Path: <b>Location.managingOrganization</b><br>
632         * </p>
633         */
634        public static final ReferenceClientParam ORGANIZATION = new ReferenceClientParam(SP_ORGANIZATION);
635
636
637        /**
638         * Constant for fluent queries to be used to add include statements. Specifies
639         * the path value of "<b>Location:organization</b>".
640         */
641        public static final Include INCLUDE_ORGANIZATION = new Include("Location:organization");
642
643        /**
644         * Constant for fluent queries to be used to add include statements. Specifies
645         * the path value of "<b>Location:partof</b>".
646         */
647        public static final Include INCLUDE_PARTOF = new Include("Location:partof");
648
649
650        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)       
651        @Description(
652                shortDefinition="id",
653                formalDefinition="Unique code or number identifying the location to its users"
654        )
655        private java.util.List<IdentifierDt> myIdentifier;
656        
657        @Child(name="status", type=CodeDt.class, order=1, min=0, max=1, summary=true, modifier=true)    
658        @Description(
659                shortDefinition="status",
660                formalDefinition=""
661        )
662        private BoundCodeDt<LocationStatusEnum> myStatus;
663        
664        @Child(name="name", type=StringDt.class, order=2, min=0, max=1, summary=true, modifier=false)   
665        @Description(
666                shortDefinition="",
667                formalDefinition="Name of the location as used by humans. Does not need to be unique."
668        )
669        private StringDt myName;
670        
671        @Child(name="description", type=StringDt.class, order=3, min=0, max=1, summary=true, modifier=false)    
672        @Description(
673                shortDefinition="",
674                formalDefinition="Description of the Location, which helps in finding or referencing the place"
675        )
676        private StringDt myDescription;
677        
678        @Child(name="mode", type=CodeDt.class, order=4, min=0, max=1, summary=true, modifier=true)      
679        @Description(
680                shortDefinition="class",
681                formalDefinition="Indicates whether a resource instance represents a specific location or a class of locations"
682        )
683        private BoundCodeDt<LocationModeEnum> myMode;
684        
685        @Child(name="type", type=CodeableConceptDt.class, order=5, min=0, max=1, summary=true, modifier=false)  
686        @Description(
687                shortDefinition="class",
688                formalDefinition="Indicates the type of function performed at the location"
689        )
690        private BoundCodeableConceptDt<LocationTypeEnum> myType;
691        
692        @Child(name="telecom", type=ContactPointDt.class, order=6, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false)       
693        @Description(
694                shortDefinition="",
695                formalDefinition="The contact details of communication devices available at the location. This can include phone numbers, fax numbers, mobile numbers, email addresses and web sites"
696        )
697        private java.util.List<ContactPointDt> myTelecom;
698        
699        @Child(name="address", type=AddressDt.class, order=7, min=0, max=1, summary=false, modifier=false)      
700        @Description(
701                shortDefinition="",
702                formalDefinition=""
703        )
704        private AddressDt myAddress;
705        
706        @Child(name="physicalType", type=CodeableConceptDt.class, order=8, min=0, max=1, summary=true, modifier=false)  
707        @Description(
708                shortDefinition="class",
709                formalDefinition="Physical form of the location, e.g. building, room, vehicle, road"
710        )
711        private CodeableConceptDt myPhysicalType;
712        
713        @Child(name="position", order=9, min=0, max=1, summary=false, modifier=false)   
714        @Description(
715                shortDefinition="",
716                formalDefinition="The absolute geographic location of the Location, expressed using the WGS84 datum (This is the same co-ordinate system used in KML)"
717        )
718        private Position myPosition;
719        
720        @Child(name="managingOrganization", order=10, min=0, max=1, summary=true, modifier=false, type={
721                ca.uhn.fhir.model.dstu2.resource.Organization.class     })
722        @Description(
723                shortDefinition="",
724                formalDefinition="The organization responsible for the provisioning and upkeep of the location"
725        )
726        private ResourceReferenceDt myManagingOrganization;
727        
728        @Child(name="partOf", order=11, min=0, max=1, summary=false, modifier=false, type={
729                ca.uhn.fhir.model.dstu2.resource.Location.class })
730        @Description(
731                shortDefinition="",
732                formalDefinition="Another Location which this Location is physically part of"
733        )
734        private ResourceReferenceDt myPartOf;
735        
736
737        @Override
738        public boolean isEmpty() {
739                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myStatus,  myName,  myDescription,  myMode,  myType,  myTelecom,  myAddress,  myPhysicalType,  myPosition,  myManagingOrganization,  myPartOf);
740        }
741        
742        @Override
743        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
744                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myStatus, myName, myDescription, myMode, myType, myTelecom, myAddress, myPhysicalType, myPosition, myManagingOrganization, myPartOf);
745        }
746
747        /**
748         * Gets the value(s) for <b>identifier</b> (id).
749         * creating it if it does
750         * not exist. Will not return <code>null</code>.
751         *
752     * <p>
753     * <b>Definition:</b>
754     * Unique code or number identifying the location to its users
755     * </p> 
756         */
757        public java.util.List<IdentifierDt> getIdentifier() {  
758                if (myIdentifier == null) {
759                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
760                }
761                return myIdentifier;
762        }
763
764        /**
765         * Sets the value(s) for <b>identifier</b> (id)
766         *
767     * <p>
768     * <b>Definition:</b>
769     * Unique code or number identifying the location to its users
770     * </p> 
771         */
772        public Location setIdentifier(java.util.List<IdentifierDt> theValue) {
773                myIdentifier = theValue;
774                return this;
775        }
776        
777        
778
779        /**
780         * Adds and returns a new value for <b>identifier</b> (id)
781         *
782     * <p>
783     * <b>Definition:</b>
784     * Unique code or number identifying the location to its users
785     * </p> 
786         */
787        public IdentifierDt addIdentifier() {
788                IdentifierDt newType = new IdentifierDt();
789                getIdentifier().add(newType);
790                return newType; 
791        }
792
793        /**
794         * Adds a given new value for <b>identifier</b> (id)
795         *
796         * <p>
797         * <b>Definition:</b>
798         * Unique code or number identifying the location to its users
799         * </p>
800         * @param theValue The identifier to add (must not be <code>null</code>)
801         */
802        public Location addIdentifier(IdentifierDt theValue) {
803                if (theValue == null) {
804                        throw new NullPointerException("theValue must not be null");
805                }
806                getIdentifier().add(theValue);
807                return this;
808        }
809
810        /**
811         * Gets the first repetition for <b>identifier</b> (id),
812         * creating it if it does not already exist.
813         *
814     * <p>
815     * <b>Definition:</b>
816     * Unique code or number identifying the location to its users
817     * </p> 
818         */
819        public IdentifierDt getIdentifierFirstRep() {
820                if (getIdentifier().isEmpty()) {
821                        return addIdentifier();
822                }
823                return getIdentifier().get(0); 
824        }
825  
826        /**
827         * Gets the value(s) for <b>status</b> (status).
828         * creating it if it does
829         * not exist. Will not return <code>null</code>.
830         *
831     * <p>
832     * <b>Definition:</b>
833     * 
834     * </p> 
835         */
836        public BoundCodeDt<LocationStatusEnum> getStatusElement() {  
837                if (myStatus == null) {
838                        myStatus = new BoundCodeDt<LocationStatusEnum>(LocationStatusEnum.VALUESET_BINDER);
839                }
840                return myStatus;
841        }
842
843        
844        /**
845         * Gets the value(s) for <b>status</b> (status).
846         * creating it if it does
847         * not exist. Will not return <code>null</code>.
848         *
849     * <p>
850     * <b>Definition:</b>
851     * 
852     * </p> 
853         */
854        public String getStatus() {  
855                return getStatusElement().getValue();
856        }
857
858        /**
859         * Sets the value(s) for <b>status</b> (status)
860         *
861     * <p>
862     * <b>Definition:</b>
863     * 
864     * </p> 
865         */
866        public Location setStatus(BoundCodeDt<LocationStatusEnum> theValue) {
867                myStatus = theValue;
868                return this;
869        }
870        
871        
872
873        /**
874         * Sets the value(s) for <b>status</b> (status)
875         *
876     * <p>
877     * <b>Definition:</b>
878     * 
879     * </p> 
880         */
881        public Location setStatus(LocationStatusEnum theValue) {
882                setStatus(new BoundCodeDt<LocationStatusEnum>(LocationStatusEnum.VALUESET_BINDER, theValue));
883                
884/*
885                getStatusElement().setValueAsEnum(theValue);
886*/
887                return this;
888        }
889
890  
891        /**
892         * Gets the value(s) for <b>name</b> ().
893         * creating it if it does
894         * not exist. Will not return <code>null</code>.
895         *
896     * <p>
897     * <b>Definition:</b>
898     * Name of the location as used by humans. Does not need to be unique.
899     * </p> 
900         */
901        public StringDt getNameElement() {  
902                if (myName == null) {
903                        myName = new StringDt();
904                }
905                return myName;
906        }
907
908        
909        /**
910         * Gets the value(s) for <b>name</b> ().
911         * creating it if it does
912         * not exist. Will not return <code>null</code>.
913         *
914     * <p>
915     * <b>Definition:</b>
916     * Name of the location as used by humans. Does not need to be unique.
917     * </p> 
918         */
919        public String getName() {  
920                return getNameElement().getValue();
921        }
922
923        /**
924         * Sets the value(s) for <b>name</b> ()
925         *
926     * <p>
927     * <b>Definition:</b>
928     * Name of the location as used by humans. Does not need to be unique.
929     * </p> 
930         */
931        public Location setName(StringDt theValue) {
932                myName = theValue;
933                return this;
934        }
935        
936        
937
938        /**
939         * Sets the value for <b>name</b> ()
940         *
941     * <p>
942     * <b>Definition:</b>
943     * Name of the location as used by humans. Does not need to be unique.
944     * </p> 
945         */
946        public Location setName( String theString) {
947                myName = new StringDt(theString); 
948                return this; 
949        }
950
951 
952        /**
953         * Gets the value(s) for <b>description</b> ().
954         * creating it if it does
955         * not exist. Will not return <code>null</code>.
956         *
957     * <p>
958     * <b>Definition:</b>
959     * Description of the Location, which helps in finding or referencing the place
960     * </p> 
961         */
962        public StringDt getDescriptionElement() {  
963                if (myDescription == null) {
964                        myDescription = new StringDt();
965                }
966                return myDescription;
967        }
968
969        
970        /**
971         * Gets the value(s) for <b>description</b> ().
972         * creating it if it does
973         * not exist. Will not return <code>null</code>.
974         *
975     * <p>
976     * <b>Definition:</b>
977     * Description of the Location, which helps in finding or referencing the place
978     * </p> 
979         */
980        public String getDescription() {  
981                return getDescriptionElement().getValue();
982        }
983
984        /**
985         * Sets the value(s) for <b>description</b> ()
986         *
987     * <p>
988     * <b>Definition:</b>
989     * Description of the Location, which helps in finding or referencing the place
990     * </p> 
991         */
992        public Location setDescription(StringDt theValue) {
993                myDescription = theValue;
994                return this;
995        }
996        
997        
998
999        /**
1000         * Sets the value for <b>description</b> ()
1001         *
1002     * <p>
1003     * <b>Definition:</b>
1004     * Description of the Location, which helps in finding or referencing the place
1005     * </p> 
1006         */
1007        public Location setDescription( String theString) {
1008                myDescription = new StringDt(theString); 
1009                return this; 
1010        }
1011
1012 
1013        /**
1014         * Gets the value(s) for <b>mode</b> (class).
1015         * creating it if it does
1016         * not exist. Will not return <code>null</code>.
1017         *
1018     * <p>
1019     * <b>Definition:</b>
1020     * Indicates whether a resource instance represents a specific location or a class of locations
1021     * </p> 
1022         */
1023        public BoundCodeDt<LocationModeEnum> getModeElement() {  
1024                if (myMode == null) {
1025                        myMode = new BoundCodeDt<LocationModeEnum>(LocationModeEnum.VALUESET_BINDER);
1026                }
1027                return myMode;
1028        }
1029
1030        
1031        /**
1032         * Gets the value(s) for <b>mode</b> (class).
1033         * creating it if it does
1034         * not exist. Will not return <code>null</code>.
1035         *
1036     * <p>
1037     * <b>Definition:</b>
1038     * Indicates whether a resource instance represents a specific location or a class of locations
1039     * </p> 
1040         */
1041        public String getMode() {  
1042                return getModeElement().getValue();
1043        }
1044
1045        /**
1046         * Sets the value(s) for <b>mode</b> (class)
1047         *
1048     * <p>
1049     * <b>Definition:</b>
1050     * Indicates whether a resource instance represents a specific location or a class of locations
1051     * </p> 
1052         */
1053        public Location setMode(BoundCodeDt<LocationModeEnum> theValue) {
1054                myMode = theValue;
1055                return this;
1056        }
1057        
1058        
1059
1060        /**
1061         * Sets the value(s) for <b>mode</b> (class)
1062         *
1063     * <p>
1064     * <b>Definition:</b>
1065     * Indicates whether a resource instance represents a specific location or a class of locations
1066     * </p> 
1067         */
1068        public Location setMode(LocationModeEnum theValue) {
1069                setMode(new BoundCodeDt<LocationModeEnum>(LocationModeEnum.VALUESET_BINDER, theValue));
1070                
1071/*
1072                getModeElement().setValueAsEnum(theValue);
1073*/
1074                return this;
1075        }
1076
1077  
1078        /**
1079         * Gets the value(s) for <b>type</b> (class).
1080         * creating it if it does
1081         * not exist. Will not return <code>null</code>.
1082         *
1083     * <p>
1084     * <b>Definition:</b>
1085     * Indicates the type of function performed at the location
1086     * </p> 
1087         */
1088        public BoundCodeableConceptDt<LocationTypeEnum> getType() {  
1089                if (myType == null) {
1090                        myType = new BoundCodeableConceptDt<LocationTypeEnum>(LocationTypeEnum.VALUESET_BINDER);
1091                }
1092                return myType;
1093        }
1094
1095        /**
1096         * Sets the value(s) for <b>type</b> (class)
1097         *
1098     * <p>
1099     * <b>Definition:</b>
1100     * Indicates the type of function performed at the location
1101     * </p> 
1102         */
1103        public Location setType(BoundCodeableConceptDt<LocationTypeEnum> theValue) {
1104                myType = theValue;
1105                return this;
1106        }
1107        
1108        
1109
1110        /**
1111         * Sets the value(s) for <b>type</b> (class)
1112         *
1113     * <p>
1114     * <b>Definition:</b>
1115     * Indicates the type of function performed at the location
1116     * </p> 
1117         */
1118        public Location setType(LocationTypeEnum theValue) {
1119                setType(new BoundCodeableConceptDt<LocationTypeEnum>(LocationTypeEnum.VALUESET_BINDER, theValue));
1120                
1121/*
1122                getType().setValueAsEnum(theValue);
1123*/
1124                return this;
1125        }
1126
1127  
1128        /**
1129         * Gets the value(s) for <b>telecom</b> ().
1130         * creating it if it does
1131         * not exist. Will not return <code>null</code>.
1132         *
1133     * <p>
1134     * <b>Definition:</b>
1135     * The contact details of communication devices available at the location. This can include phone numbers, fax numbers, mobile numbers, email addresses and web sites
1136     * </p> 
1137         */
1138        public java.util.List<ContactPointDt> getTelecom() {  
1139                if (myTelecom == null) {
1140                        myTelecom = new java.util.ArrayList<ContactPointDt>();
1141                }
1142                return myTelecom;
1143        }
1144
1145        /**
1146         * Sets the value(s) for <b>telecom</b> ()
1147         *
1148     * <p>
1149     * <b>Definition:</b>
1150     * The contact details of communication devices available at the location. This can include phone numbers, fax numbers, mobile numbers, email addresses and web sites
1151     * </p> 
1152         */
1153        public Location setTelecom(java.util.List<ContactPointDt> theValue) {
1154                myTelecom = theValue;
1155                return this;
1156        }
1157        
1158        
1159
1160        /**
1161         * Adds and returns a new value for <b>telecom</b> ()
1162         *
1163     * <p>
1164     * <b>Definition:</b>
1165     * The contact details of communication devices available at the location. This can include phone numbers, fax numbers, mobile numbers, email addresses and web sites
1166     * </p> 
1167         */
1168        public ContactPointDt addTelecom() {
1169                ContactPointDt newType = new ContactPointDt();
1170                getTelecom().add(newType);
1171                return newType; 
1172        }
1173
1174        /**
1175         * Adds a given new value for <b>telecom</b> ()
1176         *
1177         * <p>
1178         * <b>Definition:</b>
1179         * The contact details of communication devices available at the location. This can include phone numbers, fax numbers, mobile numbers, email addresses and web sites
1180         * </p>
1181         * @param theValue The telecom to add (must not be <code>null</code>)
1182         */
1183        public Location addTelecom(ContactPointDt theValue) {
1184                if (theValue == null) {
1185                        throw new NullPointerException("theValue must not be null");
1186                }
1187                getTelecom().add(theValue);
1188                return this;
1189        }
1190
1191        /**
1192         * Gets the first repetition for <b>telecom</b> (),
1193         * creating it if it does not already exist.
1194         *
1195     * <p>
1196     * <b>Definition:</b>
1197     * The contact details of communication devices available at the location. This can include phone numbers, fax numbers, mobile numbers, email addresses and web sites
1198     * </p> 
1199         */
1200        public ContactPointDt getTelecomFirstRep() {
1201                if (getTelecom().isEmpty()) {
1202                        return addTelecom();
1203                }
1204                return getTelecom().get(0); 
1205        }
1206  
1207        /**
1208         * Gets the value(s) for <b>address</b> ().
1209         * creating it if it does
1210         * not exist. Will not return <code>null</code>.
1211         *
1212     * <p>
1213     * <b>Definition:</b>
1214     * 
1215     * </p> 
1216         */
1217        public AddressDt getAddress() {  
1218                if (myAddress == null) {
1219                        myAddress = new AddressDt();
1220                }
1221                return myAddress;
1222        }
1223
1224        /**
1225         * Sets the value(s) for <b>address</b> ()
1226         *
1227     * <p>
1228     * <b>Definition:</b>
1229     * 
1230     * </p> 
1231         */
1232        public Location setAddress(AddressDt theValue) {
1233                myAddress = theValue;
1234                return this;
1235        }
1236        
1237        
1238
1239  
1240        /**
1241         * Gets the value(s) for <b>physicalType</b> (class).
1242         * creating it if it does
1243         * not exist. Will not return <code>null</code>.
1244         *
1245     * <p>
1246     * <b>Definition:</b>
1247     * Physical form of the location, e.g. building, room, vehicle, road
1248     * </p> 
1249         */
1250        public CodeableConceptDt getPhysicalType() {  
1251                if (myPhysicalType == null) {
1252                        myPhysicalType = new CodeableConceptDt();
1253                }
1254                return myPhysicalType;
1255        }
1256
1257        /**
1258         * Sets the value(s) for <b>physicalType</b> (class)
1259         *
1260     * <p>
1261     * <b>Definition:</b>
1262     * Physical form of the location, e.g. building, room, vehicle, road
1263     * </p> 
1264         */
1265        public Location setPhysicalType(CodeableConceptDt theValue) {
1266                myPhysicalType = theValue;
1267                return this;
1268        }
1269        
1270        
1271
1272  
1273        /**
1274         * Gets the value(s) for <b>position</b> ().
1275         * creating it if it does
1276         * not exist. Will not return <code>null</code>.
1277         *
1278     * <p>
1279     * <b>Definition:</b>
1280     * The absolute geographic location of the Location, expressed using the WGS84 datum (This is the same co-ordinate system used in KML)
1281     * </p> 
1282         */
1283        public Position getPosition() {  
1284                if (myPosition == null) {
1285                        myPosition = new Position();
1286                }
1287                return myPosition;
1288        }
1289
1290        /**
1291         * Sets the value(s) for <b>position</b> ()
1292         *
1293     * <p>
1294     * <b>Definition:</b>
1295     * The absolute geographic location of the Location, expressed using the WGS84 datum (This is the same co-ordinate system used in KML)
1296     * </p> 
1297         */
1298        public Location setPosition(Position theValue) {
1299                myPosition = theValue;
1300                return this;
1301        }
1302        
1303        
1304
1305  
1306        /**
1307         * Gets the value(s) for <b>managingOrganization</b> ().
1308         * creating it if it does
1309         * not exist. Will not return <code>null</code>.
1310         *
1311     * <p>
1312     * <b>Definition:</b>
1313     * The organization responsible for the provisioning and upkeep of the location
1314     * </p> 
1315         */
1316        public ResourceReferenceDt getManagingOrganization() {  
1317                if (myManagingOrganization == null) {
1318                        myManagingOrganization = new ResourceReferenceDt();
1319                }
1320                return myManagingOrganization;
1321        }
1322
1323        /**
1324         * Sets the value(s) for <b>managingOrganization</b> ()
1325         *
1326     * <p>
1327     * <b>Definition:</b>
1328     * The organization responsible for the provisioning and upkeep of the location
1329     * </p> 
1330         */
1331        public Location setManagingOrganization(ResourceReferenceDt theValue) {
1332                myManagingOrganization = theValue;
1333                return this;
1334        }
1335        
1336        
1337
1338  
1339        /**
1340         * Gets the value(s) for <b>partOf</b> ().
1341         * creating it if it does
1342         * not exist. Will not return <code>null</code>.
1343         *
1344     * <p>
1345     * <b>Definition:</b>
1346     * Another Location which this Location is physically part of
1347     * </p> 
1348         */
1349        public ResourceReferenceDt getPartOf() {  
1350                if (myPartOf == null) {
1351                        myPartOf = new ResourceReferenceDt();
1352                }
1353                return myPartOf;
1354        }
1355
1356        /**
1357         * Sets the value(s) for <b>partOf</b> ()
1358         *
1359     * <p>
1360     * <b>Definition:</b>
1361     * Another Location which this Location is physically part of
1362     * </p> 
1363         */
1364        public Location setPartOf(ResourceReferenceDt theValue) {
1365                myPartOf = theValue;
1366                return this;
1367        }
1368        
1369        
1370
1371  
1372        /**
1373         * Block class for child element: <b>Location.position</b> ()
1374         *
1375     * <p>
1376     * <b>Definition:</b>
1377     * The absolute geographic location of the Location, expressed using the WGS84 datum (This is the same co-ordinate system used in KML)
1378     * </p> 
1379         */
1380        @Block()        
1381        public static class Position 
1382            extends  BaseIdentifiableElement        implements IResourceBlock {
1383        
1384        @Child(name="longitude", type=DecimalDt.class, order=0, min=1, max=1, summary=false, modifier=false)    
1385        @Description(
1386                shortDefinition="",
1387                formalDefinition="Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below)"
1388        )
1389        private DecimalDt myLongitude;
1390        
1391        @Child(name="latitude", type=DecimalDt.class, order=1, min=1, max=1, summary=false, modifier=false)     
1392        @Description(
1393                shortDefinition="",
1394                formalDefinition="Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below)"
1395        )
1396        private DecimalDt myLatitude;
1397        
1398        @Child(name="altitude", type=DecimalDt.class, order=2, min=0, max=1, summary=false, modifier=false)     
1399        @Description(
1400                shortDefinition="",
1401                formalDefinition="Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below)"
1402        )
1403        private DecimalDt myAltitude;
1404        
1405
1406        @Override
1407        public boolean isEmpty() {
1408                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myLongitude,  myLatitude,  myAltitude);
1409        }
1410        
1411        @Override
1412        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1413                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myLongitude, myLatitude, myAltitude);
1414        }
1415
1416        /**
1417         * Gets the value(s) for <b>longitude</b> ().
1418         * creating it if it does
1419         * not exist. Will not return <code>null</code>.
1420         *
1421     * <p>
1422     * <b>Definition:</b>
1423     * Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below)
1424     * </p> 
1425         */
1426        public DecimalDt getLongitudeElement() {  
1427                if (myLongitude == null) {
1428                        myLongitude = new DecimalDt();
1429                }
1430                return myLongitude;
1431        }
1432
1433        
1434        /**
1435         * Gets the value(s) for <b>longitude</b> ().
1436         * creating it if it does
1437         * not exist. Will not return <code>null</code>.
1438         *
1439     * <p>
1440     * <b>Definition:</b>
1441     * Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below)
1442     * </p> 
1443         */
1444        public BigDecimal getLongitude() {  
1445                return getLongitudeElement().getValue();
1446        }
1447
1448        /**
1449         * Sets the value(s) for <b>longitude</b> ()
1450         *
1451     * <p>
1452     * <b>Definition:</b>
1453     * Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below)
1454     * </p> 
1455         */
1456        public Position setLongitude(DecimalDt theValue) {
1457                myLongitude = theValue;
1458                return this;
1459        }
1460        
1461        
1462
1463        /**
1464         * Sets the value for <b>longitude</b> ()
1465         *
1466     * <p>
1467     * <b>Definition:</b>
1468     * Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below)
1469     * </p> 
1470         */
1471        public Position setLongitude( long theValue) {
1472                myLongitude = new DecimalDt(theValue); 
1473                return this; 
1474        }
1475
1476        /**
1477         * Sets the value for <b>longitude</b> ()
1478         *
1479     * <p>
1480     * <b>Definition:</b>
1481     * Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below)
1482     * </p> 
1483         */
1484        public Position setLongitude( double theValue) {
1485                myLongitude = new DecimalDt(theValue); 
1486                return this; 
1487        }
1488
1489        /**
1490         * Sets the value for <b>longitude</b> ()
1491         *
1492     * <p>
1493     * <b>Definition:</b>
1494     * Longitude. The value domain and the interpretation are the same as for the text of the longitude element in KML (see notes below)
1495     * </p> 
1496         */
1497        public Position setLongitude( java.math.BigDecimal theValue) {
1498                myLongitude = new DecimalDt(theValue); 
1499                return this; 
1500        }
1501
1502 
1503        /**
1504         * Gets the value(s) for <b>latitude</b> ().
1505         * creating it if it does
1506         * not exist. Will not return <code>null</code>.
1507         *
1508     * <p>
1509     * <b>Definition:</b>
1510     * Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below)
1511     * </p> 
1512         */
1513        public DecimalDt getLatitudeElement() {  
1514                if (myLatitude == null) {
1515                        myLatitude = new DecimalDt();
1516                }
1517                return myLatitude;
1518        }
1519
1520        
1521        /**
1522         * Gets the value(s) for <b>latitude</b> ().
1523         * creating it if it does
1524         * not exist. Will not return <code>null</code>.
1525         *
1526     * <p>
1527     * <b>Definition:</b>
1528     * Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below)
1529     * </p> 
1530         */
1531        public BigDecimal getLatitude() {  
1532                return getLatitudeElement().getValue();
1533        }
1534
1535        /**
1536         * Sets the value(s) for <b>latitude</b> ()
1537         *
1538     * <p>
1539     * <b>Definition:</b>
1540     * Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below)
1541     * </p> 
1542         */
1543        public Position setLatitude(DecimalDt theValue) {
1544                myLatitude = theValue;
1545                return this;
1546        }
1547        
1548        
1549
1550        /**
1551         * Sets the value for <b>latitude</b> ()
1552         *
1553     * <p>
1554     * <b>Definition:</b>
1555     * Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below)
1556     * </p> 
1557         */
1558        public Position setLatitude( long theValue) {
1559                myLatitude = new DecimalDt(theValue); 
1560                return this; 
1561        }
1562
1563        /**
1564         * Sets the value for <b>latitude</b> ()
1565         *
1566     * <p>
1567     * <b>Definition:</b>
1568     * Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below)
1569     * </p> 
1570         */
1571        public Position setLatitude( double theValue) {
1572                myLatitude = new DecimalDt(theValue); 
1573                return this; 
1574        }
1575
1576        /**
1577         * Sets the value for <b>latitude</b> ()
1578         *
1579     * <p>
1580     * <b>Definition:</b>
1581     * Latitude. The value domain and the interpretation are the same as for the text of the latitude element in KML (see notes below)
1582     * </p> 
1583         */
1584        public Position setLatitude( java.math.BigDecimal theValue) {
1585                myLatitude = new DecimalDt(theValue); 
1586                return this; 
1587        }
1588
1589 
1590        /**
1591         * Gets the value(s) for <b>altitude</b> ().
1592         * creating it if it does
1593         * not exist. Will not return <code>null</code>.
1594         *
1595     * <p>
1596     * <b>Definition:</b>
1597     * Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below)
1598     * </p> 
1599         */
1600        public DecimalDt getAltitudeElement() {  
1601                if (myAltitude == null) {
1602                        myAltitude = new DecimalDt();
1603                }
1604                return myAltitude;
1605        }
1606
1607        
1608        /**
1609         * Gets the value(s) for <b>altitude</b> ().
1610         * creating it if it does
1611         * not exist. Will not return <code>null</code>.
1612         *
1613     * <p>
1614     * <b>Definition:</b>
1615     * Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below)
1616     * </p> 
1617         */
1618        public BigDecimal getAltitude() {  
1619                return getAltitudeElement().getValue();
1620        }
1621
1622        /**
1623         * Sets the value(s) for <b>altitude</b> ()
1624         *
1625     * <p>
1626     * <b>Definition:</b>
1627     * Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below)
1628     * </p> 
1629         */
1630        public Position setAltitude(DecimalDt theValue) {
1631                myAltitude = theValue;
1632                return this;
1633        }
1634        
1635        
1636
1637        /**
1638         * Sets the value for <b>altitude</b> ()
1639         *
1640     * <p>
1641     * <b>Definition:</b>
1642     * Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below)
1643     * </p> 
1644         */
1645        public Position setAltitude( long theValue) {
1646                myAltitude = new DecimalDt(theValue); 
1647                return this; 
1648        }
1649
1650        /**
1651         * Sets the value for <b>altitude</b> ()
1652         *
1653     * <p>
1654     * <b>Definition:</b>
1655     * Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below)
1656     * </p> 
1657         */
1658        public Position setAltitude( double theValue) {
1659                myAltitude = new DecimalDt(theValue); 
1660                return this; 
1661        }
1662
1663        /**
1664         * Sets the value for <b>altitude</b> ()
1665         *
1666     * <p>
1667     * <b>Definition:</b>
1668     * Altitude. The value domain and the interpretation are the same as for the text of the altitude element in KML (see notes below)
1669     * </p> 
1670         */
1671        public Position setAltitude( java.math.BigDecimal theValue) {
1672                myAltitude = new DecimalDt(theValue); 
1673                return this; 
1674        }
1675
1676 
1677
1678
1679        }
1680
1681
1682
1683
1684    @Override
1685    public String getResourceName() {
1686        return "Location";
1687    }
1688    
1689    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
1690        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
1691    }
1692
1693
1694}