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>Appointment</b> Resource
320 * ()
321 *
322 * <p>
323 * <b>Definition:</b>
324 * 
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/Appointment">http://hl7.org/fhir/profiles/Appointment</a> 
335 * </p>
336 *
337 */
338@ResourceDef(name="Appointment", profile="http://hl7.org/fhir/profiles/Appointment", id="appointment")
339public class Appointment extends ca.uhn.fhir.model.dstu2.resource.BaseResource
340    implements  IResource     {
341
342        /**
343         * Search parameter constant for <b>date</b>
344         * <p>
345         * Description: <b>Appointment date/time.</b><br>
346         * Type: <b>date</b><br>
347         * Path: <b>Appointment.start</b><br>
348         * </p>
349         */
350        @SearchParamDefinition(name="date", path="Appointment.start", description="Appointment date/time.", type="date"  )
351        public static final String SP_DATE = "date";
352
353        /**
354         * <b>Fluent Client</b> search parameter constant for <b>date</b>
355         * <p>
356         * Description: <b>Appointment date/time.</b><br>
357         * Type: <b>date</b><br>
358         * Path: <b>Appointment.start</b><br>
359         * </p>
360         */
361        public static final DateClientParam DATE = new DateClientParam(SP_DATE);
362
363        /**
364         * Search parameter constant for <b>status</b>
365         * <p>
366         * Description: <b>The overall status of the appointment</b><br>
367         * Type: <b>token</b><br>
368         * Path: <b>Appointment.status</b><br>
369         * </p>
370         */
371        @SearchParamDefinition(name="status", path="Appointment.status", description="The overall status of the appointment", type="token"  )
372        public static final String SP_STATUS = "status";
373
374        /**
375         * <b>Fluent Client</b> search parameter constant for <b>status</b>
376         * <p>
377         * Description: <b>The overall status of the appointment</b><br>
378         * Type: <b>token</b><br>
379         * Path: <b>Appointment.status</b><br>
380         * </p>
381         */
382        public static final TokenClientParam STATUS = new TokenClientParam(SP_STATUS);
383
384        /**
385         * Search parameter constant for <b>actor</b>
386         * <p>
387         * Description: <b>Any one of the individuals participating in the appointment</b><br>
388         * Type: <b>reference</b><br>
389         * Path: <b>Appointment.participant.actor</b><br>
390         * </p>
391         */
392        @SearchParamDefinition(name="actor", path="Appointment.participant.actor", description="Any one of the individuals participating in the appointment", type="reference"  )
393        public static final String SP_ACTOR = "actor";
394
395        /**
396         * <b>Fluent Client</b> search parameter constant for <b>actor</b>
397         * <p>
398         * Description: <b>Any one of the individuals participating in the appointment</b><br>
399         * Type: <b>reference</b><br>
400         * Path: <b>Appointment.participant.actor</b><br>
401         * </p>
402         */
403        public static final ReferenceClientParam ACTOR = new ReferenceClientParam(SP_ACTOR);
404
405        /**
406         * Search parameter constant for <b>part-status</b>
407         * <p>
408         * Description: <b>The Participation status of the subject, or other participant on the appointment. Can be used to locate participants that have not responded to meeting requests.</b><br>
409         * Type: <b>token</b><br>
410         * Path: <b>Appointment.participant.status</b><br>
411         * </p>
412         */
413        @SearchParamDefinition(name="part-status", path="Appointment.participant.status", description="The Participation status of the subject, or other participant on the appointment. Can be used to locate participants that have not responded to meeting requests.", type="token"  )
414        public static final String SP_PART_STATUS = "part-status";
415
416        /**
417         * <b>Fluent Client</b> search parameter constant for <b>part-status</b>
418         * <p>
419         * Description: <b>The Participation status of the subject, or other participant on the appointment. Can be used to locate participants that have not responded to meeting requests.</b><br>
420         * Type: <b>token</b><br>
421         * Path: <b>Appointment.participant.status</b><br>
422         * </p>
423         */
424        public static final TokenClientParam PART_STATUS = new TokenClientParam(SP_PART_STATUS);
425
426        /**
427         * Search parameter constant for <b>patient</b>
428         * <p>
429         * Description: <b>One of the individuals of the appointment is this patient</b><br>
430         * Type: <b>reference</b><br>
431         * Path: <b>Appointment.participant.actor</b><br>
432         * </p>
433         */
434        @SearchParamDefinition(name="patient", path="Appointment.participant.actor", description="One of the individuals of the appointment is this patient", type="reference"  )
435        public static final String SP_PATIENT = "patient";
436
437        /**
438         * <b>Fluent Client</b> search parameter constant for <b>patient</b>
439         * <p>
440         * Description: <b>One of the individuals of the appointment is this patient</b><br>
441         * Type: <b>reference</b><br>
442         * Path: <b>Appointment.participant.actor</b><br>
443         * </p>
444         */
445        public static final ReferenceClientParam PATIENT = new ReferenceClientParam(SP_PATIENT);
446
447        /**
448         * Search parameter constant for <b>practitioner</b>
449         * <p>
450         * Description: <b>One of the individuals of the appointment is this practitioner</b><br>
451         * Type: <b>reference</b><br>
452         * Path: <b>Appointment.participant.actor</b><br>
453         * </p>
454         */
455        @SearchParamDefinition(name="practitioner", path="Appointment.participant.actor", description="One of the individuals of the appointment is this practitioner", type="reference"  )
456        public static final String SP_PRACTITIONER = "practitioner";
457
458        /**
459         * <b>Fluent Client</b> search parameter constant for <b>practitioner</b>
460         * <p>
461         * Description: <b>One of the individuals of the appointment is this practitioner</b><br>
462         * Type: <b>reference</b><br>
463         * Path: <b>Appointment.participant.actor</b><br>
464         * </p>
465         */
466        public static final ReferenceClientParam PRACTITIONER = new ReferenceClientParam(SP_PRACTITIONER);
467
468        /**
469         * Search parameter constant for <b>location</b>
470         * <p>
471         * Description: <b>This location is listed in the participants of the appointment</b><br>
472         * Type: <b>reference</b><br>
473         * Path: <b>Appointment.participant.actor</b><br>
474         * </p>
475         */
476        @SearchParamDefinition(name="location", path="Appointment.participant.actor", description="This location is listed in the participants of the appointment", type="reference"  )
477        public static final String SP_LOCATION = "location";
478
479        /**
480         * <b>Fluent Client</b> search parameter constant for <b>location</b>
481         * <p>
482         * Description: <b>This location is listed in the participants of the appointment</b><br>
483         * Type: <b>reference</b><br>
484         * Path: <b>Appointment.participant.actor</b><br>
485         * </p>
486         */
487        public static final ReferenceClientParam LOCATION = new ReferenceClientParam(SP_LOCATION);
488
489        /**
490         * Search parameter constant for <b>identifier</b>
491         * <p>
492         * Description: <b>An Identifier of the Appointment</b><br>
493         * Type: <b>token</b><br>
494         * Path: <b>Appointment.identifier</b><br>
495         * </p>
496         */
497        @SearchParamDefinition(name="identifier", path="Appointment.identifier", description="An Identifier of the Appointment", type="token"  )
498        public static final String SP_IDENTIFIER = "identifier";
499
500        /**
501         * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
502         * <p>
503         * Description: <b>An Identifier of the Appointment</b><br>
504         * Type: <b>token</b><br>
505         * Path: <b>Appointment.identifier</b><br>
506         * </p>
507         */
508        public static final TokenClientParam IDENTIFIER = new TokenClientParam(SP_IDENTIFIER);
509
510
511        /**
512         * Constant for fluent queries to be used to add include statements. Specifies
513         * the path value of "<b>Appointment:actor</b>".
514         */
515        public static final Include INCLUDE_ACTOR = new Include("Appointment:actor");
516
517        /**
518         * Constant for fluent queries to be used to add include statements. Specifies
519         * the path value of "<b>Appointment:location</b>".
520         */
521        public static final Include INCLUDE_LOCATION = new Include("Appointment:location");
522
523        /**
524         * Constant for fluent queries to be used to add include statements. Specifies
525         * the path value of "<b>Appointment:patient</b>".
526         */
527        public static final Include INCLUDE_PATIENT = new Include("Appointment:patient");
528
529        /**
530         * Constant for fluent queries to be used to add include statements. Specifies
531         * the path value of "<b>Appointment:practitioner</b>".
532         */
533        public static final Include INCLUDE_PRACTITIONER = new Include("Appointment:practitioner");
534
535
536        @Child(name="identifier", type=IdentifierDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)       
537        @Description(
538                shortDefinition="",
539                formalDefinition="This records identifiers associated with this appointment concern that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)"
540        )
541        private java.util.List<IdentifierDt> myIdentifier;
542        
543        @Child(name="status", type=CodeDt.class, order=1, min=1, max=1, summary=true, modifier=true)    
544        @Description(
545                shortDefinition="",
546                formalDefinition="The overall status of the Appointment. Each of the participants has their own participation status which indicates their involvement in the process, however this status indicates the shared status"
547        )
548        private BoundCodeDt<AppointmentStatusEnum> myStatus;
549        
550        @Child(name="type", type=CodeableConceptDt.class, order=2, min=0, max=1, summary=true, modifier=false)  
551        @Description(
552                shortDefinition="",
553                formalDefinition="The type of appointment that is being booked (This may also be associated with participants for location, and/or a HealthcareService)"
554        )
555        private CodeableConceptDt myType;
556        
557        @Child(name="reason", type=CodeableConceptDt.class, order=3, min=0, max=1, summary=true, modifier=false)        
558        @Description(
559                shortDefinition="",
560                formalDefinition="The reason that this appointment is being scheduled. This is more clinical than administrative"
561        )
562        private CodeableConceptDt myReason;
563        
564        @Child(name="priority", type=UnsignedIntDt.class, order=4, min=0, max=1, summary=false, modifier=false) 
565        @Description(
566                shortDefinition="",
567                formalDefinition="The priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority)"
568        )
569        private UnsignedIntDt myPriority;
570        
571        @Child(name="description", type=StringDt.class, order=5, min=0, max=1, summary=false, modifier=false)   
572        @Description(
573                shortDefinition="",
574                formalDefinition="The brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment field"
575        )
576        private StringDt myDescription;
577        
578        @Child(name="start", type=InstantDt.class, order=6, min=0, max=1, summary=true, modifier=false) 
579        @Description(
580                shortDefinition="",
581                formalDefinition="Date/Time that the appointment is to take place"
582        )
583        private InstantDt myStart;
584        
585        @Child(name="end", type=InstantDt.class, order=7, min=0, max=1, summary=true, modifier=false)   
586        @Description(
587                shortDefinition="",
588                formalDefinition="Date/Time that the appointment is to conclude"
589        )
590        private InstantDt myEnd;
591        
592        @Child(name="minutesDuration", type=PositiveIntDt.class, order=8, min=0, max=1, summary=false, modifier=false)  
593        @Description(
594                shortDefinition="",
595                formalDefinition="Number of minutes that the appointment is to take. This can be less than the duration between the start and end times (where actual time of appointment is only an estimate or is a planned appointment request)"
596        )
597        private PositiveIntDt myMinutesDuration;
598        
599        @Child(name="slot", order=9, min=0, max=Child.MAX_UNLIMITED, summary=false, modifier=false, type={
600                ca.uhn.fhir.model.dstu2.resource.Slot.class     })
601        @Description(
602                shortDefinition="",
603                formalDefinition="The slot that this appointment is filling. If provided then the schedule will not be provided as slots are not recursive, and the start/end values MUST be the same as from the slot"
604        )
605        private java.util.List<ResourceReferenceDt> mySlot;
606        
607        @Child(name="comment", type=StringDt.class, order=10, min=0, max=1, summary=false, modifier=false)      
608        @Description(
609                shortDefinition="",
610                formalDefinition="Additional comments about the appointment"
611        )
612        private StringDt myComment;
613        
614        @Child(name="participant", order=11, min=1, max=Child.MAX_UNLIMITED, summary=false, modifier=false)     
615        @Description(
616                shortDefinition="",
617                formalDefinition="List of participants involved in the appointment"
618        )
619        private java.util.List<Participant> myParticipant;
620        
621
622        @Override
623        public boolean isEmpty() {
624                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myIdentifier,  myStatus,  myType,  myReason,  myPriority,  myDescription,  myStart,  myEnd,  myMinutesDuration,  mySlot,  myComment,  myParticipant);
625        }
626        
627        @Override
628        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
629                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myIdentifier, myStatus, myType, myReason, myPriority, myDescription, myStart, myEnd, myMinutesDuration, mySlot, myComment, myParticipant);
630        }
631
632        /**
633         * Gets the value(s) for <b>identifier</b> ().
634         * creating it if it does
635         * not exist. Will not return <code>null</code>.
636         *
637     * <p>
638     * <b>Definition:</b>
639     * This records identifiers associated with this appointment concern that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)
640     * </p> 
641         */
642        public java.util.List<IdentifierDt> getIdentifier() {  
643                if (myIdentifier == null) {
644                        myIdentifier = new java.util.ArrayList<IdentifierDt>();
645                }
646                return myIdentifier;
647        }
648
649        /**
650         * Sets the value(s) for <b>identifier</b> ()
651         *
652     * <p>
653     * <b>Definition:</b>
654     * This records identifiers associated with this appointment concern that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)
655     * </p> 
656         */
657        public Appointment setIdentifier(java.util.List<IdentifierDt> theValue) {
658                myIdentifier = theValue;
659                return this;
660        }
661        
662        
663
664        /**
665         * Adds and returns a new value for <b>identifier</b> ()
666         *
667     * <p>
668     * <b>Definition:</b>
669     * This records identifiers associated with this appointment concern that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)
670     * </p> 
671         */
672        public IdentifierDt addIdentifier() {
673                IdentifierDt newType = new IdentifierDt();
674                getIdentifier().add(newType);
675                return newType; 
676        }
677
678        /**
679         * Adds a given new value for <b>identifier</b> ()
680         *
681         * <p>
682         * <b>Definition:</b>
683         * This records identifiers associated with this appointment concern that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)
684         * </p>
685         * @param theValue The identifier to add (must not be <code>null</code>)
686         */
687        public Appointment addIdentifier(IdentifierDt theValue) {
688                if (theValue == null) {
689                        throw new NullPointerException("theValue must not be null");
690                }
691                getIdentifier().add(theValue);
692                return this;
693        }
694
695        /**
696         * Gets the first repetition for <b>identifier</b> (),
697         * creating it if it does not already exist.
698         *
699     * <p>
700     * <b>Definition:</b>
701     * This records identifiers associated with this appointment concern that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)
702     * </p> 
703         */
704        public IdentifierDt getIdentifierFirstRep() {
705                if (getIdentifier().isEmpty()) {
706                        return addIdentifier();
707                }
708                return getIdentifier().get(0); 
709        }
710  
711        /**
712         * Gets the value(s) for <b>status</b> ().
713         * creating it if it does
714         * not exist. Will not return <code>null</code>.
715         *
716     * <p>
717     * <b>Definition:</b>
718     * The overall status of the Appointment. Each of the participants has their own participation status which indicates their involvement in the process, however this status indicates the shared status
719     * </p> 
720         */
721        public BoundCodeDt<AppointmentStatusEnum> getStatusElement() {  
722                if (myStatus == null) {
723                        myStatus = new BoundCodeDt<AppointmentStatusEnum>(AppointmentStatusEnum.VALUESET_BINDER);
724                }
725                return myStatus;
726        }
727
728        
729        /**
730         * Gets the value(s) for <b>status</b> ().
731         * creating it if it does
732         * not exist. Will not return <code>null</code>.
733         *
734     * <p>
735     * <b>Definition:</b>
736     * The overall status of the Appointment. Each of the participants has their own participation status which indicates their involvement in the process, however this status indicates the shared status
737     * </p> 
738         */
739        public String getStatus() {  
740                return getStatusElement().getValue();
741        }
742
743        /**
744         * Sets the value(s) for <b>status</b> ()
745         *
746     * <p>
747     * <b>Definition:</b>
748     * The overall status of the Appointment. Each of the participants has their own participation status which indicates their involvement in the process, however this status indicates the shared status
749     * </p> 
750         */
751        public Appointment setStatus(BoundCodeDt<AppointmentStatusEnum> theValue) {
752                myStatus = theValue;
753                return this;
754        }
755        
756        
757
758        /**
759         * Sets the value(s) for <b>status</b> ()
760         *
761     * <p>
762     * <b>Definition:</b>
763     * The overall status of the Appointment. Each of the participants has their own participation status which indicates their involvement in the process, however this status indicates the shared status
764     * </p> 
765         */
766        public Appointment setStatus(AppointmentStatusEnum theValue) {
767                setStatus(new BoundCodeDt<AppointmentStatusEnum>(AppointmentStatusEnum.VALUESET_BINDER, theValue));
768                
769/*
770                getStatusElement().setValueAsEnum(theValue);
771*/
772                return this;
773        }
774
775  
776        /**
777         * Gets the value(s) for <b>type</b> ().
778         * creating it if it does
779         * not exist. Will not return <code>null</code>.
780         *
781     * <p>
782     * <b>Definition:</b>
783     * The type of appointment that is being booked (This may also be associated with participants for location, and/or a HealthcareService)
784     * </p> 
785         */
786        public CodeableConceptDt getType() {  
787                if (myType == null) {
788                        myType = new CodeableConceptDt();
789                }
790                return myType;
791        }
792
793        /**
794         * Sets the value(s) for <b>type</b> ()
795         *
796     * <p>
797     * <b>Definition:</b>
798     * The type of appointment that is being booked (This may also be associated with participants for location, and/or a HealthcareService)
799     * </p> 
800         */
801        public Appointment setType(CodeableConceptDt theValue) {
802                myType = theValue;
803                return this;
804        }
805        
806        
807
808  
809        /**
810         * Gets the value(s) for <b>reason</b> ().
811         * creating it if it does
812         * not exist. Will not return <code>null</code>.
813         *
814     * <p>
815     * <b>Definition:</b>
816     * The reason that this appointment is being scheduled. This is more clinical than administrative
817     * </p> 
818         */
819        public CodeableConceptDt getReason() {  
820                if (myReason == null) {
821                        myReason = new CodeableConceptDt();
822                }
823                return myReason;
824        }
825
826        /**
827         * Sets the value(s) for <b>reason</b> ()
828         *
829     * <p>
830     * <b>Definition:</b>
831     * The reason that this appointment is being scheduled. This is more clinical than administrative
832     * </p> 
833         */
834        public Appointment setReason(CodeableConceptDt theValue) {
835                myReason = theValue;
836                return this;
837        }
838        
839        
840
841  
842        /**
843         * Gets the value(s) for <b>priority</b> ().
844         * creating it if it does
845         * not exist. Will not return <code>null</code>.
846         *
847     * <p>
848     * <b>Definition:</b>
849     * The priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority)
850     * </p> 
851         */
852        public UnsignedIntDt getPriorityElement() {  
853                if (myPriority == null) {
854                        myPriority = new UnsignedIntDt();
855                }
856                return myPriority;
857        }
858
859        
860        /**
861         * Gets the value(s) for <b>priority</b> ().
862         * creating it if it does
863         * not exist. Will not return <code>null</code>.
864         *
865     * <p>
866     * <b>Definition:</b>
867     * The priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority)
868     * </p> 
869         */
870        public Integer getPriority() {  
871                return getPriorityElement().getValue();
872        }
873
874        /**
875         * Sets the value(s) for <b>priority</b> ()
876         *
877     * <p>
878     * <b>Definition:</b>
879     * The priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority)
880     * </p> 
881         */
882        public Appointment setPriority(UnsignedIntDt theValue) {
883                myPriority = theValue;
884                return this;
885        }
886        
887        
888
889        /**
890         * Sets the value for <b>priority</b> ()
891         *
892     * <p>
893     * <b>Definition:</b>
894     * The priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority)
895     * </p> 
896         */
897        public Appointment setPriority( int theInteger) {
898                myPriority = new UnsignedIntDt(theInteger); 
899                return this; 
900        }
901
902 
903        /**
904         * Gets the value(s) for <b>description</b> ().
905         * creating it if it does
906         * not exist. Will not return <code>null</code>.
907         *
908     * <p>
909     * <b>Definition:</b>
910     * The brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment field
911     * </p> 
912         */
913        public StringDt getDescriptionElement() {  
914                if (myDescription == null) {
915                        myDescription = new StringDt();
916                }
917                return myDescription;
918        }
919
920        
921        /**
922         * Gets the value(s) for <b>description</b> ().
923         * creating it if it does
924         * not exist. Will not return <code>null</code>.
925         *
926     * <p>
927     * <b>Definition:</b>
928     * The brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment field
929     * </p> 
930         */
931        public String getDescription() {  
932                return getDescriptionElement().getValue();
933        }
934
935        /**
936         * Sets the value(s) for <b>description</b> ()
937         *
938     * <p>
939     * <b>Definition:</b>
940     * The brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment field
941     * </p> 
942         */
943        public Appointment setDescription(StringDt theValue) {
944                myDescription = theValue;
945                return this;
946        }
947        
948        
949
950        /**
951         * Sets the value for <b>description</b> ()
952         *
953     * <p>
954     * <b>Definition:</b>
955     * The brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment field
956     * </p> 
957         */
958        public Appointment setDescription( String theString) {
959                myDescription = new StringDt(theString); 
960                return this; 
961        }
962
963 
964        /**
965         * Gets the value(s) for <b>start</b> ().
966         * creating it if it does
967         * not exist. Will not return <code>null</code>.
968         *
969     * <p>
970     * <b>Definition:</b>
971     * Date/Time that the appointment is to take place
972     * </p> 
973         */
974        public InstantDt getStartElement() {  
975                if (myStart == null) {
976                        myStart = new InstantDt();
977                }
978                return myStart;
979        }
980
981        
982        /**
983         * Gets the value(s) for <b>start</b> ().
984         * creating it if it does
985         * not exist. Will not return <code>null</code>.
986         *
987     * <p>
988     * <b>Definition:</b>
989     * Date/Time that the appointment is to take place
990     * </p> 
991         */
992        public Date getStart() {  
993                return getStartElement().getValue();
994        }
995
996        /**
997         * Sets the value(s) for <b>start</b> ()
998         *
999     * <p>
1000     * <b>Definition:</b>
1001     * Date/Time that the appointment is to take place
1002     * </p> 
1003         */
1004        public Appointment setStart(InstantDt theValue) {
1005                myStart = theValue;
1006                return this;
1007        }
1008        
1009        
1010
1011        /**
1012         * Sets the value for <b>start</b> ()
1013         *
1014     * <p>
1015     * <b>Definition:</b>
1016     * Date/Time that the appointment is to take place
1017     * </p> 
1018         */
1019        public Appointment setStartWithMillisPrecision( Date theDate) {
1020                myStart = new InstantDt(theDate); 
1021                return this; 
1022        }
1023
1024        /**
1025         * Sets the value for <b>start</b> ()
1026         *
1027     * <p>
1028     * <b>Definition:</b>
1029     * Date/Time that the appointment is to take place
1030     * </p> 
1031         */
1032        public Appointment setStart( Date theDate,  TemporalPrecisionEnum thePrecision) {
1033                myStart = new InstantDt(theDate, thePrecision); 
1034                return this; 
1035        }
1036
1037 
1038        /**
1039         * Gets the value(s) for <b>end</b> ().
1040         * creating it if it does
1041         * not exist. Will not return <code>null</code>.
1042         *
1043     * <p>
1044     * <b>Definition:</b>
1045     * Date/Time that the appointment is to conclude
1046     * </p> 
1047         */
1048        public InstantDt getEndElement() {  
1049                if (myEnd == null) {
1050                        myEnd = new InstantDt();
1051                }
1052                return myEnd;
1053        }
1054
1055        
1056        /**
1057         * Gets the value(s) for <b>end</b> ().
1058         * creating it if it does
1059         * not exist. Will not return <code>null</code>.
1060         *
1061     * <p>
1062     * <b>Definition:</b>
1063     * Date/Time that the appointment is to conclude
1064     * </p> 
1065         */
1066        public Date getEnd() {  
1067                return getEndElement().getValue();
1068        }
1069
1070        /**
1071         * Sets the value(s) for <b>end</b> ()
1072         *
1073     * <p>
1074     * <b>Definition:</b>
1075     * Date/Time that the appointment is to conclude
1076     * </p> 
1077         */
1078        public Appointment setEnd(InstantDt theValue) {
1079                myEnd = theValue;
1080                return this;
1081        }
1082        
1083        
1084
1085        /**
1086         * Sets the value for <b>end</b> ()
1087         *
1088     * <p>
1089     * <b>Definition:</b>
1090     * Date/Time that the appointment is to conclude
1091     * </p> 
1092         */
1093        public Appointment setEndWithMillisPrecision( Date theDate) {
1094                myEnd = new InstantDt(theDate); 
1095                return this; 
1096        }
1097
1098        /**
1099         * Sets the value for <b>end</b> ()
1100         *
1101     * <p>
1102     * <b>Definition:</b>
1103     * Date/Time that the appointment is to conclude
1104     * </p> 
1105         */
1106        public Appointment setEnd( Date theDate,  TemporalPrecisionEnum thePrecision) {
1107                myEnd = new InstantDt(theDate, thePrecision); 
1108                return this; 
1109        }
1110
1111 
1112        /**
1113         * Gets the value(s) for <b>minutesDuration</b> ().
1114         * creating it if it does
1115         * not exist. Will not return <code>null</code>.
1116         *
1117     * <p>
1118     * <b>Definition:</b>
1119     * Number of minutes that the appointment is to take. This can be less than the duration between the start and end times (where actual time of appointment is only an estimate or is a planned appointment request)
1120     * </p> 
1121         */
1122        public PositiveIntDt getMinutesDurationElement() {  
1123                if (myMinutesDuration == null) {
1124                        myMinutesDuration = new PositiveIntDt();
1125                }
1126                return myMinutesDuration;
1127        }
1128
1129        
1130        /**
1131         * Gets the value(s) for <b>minutesDuration</b> ().
1132         * creating it if it does
1133         * not exist. Will not return <code>null</code>.
1134         *
1135     * <p>
1136     * <b>Definition:</b>
1137     * Number of minutes that the appointment is to take. This can be less than the duration between the start and end times (where actual time of appointment is only an estimate or is a planned appointment request)
1138     * </p> 
1139         */
1140        public Integer getMinutesDuration() {  
1141                return getMinutesDurationElement().getValue();
1142        }
1143
1144        /**
1145         * Sets the value(s) for <b>minutesDuration</b> ()
1146         *
1147     * <p>
1148     * <b>Definition:</b>
1149     * Number of minutes that the appointment is to take. This can be less than the duration between the start and end times (where actual time of appointment is only an estimate or is a planned appointment request)
1150     * </p> 
1151         */
1152        public Appointment setMinutesDuration(PositiveIntDt theValue) {
1153                myMinutesDuration = theValue;
1154                return this;
1155        }
1156        
1157        
1158
1159        /**
1160         * Sets the value for <b>minutesDuration</b> ()
1161         *
1162     * <p>
1163     * <b>Definition:</b>
1164     * Number of minutes that the appointment is to take. This can be less than the duration between the start and end times (where actual time of appointment is only an estimate or is a planned appointment request)
1165     * </p> 
1166         */
1167        public Appointment setMinutesDuration( int theInteger) {
1168                myMinutesDuration = new PositiveIntDt(theInteger); 
1169                return this; 
1170        }
1171
1172 
1173        /**
1174         * Gets the value(s) for <b>slot</b> ().
1175         * creating it if it does
1176         * not exist. Will not return <code>null</code>.
1177         *
1178     * <p>
1179     * <b>Definition:</b>
1180     * The slot that this appointment is filling. If provided then the schedule will not be provided as slots are not recursive, and the start/end values MUST be the same as from the slot
1181     * </p> 
1182         */
1183        public java.util.List<ResourceReferenceDt> getSlot() {  
1184                if (mySlot == null) {
1185                        mySlot = new java.util.ArrayList<ResourceReferenceDt>();
1186                }
1187                return mySlot;
1188        }
1189
1190        /**
1191         * Sets the value(s) for <b>slot</b> ()
1192         *
1193     * <p>
1194     * <b>Definition:</b>
1195     * The slot that this appointment is filling. If provided then the schedule will not be provided as slots are not recursive, and the start/end values MUST be the same as from the slot
1196     * </p> 
1197         */
1198        public Appointment setSlot(java.util.List<ResourceReferenceDt> theValue) {
1199                mySlot = theValue;
1200                return this;
1201        }
1202        
1203        
1204
1205        /**
1206         * Adds and returns a new value for <b>slot</b> ()
1207         *
1208     * <p>
1209     * <b>Definition:</b>
1210     * The slot that this appointment is filling. If provided then the schedule will not be provided as slots are not recursive, and the start/end values MUST be the same as from the slot
1211     * </p> 
1212         */
1213        public ResourceReferenceDt addSlot() {
1214                ResourceReferenceDt newType = new ResourceReferenceDt();
1215                getSlot().add(newType);
1216                return newType; 
1217        }
1218  
1219        /**
1220         * Gets the value(s) for <b>comment</b> ().
1221         * creating it if it does
1222         * not exist. Will not return <code>null</code>.
1223         *
1224     * <p>
1225     * <b>Definition:</b>
1226     * Additional comments about the appointment
1227     * </p> 
1228         */
1229        public StringDt getCommentElement() {  
1230                if (myComment == null) {
1231                        myComment = new StringDt();
1232                }
1233                return myComment;
1234        }
1235
1236        
1237        /**
1238         * Gets the value(s) for <b>comment</b> ().
1239         * creating it if it does
1240         * not exist. Will not return <code>null</code>.
1241         *
1242     * <p>
1243     * <b>Definition:</b>
1244     * Additional comments about the appointment
1245     * </p> 
1246         */
1247        public String getComment() {  
1248                return getCommentElement().getValue();
1249        }
1250
1251        /**
1252         * Sets the value(s) for <b>comment</b> ()
1253         *
1254     * <p>
1255     * <b>Definition:</b>
1256     * Additional comments about the appointment
1257     * </p> 
1258         */
1259        public Appointment setComment(StringDt theValue) {
1260                myComment = theValue;
1261                return this;
1262        }
1263        
1264        
1265
1266        /**
1267         * Sets the value for <b>comment</b> ()
1268         *
1269     * <p>
1270     * <b>Definition:</b>
1271     * Additional comments about the appointment
1272     * </p> 
1273         */
1274        public Appointment setComment( String theString) {
1275                myComment = new StringDt(theString); 
1276                return this; 
1277        }
1278
1279 
1280        /**
1281         * Gets the value(s) for <b>participant</b> ().
1282         * creating it if it does
1283         * not exist. Will not return <code>null</code>.
1284         *
1285     * <p>
1286     * <b>Definition:</b>
1287     * List of participants involved in the appointment
1288     * </p> 
1289         */
1290        public java.util.List<Participant> getParticipant() {  
1291                if (myParticipant == null) {
1292                        myParticipant = new java.util.ArrayList<Participant>();
1293                }
1294                return myParticipant;
1295        }
1296
1297        /**
1298         * Sets the value(s) for <b>participant</b> ()
1299         *
1300     * <p>
1301     * <b>Definition:</b>
1302     * List of participants involved in the appointment
1303     * </p> 
1304         */
1305        public Appointment setParticipant(java.util.List<Participant> theValue) {
1306                myParticipant = theValue;
1307                return this;
1308        }
1309        
1310        
1311
1312        /**
1313         * Adds and returns a new value for <b>participant</b> ()
1314         *
1315     * <p>
1316     * <b>Definition:</b>
1317     * List of participants involved in the appointment
1318     * </p> 
1319         */
1320        public Participant addParticipant() {
1321                Participant newType = new Participant();
1322                getParticipant().add(newType);
1323                return newType; 
1324        }
1325
1326        /**
1327         * Adds a given new value for <b>participant</b> ()
1328         *
1329         * <p>
1330         * <b>Definition:</b>
1331         * List of participants involved in the appointment
1332         * </p>
1333         * @param theValue The participant to add (must not be <code>null</code>)
1334         */
1335        public Appointment addParticipant(Participant theValue) {
1336                if (theValue == null) {
1337                        throw new NullPointerException("theValue must not be null");
1338                }
1339                getParticipant().add(theValue);
1340                return this;
1341        }
1342
1343        /**
1344         * Gets the first repetition for <b>participant</b> (),
1345         * creating it if it does not already exist.
1346         *
1347     * <p>
1348     * <b>Definition:</b>
1349     * List of participants involved in the appointment
1350     * </p> 
1351         */
1352        public Participant getParticipantFirstRep() {
1353                if (getParticipant().isEmpty()) {
1354                        return addParticipant();
1355                }
1356                return getParticipant().get(0); 
1357        }
1358  
1359        /**
1360         * Block class for child element: <b>Appointment.participant</b> ()
1361         *
1362     * <p>
1363     * <b>Definition:</b>
1364     * List of participants involved in the appointment
1365     * </p> 
1366         */
1367        @Block()        
1368        public static class Participant 
1369            extends  BaseIdentifiableElement        implements IResourceBlock {
1370        
1371        @Child(name="type", type=CodeableConceptDt.class, order=0, min=0, max=Child.MAX_UNLIMITED, summary=true, modifier=false)        
1372        @Description(
1373                shortDefinition="",
1374                formalDefinition="Role of participant in the appointment"
1375        )
1376        private java.util.List<BoundCodeableConceptDt<ParticipantTypeEnum>> myType;
1377        
1378        @Child(name="actor", order=1, min=0, max=1, summary=true, modifier=false, type={
1379                ca.uhn.fhir.model.dstu2.resource.Patient.class,                 ca.uhn.fhir.model.dstu2.resource.Practitioner.class,            ca.uhn.fhir.model.dstu2.resource.RelatedPerson.class,           ca.uhn.fhir.model.dstu2.resource.Device.class,          ca.uhn.fhir.model.dstu2.resource.HealthcareService.class,               ca.uhn.fhir.model.dstu2.resource.Location.class })
1380        @Description(
1381                shortDefinition="",
1382                formalDefinition="A Person, Location/HealthcareService or Device that is participating in the appointment"
1383        )
1384        private ResourceReferenceDt myActor;
1385        
1386        @Child(name="required", type=CodeDt.class, order=2, min=0, max=1, summary=true, modifier=false) 
1387        @Description(
1388                shortDefinition="",
1389                formalDefinition="Is this participant required to be present at the meeting. This covers a use-case where 2 doctors need to meet to discuss the results for a specific patient, and the patient is not required to be present."
1390        )
1391        private BoundCodeDt<ParticipantRequiredEnum> myRequired;
1392        
1393        @Child(name="status", type=CodeDt.class, order=3, min=1, max=1, summary=false, modifier=false)  
1394        @Description(
1395                shortDefinition="",
1396                formalDefinition="Participation status of the Patient"
1397        )
1398        private BoundCodeDt<ParticipationStatusEnum> myStatus;
1399        
1400
1401        @Override
1402        public boolean isEmpty() {
1403                return super.isBaseEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(  myType,  myActor,  myRequired,  myStatus);
1404        }
1405        
1406        @Override
1407        public <T extends IElement> List<T> getAllPopulatedChildElementsOfType(Class<T> theType) {
1408                return ca.uhn.fhir.util.ElementUtil.allPopulatedChildElements(theType, myType, myActor, myRequired, myStatus);
1409        }
1410
1411        /**
1412         * Gets the value(s) for <b>type</b> ().
1413         * creating it if it does
1414         * not exist. Will not return <code>null</code>.
1415         *
1416     * <p>
1417     * <b>Definition:</b>
1418     * Role of participant in the appointment
1419     * </p> 
1420         */
1421        public java.util.List<BoundCodeableConceptDt<ParticipantTypeEnum>> getType() {  
1422                if (myType == null) {
1423                        myType = new java.util.ArrayList<BoundCodeableConceptDt<ParticipantTypeEnum>>();
1424                }
1425                return myType;
1426        }
1427
1428        /**
1429         * Sets the value(s) for <b>type</b> ()
1430         *
1431     * <p>
1432     * <b>Definition:</b>
1433     * Role of participant in the appointment
1434     * </p> 
1435         */
1436        public Participant setType(java.util.List<BoundCodeableConceptDt<ParticipantTypeEnum>> theValue) {
1437                myType = theValue;
1438                return this;
1439        }
1440        
1441        
1442
1443        /**
1444         * Add a value for <b>type</b> () using an enumerated type. This
1445         * is intended as a convenience method for situations where the FHIR defined ValueSets are mandatory
1446         * or contain the desirable codes. If you wish to use codes other than those which are built-in, 
1447         * you may also use the {@link #addType()} method.
1448         *
1449     * <p>
1450     * <b>Definition:</b>
1451     * Role of participant in the appointment
1452     * </p> 
1453         */
1454        public BoundCodeableConceptDt<ParticipantTypeEnum> addType(ParticipantTypeEnum theValue) {
1455                BoundCodeableConceptDt<ParticipantTypeEnum> retVal = new BoundCodeableConceptDt<ParticipantTypeEnum>(ParticipantTypeEnum.VALUESET_BINDER, theValue);
1456                getType().add(retVal);
1457                return retVal;
1458        }
1459
1460        /**
1461         * Gets the first repetition for <b>type</b> (),
1462         * creating it if it does not already exist.
1463         *
1464     * <p>
1465     * <b>Definition:</b>
1466     * Role of participant in the appointment
1467     * </p> 
1468         */
1469        public BoundCodeableConceptDt<ParticipantTypeEnum> getTypeFirstRep() {
1470                if (getType().size() == 0) {
1471                        addType();
1472                }
1473                return getType().get(0);
1474        }
1475
1476        /**
1477         * Add a value for <b>type</b> ()
1478         *
1479     * <p>
1480     * <b>Definition:</b>
1481     * Role of participant in the appointment
1482     * </p> 
1483         */
1484        public BoundCodeableConceptDt<ParticipantTypeEnum> addType() {
1485                BoundCodeableConceptDt<ParticipantTypeEnum> retVal = new BoundCodeableConceptDt<ParticipantTypeEnum>(ParticipantTypeEnum.VALUESET_BINDER);
1486                getType().add(retVal);
1487                return retVal;
1488        }
1489
1490        /**
1491         * Sets the value(s), and clears any existing value(s) for <b>type</b> ()
1492         *
1493     * <p>
1494     * <b>Definition:</b>
1495     * Role of participant in the appointment
1496     * </p> 
1497         */
1498        public Participant setType(ParticipantTypeEnum theValue) {
1499                getType().clear();
1500                addType(theValue);
1501                return this;
1502        }
1503
1504  
1505        /**
1506         * Gets the value(s) for <b>actor</b> ().
1507         * creating it if it does
1508         * not exist. Will not return <code>null</code>.
1509         *
1510     * <p>
1511     * <b>Definition:</b>
1512     * A Person, Location/HealthcareService or Device that is participating in the appointment
1513     * </p> 
1514         */
1515        public ResourceReferenceDt getActor() {  
1516                if (myActor == null) {
1517                        myActor = new ResourceReferenceDt();
1518                }
1519                return myActor;
1520        }
1521
1522        /**
1523         * Sets the value(s) for <b>actor</b> ()
1524         *
1525     * <p>
1526     * <b>Definition:</b>
1527     * A Person, Location/HealthcareService or Device that is participating in the appointment
1528     * </p> 
1529         */
1530        public Participant setActor(ResourceReferenceDt theValue) {
1531                myActor = theValue;
1532                return this;
1533        }
1534        
1535        
1536
1537  
1538        /**
1539         * Gets the value(s) for <b>required</b> ().
1540         * creating it if it does
1541         * not exist. Will not return <code>null</code>.
1542         *
1543     * <p>
1544     * <b>Definition:</b>
1545     * Is this participant required to be present at the meeting. This covers a use-case where 2 doctors need to meet to discuss the results for a specific patient, and the patient is not required to be present.
1546     * </p> 
1547         */
1548        public BoundCodeDt<ParticipantRequiredEnum> getRequiredElement() {  
1549                if (myRequired == null) {
1550                        myRequired = new BoundCodeDt<ParticipantRequiredEnum>(ParticipantRequiredEnum.VALUESET_BINDER);
1551                }
1552                return myRequired;
1553        }
1554
1555        
1556        /**
1557         * Gets the value(s) for <b>required</b> ().
1558         * creating it if it does
1559         * not exist. Will not return <code>null</code>.
1560         *
1561     * <p>
1562     * <b>Definition:</b>
1563     * Is this participant required to be present at the meeting. This covers a use-case where 2 doctors need to meet to discuss the results for a specific patient, and the patient is not required to be present.
1564     * </p> 
1565         */
1566        public String getRequired() {  
1567                return getRequiredElement().getValue();
1568        }
1569
1570        /**
1571         * Sets the value(s) for <b>required</b> ()
1572         *
1573     * <p>
1574     * <b>Definition:</b>
1575     * Is this participant required to be present at the meeting. This covers a use-case where 2 doctors need to meet to discuss the results for a specific patient, and the patient is not required to be present.
1576     * </p> 
1577         */
1578        public Participant setRequired(BoundCodeDt<ParticipantRequiredEnum> theValue) {
1579                myRequired = theValue;
1580                return this;
1581        }
1582        
1583        
1584
1585        /**
1586         * Sets the value(s) for <b>required</b> ()
1587         *
1588     * <p>
1589     * <b>Definition:</b>
1590     * Is this participant required to be present at the meeting. This covers a use-case where 2 doctors need to meet to discuss the results for a specific patient, and the patient is not required to be present.
1591     * </p> 
1592         */
1593        public Participant setRequired(ParticipantRequiredEnum theValue) {
1594                setRequired(new BoundCodeDt<ParticipantRequiredEnum>(ParticipantRequiredEnum.VALUESET_BINDER, theValue));
1595                
1596/*
1597                getRequiredElement().setValueAsEnum(theValue);
1598*/
1599                return this;
1600        }
1601
1602  
1603        /**
1604         * Gets the value(s) for <b>status</b> ().
1605         * creating it if it does
1606         * not exist. Will not return <code>null</code>.
1607         *
1608     * <p>
1609     * <b>Definition:</b>
1610     * Participation status of the Patient
1611     * </p> 
1612         */
1613        public BoundCodeDt<ParticipationStatusEnum> getStatusElement() {  
1614                if (myStatus == null) {
1615                        myStatus = new BoundCodeDt<ParticipationStatusEnum>(ParticipationStatusEnum.VALUESET_BINDER);
1616                }
1617                return myStatus;
1618        }
1619
1620        
1621        /**
1622         * Gets the value(s) for <b>status</b> ().
1623         * creating it if it does
1624         * not exist. Will not return <code>null</code>.
1625         *
1626     * <p>
1627     * <b>Definition:</b>
1628     * Participation status of the Patient
1629     * </p> 
1630         */
1631        public String getStatus() {  
1632                return getStatusElement().getValue();
1633        }
1634
1635        /**
1636         * Sets the value(s) for <b>status</b> ()
1637         *
1638     * <p>
1639     * <b>Definition:</b>
1640     * Participation status of the Patient
1641     * </p> 
1642         */
1643        public Participant setStatus(BoundCodeDt<ParticipationStatusEnum> theValue) {
1644                myStatus = theValue;
1645                return this;
1646        }
1647        
1648        
1649
1650        /**
1651         * Sets the value(s) for <b>status</b> ()
1652         *
1653     * <p>
1654     * <b>Definition:</b>
1655     * Participation status of the Patient
1656     * </p> 
1657         */
1658        public Participant setStatus(ParticipationStatusEnum theValue) {
1659                setStatus(new BoundCodeDt<ParticipationStatusEnum>(ParticipationStatusEnum.VALUESET_BINDER, theValue));
1660                
1661/*
1662                getStatusElement().setValueAsEnum(theValue);
1663*/
1664                return this;
1665        }
1666
1667  
1668
1669
1670        }
1671
1672
1673
1674
1675    @Override
1676    public String getResourceName() {
1677        return "Appointment";
1678    }
1679    
1680    public ca.uhn.fhir.context.FhirVersionEnum getStructureFhirVersionEnum() {
1681        return ca.uhn.fhir.context.FhirVersionEnum.DSTU2;
1682    }
1683
1684
1685}