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